From f723b8b878a3c4a4687b9e337a875500bebb39b1 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 4 Jul 2019 11:18:12 +0100 Subject: feat(third_party/bazel): Check in rules_haskell from Tweag --- .../tests/haskell_doctest/BUILD.bazel | 73 ++++++++++++++++++++++ .../rules_haskell/tests/haskell_doctest/Bar.hs | 13 ++++ .../rules_haskell/tests/haskell_doctest/Baz.hs | 14 +++++ .../rules_haskell/tests/haskell_doctest/Foo.hs | 14 +++++ .../rules_haskell/tests/haskell_doctest/Main.hs | 6 ++ .../rules_haskell/tests/haskell_doctest/Quux.hsc | 11 ++++ 6 files changed, 131 insertions(+) create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/BUILD.bazel create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/Bar.hs create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/Baz.hs create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/Foo.hs create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/Main.hs create mode 100644 third_party/bazel/rules_haskell/tests/haskell_doctest/Quux.hsc (limited to 'third_party/bazel/rules_haskell/tests/haskell_doctest') diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/BUILD.bazel b/third_party/bazel/rules_haskell/tests/haskell_doctest/BUILD.bazel new file mode 100644 index 000000000000..c1d4e527aefc --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/BUILD.bazel @@ -0,0 +1,73 @@ +load( + "@io_tweag_rules_haskell//haskell:haskell.bzl", + "haskell_doctest", + "haskell_library", + "haskell_test", +) + +package(default_testonly = 1) + +haskell_library( + name = "lib-a", + srcs = ["Foo.hs"], + tags = ["requires_zlib"], + deps = [ + "//tests/data:ourclibrary", + "//tests/hackage:base", + "@zlib.dev//:zlib", + ], +) + +haskell_library( + name = "lib-b", + srcs = [ + "Bar.hs", + "Baz.hs", + "Quux.hsc", + ], + tags = ["requires_zlib"], + deps = [ + ":lib-a", + "//tests/hackage:base", + ], +) + +haskell_doctest( + name = "doctest-lib-all-fail", + tags = ["manual"], # must FAIL + visibility = ["//visibility:public"], + deps = [":lib-b"], +) + +haskell_doctest( + name = "doctest-lib-all-success", + doctest_flags = ["-DMAGIC_DOCTEST_THING"], + tags = ["requires_doctest"], + visibility = ["//visibility:public"], + deps = [":lib-b"], +) + +haskell_doctest( + name = "doctest-lib", + modules = ["Bar"], # exclude Baz and succeed + tags = ["requires_doctest"], + visibility = ["//visibility:public"], + deps = [":lib-b"], +) + +haskell_test( + name = "bin", + srcs = ["Main.hs"], + tags = ["requires_zlib"], + deps = [ + ":lib-a", + "//tests/hackage:base", + ], +) + +haskell_doctest( + name = "doctest-bin", + tags = ["requires_doctest"], + visibility = ["//visibility:public"], + deps = [":bin"], +) diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/Bar.hs b/third_party/bazel/rules_haskell/tests/haskell_doctest/Bar.hs new file mode 100644 index 000000000000..cd82351855c3 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/Bar.hs @@ -0,0 +1,13 @@ +module Bar (bar) where + +import Foo (foo) +import Numeric + +-- | +-- >>> bar +-- 9 +-- >>> showInt bar "" ++ "!" +-- "9!" + +bar :: Int +bar = 4 + foo diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/Baz.hs b/third_party/bazel/rules_haskell/tests/haskell_doctest/Baz.hs new file mode 100644 index 000000000000..d576235bf488 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/Baz.hs @@ -0,0 +1,14 @@ +{-# LANGUAGE CPP #-} + +module Baz (baz) where + +-- | +-- >>> baz +-- 101 + +baz :: Int +#ifndef MAGIC_DOCTEST_THING +baz = 100 +#else +baz = 101 +#endif diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/Foo.hs b/third_party/bazel/rules_haskell/tests/haskell_doctest/Foo.hs new file mode 100644 index 000000000000..d2c97b77aeb3 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/Foo.hs @@ -0,0 +1,14 @@ +{-# LANGUAGE ForeignFunctionInterface #-} + +module Foo (foo) where + +import Foreign.C.Types (CInt(..)) + +foreign import ccall "c_add_one" + c_add_one :: CInt -> CInt + +-- | +-- >>> foo +-- 5 +foo :: Int +foo = fromIntegral (c_add_one 4) diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/Main.hs b/third_party/bazel/rules_haskell/tests/haskell_doctest/Main.hs new file mode 100644 index 000000000000..1bc6f8abc905 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/Main.hs @@ -0,0 +1,6 @@ +module Main (main) where + +import Foo (foo) + +main :: IO () +main = print foo diff --git a/third_party/bazel/rules_haskell/tests/haskell_doctest/Quux.hsc b/third_party/bazel/rules_haskell/tests/haskell_doctest/Quux.hsc new file mode 100644 index 000000000000..3d437274c9aa --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/haskell_doctest/Quux.hsc @@ -0,0 +1,11 @@ +-- | This module is in a .hsc file, this way we test that improt directories +-- are passed correctly to the doctest executable. + +module Quux (quux) where + +-- | +-- >>> quux +-- 68 + +quux :: Int +quux = 68 -- cgit 1.4.1