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