diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/tests/version-macros')
7 files changed, 210 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/tests/version-macros/BUILD.bazel b/third_party/bazel/rules_haskell/tests/version-macros/BUILD.bazel new file mode 100644 index 000000000000..b2be1b7d1598 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/BUILD.bazel @@ -0,0 +1,59 @@ +load( + "@io_tweag_rules_haskell//haskell:haskell.bzl", + "haskell_library", + "haskell_test", +) +load( + "@io_tweag_rules_haskell//haskell:c2hs.bzl", + "c2hs_library", +) + +package(default_testonly = 1) + +haskell_library( + name = "versioned-lib", + srcs = ["VersionedLib.hs"], + version = "1.2.3.4", + deps = ["//tests/hackage:base"], +) + +haskell_test( + name = "version_macros", + size = "small", + srcs = [ + "HsLib.hs", + "HscLib.hsc", + "Main.hs", + ], + version = "3.4.5.6", + deps = [ + ":versioned-lib", + "//tests/hackage:base", + ], +) + +c2hs_library( + name = "c2hs-lib", + srcs = ["C2hsLib.chs"], + tags = ["requires_c2hs"], + version = "4.5.6.7", + deps = [ + ":versioned-lib", + "//tests/hackage:base", + ], +) + +haskell_test( + name = "version_macros_c2hs", + size = "small", + srcs = [ + "MainC2hs.hs", + ":c2hs-lib", + ], + tags = ["requires_c2hs"], + version = "4.5.6.7", + deps = [ + ":versioned-lib", + "//tests/hackage:base", + ], +) diff --git a/third_party/bazel/rules_haskell/tests/version-macros/C2hsLib.chs b/third_party/bazel/rules_haskell/tests/version-macros/C2hsLib.chs new file mode 100644 index 000000000000..4b484af2a3ed --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/C2hsLib.chs @@ -0,0 +1,44 @@ +module C2hsLib where + +import Control.Monad (unless) + +check_version_versioned_lib :: IO () +#ifndef VERSION_versioned_lib +check_version_versioned_lib = fail "c2hs: VERSION_versioned_lib missing" +#else +check_version_versioned_lib = + unless ({#const VERSION_versioned_lib#} == "1.2.3.4") $ + fail "c2hs: VERSION_versioned_lib invalid" +#endif + +check_min_version_versioned_lib :: IO () +#ifndef MIN_VERSION_versioned_lib +check_min_version_versioned_lib = fail "c2hs: MIN_VERSION_versioned_lib missing" +#elif !MIN_VERSION_versioned_lib(1,2,3) +check_min_version_versioned_lib = fail "c2hs: MIN_VERSION_versioned_lib invalid" +#else +check_min_version_versioned_lib = pure () +#endif + +check_version_base :: IO () +#ifndef VERSION_base +check_version_base = fail "c2hs: VERSION_base missing" +#else +check_version_base = pure () +#endif + +check_min_version_base :: IO () +#ifndef MIN_VERSION_base +check_min_version_base = fail "c2hs: MIN_VERSION_base missing" +#elif !MIN_VERSION_base(0,0,0) +check_min_version_base = fail "c2hs: MIN_VERSION_base invalid" +#else +check_min_version_base = pure () +#endif + +check :: IO () +check = do + check_version_versioned_lib + check_min_version_versioned_lib + check_version_base + check_min_version_base diff --git a/third_party/bazel/rules_haskell/tests/version-macros/HsLib.hs b/third_party/bazel/rules_haskell/tests/version-macros/HsLib.hs new file mode 100644 index 000000000000..ce61906c81e6 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/HsLib.hs @@ -0,0 +1,46 @@ +{-# LANGUAGE CPP #-} + +module HsLib where + +import Control.Monad (unless) + +check_version_versioned_lib :: IO () +#ifndef VERSION_versioned_lib +check_version_versioned_lib = fail "hs: VERSION_versioned_lib missing" +#else +check_version_versioned_lib = + unless (VERSION_versioned_lib == "1.2.3.4") $ + fail "hs: VERSION_versioned_lib invalid" +#endif + +check_min_version_versioned_lib :: IO () +#ifndef MIN_VERSION_versioned_lib +check_min_version_versioned_lib = fail "hs: MIN_VERSION_versioned_lib missing" +#elif !MIN_VERSION_versioned_lib(1,2,3) +check_min_version_versioned_lib = fail "hs: MIN_VERSION_versioned_lib invalid" +#else +check_min_version_versioned_lib = pure () +#endif + +check_version_base :: IO () +#ifndef VERSION_base +check_version_base = fail "hs: VERSION_base missing" +#else +check_version_base = pure () +#endif + +check_min_version_base :: IO () +#ifndef MIN_VERSION_base +check_min_version_base = fail "hs: MIN_VERSION_base missing" +#elif !MIN_VERSION_base(0,0,0) +check_min_version_base = fail "hs: MIN_VERSION_base invalid" +#else +check_min_version_base = pure () +#endif + +check :: IO () +check = do + check_version_versioned_lib + check_min_version_versioned_lib + check_version_base + check_min_version_base diff --git a/third_party/bazel/rules_haskell/tests/version-macros/HscLib.hsc b/third_party/bazel/rules_haskell/tests/version-macros/HscLib.hsc new file mode 100644 index 000000000000..387e73a08997 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/HscLib.hsc @@ -0,0 +1,44 @@ +module HscLib where + +import Control.Monad (unless) + +check_version_versioned_lib :: IO () +#ifndef VERSION_versioned_lib +check_version_versioned_lib = fail "hsc2hs: VERSION_versioned_lib missing" +#else +check_version_versioned_lib = + unless (#{const_str VERSION_versioned_lib} == "1.2.3.4") $ + fail "hsc2hs: VERSION_versioned_lib invalid" +#endif + +check_min_version_versioned_lib :: IO () +#ifndef MIN_VERSION_versioned_lib +check_min_version_versioned_lib = fail "hsc2hs: MIN_VERSION_versioned_lib missing" +#elif !MIN_VERSION_versioned_lib(1,2,3) +check_min_version_versioned_lib = fail "hsc2hs: MIN_VERSION_versioned_lib invalid" +#else +check_min_version_versioned_lib = pure () +#endif + +check_version_base :: IO () +#ifndef VERSION_base +check_version_base = fail "hsc2hs: VERSION_base missing" +#else +check_version_base = pure () +#endif + +check_min_version_base :: IO () +#ifndef MIN_VERSION_base +check_min_version_base = fail "hsc2hs: MIN_VERSION_base missing" +#elif !MIN_VERSION_base(0,0,0) +check_min_version_base = fail "hsc2hs: MIN_VERSION_base invalid" +#else +check_min_version_base = pure () +#endif + +check :: IO () +check = do + check_version_versioned_lib + check_min_version_versioned_lib + check_version_base + check_min_version_base diff --git a/third_party/bazel/rules_haskell/tests/version-macros/Main.hs b/third_party/bazel/rules_haskell/tests/version-macros/Main.hs new file mode 100644 index 000000000000..bbcd108d0b6b --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/Main.hs @@ -0,0 +1,9 @@ +module Main where + +import qualified HscLib +import qualified HsLib + +main :: IO () +main = do + HscLib.check + HsLib.check diff --git a/third_party/bazel/rules_haskell/tests/version-macros/MainC2hs.hs b/third_party/bazel/rules_haskell/tests/version-macros/MainC2hs.hs new file mode 100644 index 000000000000..82e4ec72e248 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/MainC2hs.hs @@ -0,0 +1,7 @@ +module Main where + +import qualified C2hsLib + +main :: IO () +main = do + C2hsLib.check diff --git a/third_party/bazel/rules_haskell/tests/version-macros/VersionedLib.hs b/third_party/bazel/rules_haskell/tests/version-macros/VersionedLib.hs new file mode 100644 index 000000000000..0dfd5577e7aa --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/version-macros/VersionedLib.hs @@ -0,0 +1 @@ +module VersionedLib where |