Skip to content

[C++] Many tests are not being run on Windows #47434

@WillAyd

Description

@WillAyd

Describe the bug, including details regarding any error messages, version, and platform.

With a clean build of Arrow:

$ cmake -S . -B build -G Ninja -DARROW_COMPUTE=ON -DARROW_BUILD_TESTS=ON
$ cmake --build build

The default ctest invocation seems to show everything as passing:

$ cd build
$ ctest

However, with verbose inspection, you will see that many tests are not actually running:

$ ctest --verbose
UpdateCTestConfiguration  from :C:/Users/Will/clones/arrow/cpp/build/DartConfiguration.tcl
UpdateCTestConfiguration  from :C:/Users/Will/clones/arrow/cpp/build/DartConfiguration.tcl
Test project C:/Users/Will/clones/arrow/cpp/build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
      Start  1: arrow-array-test

1: Test command: C:\Users\Will\clones\arrow\cpp\build\debug\arrow-array-test.exe
1: Working Directory: C:/Users/Will/clones/arrow/cpp/build/src/arrow
1: Test timeout computed to be: 10000000
1: Running main() from C:\Users\Will\clones\arrow\cpp\build\_deps\googletest-src\googletest\src\gtest_main.cc
1: [==========] Running 0 tests from 0 test suites.
1: [==========] 0 tests from 0 test suites ran. (0 ms total)
1: [  PASSED  ] 0 tests.
 1/49 Test  #1: arrow-array-test ......................   Passed    0.02 sec
test 2
      Start  2: arrow-buffer-test

2: Test command: C:\Users\Will\clones\arrow\cpp\build\debug\arrow-buffer-test.exe
2: Working Directory: C:/Users/Will/clones/arrow/cpp/build/src/arrow
2: Test timeout computed to be: 10000000
2: Running main() from C:\Users\Will\clones\arrow\cpp\build\_deps\googletest-src\googletest\src\gtest_main.cc
2: [==========] Running 0 tests from 0 test suites.
2: [==========] 0 tests from 0 test suites ran. (0 ms total)
2: [  PASSED  ] 0 tests.
 2/49 Test  #2: arrow-buffer-test .....................   Passed    0.01 sec
test 3
      Start  3: arrow-extension-type-test

3: Test command: C:\Users\Will\clones\arrow\cpp\build\debug\arrow-extension-type-test.exe
3: Working Directory: C:/Users/Will/clones/arrow/cpp/build/src/arrow
3: Test timeout computed to be: 10000000
3: Running main() from C:\Users\Will\clones\arrow\cpp\build\_deps\googletest-src\googletest\src\gtest_main.cc
3: [==========] Running 0 tests from 0 test suites.
3: [==========] 0 tests from 0 test suites ran. (0 ms total)
3: [  PASSED  ] 0 tests.
 3/49 Test  #3: arrow-extension-type-test .............   Passed    0.01 sec
test 4
      Start  4: arrow-misc-test

4: Test command: C:\Users\Will\clones\arrow\cpp\build\debug\arrow-misc-test.exe
4: Working Directory: C:/Users/Will/clones/arrow/cpp/build/src/arrow
4: Test timeout computed to be: 10000000
4: Running main() from C:\Users\Will\clones\arrow\cpp\build\_deps\googletest-src\googletest\src\gtest_main.cc
4: [==========] Running 0 tests from 0 test suites.
4: [==========] 0 tests from 0 test suites ran. (0 ms total)
4: [  PASSED  ] 0 tests.

...

From a quick glance, the only test executables actually running are arrow-compute-internals-test, arrow-json-integration-test, arrow-utility-test, and arrow-compute-scalar-cast-test. The common pattern for these is that they define their own main function. I also noticed that adding the following main function:

int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

To gtest_util_test.cc allows you to run the tests in the arrow-gtest-util-test executable

Component(s)

C++

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions