about summary refs log tree commit diff
path: root/third_party/bazel/rules_haskell/tests/repl-flags/BUILD.bazel
blob: 8fd099dc4d1241e16749b6a30067b1f649489a61 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
load("@io_tweag_rules_haskell//haskell:haskell.bzl", "haskell_test")

package(default_testonly = 1)

# This test the `compiler` flags in many ways:
# - the test needs to be built with `-DTESTS_TOOLCHAIN_COMPILER_FLAGS`, provided by the toolchain attribute `compiler_flags`
# - the test needs `-XOverloadedStrings`, provided by this rule `compiler_flags`
# - toolchain and rule `compiler_flags` are additive, else one of the previous test will fail
# - the ordering is as such as rule flags are more important that toolchain flags

# This rule must build correctly (using `bazel build`), but also as a repl (using `bazel run //tests/repl-flags:compiler_flags@repl`)
haskell_test(
    name = "compiler_flags",
    srcs = ["CompilerFlags.hs"],

    # This also ensure that local `compiler_flags` does not override the `global ones`
    compiler_flags = ["-XOverloadedStrings"],
    visibility = ["//visibility:public"],
    deps = [
        "//tests/hackage:base",
        "//tests/hackage:bytestring",
    ],
)

# This test the `repl_ghci_args` flags in a similar way
# - the test needs to be built with `-DTESTS_TOOLCHAIN_REPL_FLAGS`, provided by the toolchain attribute `compiler_flags`
# - the test needs `-XOverloadedStrings`, provided by toolchain `repl_ghci_args`
# - toolchain and rule `compiler_flags` are additive, else one of the previous test will fail
# - the ordering is as such as rule flags are more important that
#    toolchain flags and that repl flags are more important that
#    copmiler flags

# This rule must build correctly (using `bazel build`), but also as a repl (using `bazel run //tests/repl-flags:compiler_flags@repl`). The final result between the repl and the binary must be different
haskell_test(
    name = "repl_flags",
    srcs = ["ReplFlags.hs"],

    # This also ensure that local `repl_flags` does not override the `global ones`
    repl_ghci_args = ["-DTESTS_TOOLCHAIN_REPL_FLAGS"],
    visibility = ["//visibility:public"],
    deps = [
        "//tests/hackage:base",
        "//tests/hackage:bytestring",
    ],
)