How to pass custom flags to `bazel test` command

15.4k Views Asked by At

I have used gflags in my test to define custom flags. How can I pass such a flag to my test while running the test via bazel test command?

For example: I can run a test multiple times using:

bazel test //xyz:my_test --runs_per_test 10 

In the same command I would like to pass a flag defined in my_test say --use_xxx, how do I do so?

2

There are 2 best solutions below

0
Jin On BEST ANSWER

Use the --test_arg flag.

bazel test //xyz:my_test --runs_per_test=10 --test_arg=--use_xxx --test_arg=--some_number=42

From the docs:

--test_arg arg: Passes command-line options/flags/arguments to each test process. This option can be used multiple times to pass several arguments, e.g. --test_arg=--logtostderr --test_arg=--v=3.

You can also specify arguments for the test as part of the BUILD definition:

cc_test(
    name = "my_test",
    srcs = [".."],
    deps = [".."],
    args = ["--use_xxx", "--some_number=42"],
)
0
Doubao Lee On

You can add a main into your test. It will look like this.

TEST(A, FUNC) {
  // Your test here.
}

int main(int argc, char** argv) {
  gflags::ParseCommandLineFlags(&argc, &argv, /*remove_flags=*/true);
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
} 

It works fine for me.