• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Unittest to verify ordering of rust stdlib in rust_library() CcInfo"""
2
3load("@bazel_skylib//lib:unittest.bzl", "analysistest")
4load("//rust:defs.bzl", "rust_test")
5load("//test/unit:common.bzl", "assert_action_mnemonic", "assert_argv_contains", "assert_argv_contains_not", "assert_list_contains_adjacent_elements", "assert_list_contains_adjacent_elements_not")
6
7def _use_libtest_harness_rustc_flags_test_impl(ctx):
8    env = analysistest.begin(ctx)
9    tut = analysistest.target_under_test(env)
10    action = tut.actions[0]
11    assert_action_mnemonic(env, action, "Rustc")
12    assert_argv_contains(env, action, "test/unit/use_libtest_harness/mytest.rs")
13    assert_argv_contains(env, action, "--test")
14    assert_list_contains_adjacent_elements_not(env, action.argv, ["--cfg", "test"])
15    return analysistest.end(env)
16
17def _use_libtest_harness_rustc_noharness_flags_test_impl(ctx):
18    env = analysistest.begin(ctx)
19    tut = analysistest.target_under_test(env)
20    action = tut.actions[0]
21    assert_action_mnemonic(env, action, "Rustc")
22    assert_argv_contains(env, action, "test/unit/use_libtest_harness/mytest_noharness.rs")
23    assert_argv_contains_not(env, action, "--test")
24    assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
25    return analysistest.end(env)
26
27def _use_libtest_harness_rustc_noharness_main_flags_test_impl(ctx):
28    env = analysistest.begin(ctx)
29    tut = analysistest.target_under_test(env)
30    action = tut.actions[0]
31    assert_action_mnemonic(env, action, "Rustc")
32    assert_argv_contains(env, action, "test/unit/use_libtest_harness/main.rs")
33    assert_argv_contains_not(env, action, "--test")
34    assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
35    return analysistest.end(env)
36
37use_libtest_harness_rustc_flags_test = analysistest.make(_use_libtest_harness_rustc_flags_test_impl)
38use_libtest_harness_rustc_noharness_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_flags_test_impl)
39use_libtest_harness_rustc_noharness_main_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_main_flags_test_impl)
40
41def _use_libtest_harness_test():
42    rust_test(
43        name = "mytest",
44        srcs = ["mytest.rs"],
45        edition = "2018",
46    )
47
48    rust_test(
49        name = "mytest_noharness",
50        srcs = ["mytest_noharness.rs"],
51        edition = "2018",
52        use_libtest_harness = False,
53    )
54
55    rust_test(
56        name = "mytest_noharness_main",
57        srcs = [
58            "main.rs",
59            "mytest.rs",
60        ],
61        edition = "2018",
62        use_libtest_harness = False,
63    )
64
65    use_libtest_harness_rustc_flags_test(
66        name = "use_libtest_harness_rustc_flags_test",
67        target_under_test = ":mytest",
68    )
69
70    use_libtest_harness_rustc_noharness_flags_test(
71        name = "use_libtest_harness_rustc_noharness_flags_test",
72        target_under_test = ":mytest_noharness",
73    )
74
75    use_libtest_harness_rustc_noharness_main_flags_test(
76        name = "use_libtest_harness_rustc_noharness_main_flags_test",
77        target_under_test = ":mytest_noharness_main",
78    )
79
80def use_libtest_harness_test_suite(name):
81    """Entry-point macro called from the BUILD file.
82
83    Args:
84        name: Name of the macro.
85    """
86    _use_libtest_harness_test()
87
88    native.test_suite(
89        name = name,
90        tests = [
91            ":use_libtest_harness_rustc_flags_test",
92        ],
93    )
94