Сбой Gtest discovery_tests в действиях Github: процесс прекращен из-за тайм-аута

avatar
Rajdeep Roy Chowdhury
9 августа 2021 в 01:45
890
1
1

Я использую google-test(gtest) с CMake и запускаю модульные тесты как задания GitHub ci для Linux и Mac. Задания Linux проходят успешно. Однако я получаю сообщение об ошибке для Mac runner. Ошибка

CMake Error at /usr/local/Cellar/cmake/3.21.1/share/cmake/Modules/GoogleTestAddTests.cmake:77 (message):
  Error running test executable.

    Path: '/Users/runner/work/splitwebp/build/test/splitwebp_tests'
    Result: Process terminated due to timeout
    Output:
      

Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.21.1/share/cmake/Modules/GoogleTestAddTests.cmake:173 (gtest_discover_tests_impl)

Это CMakelists.txt для каталога тестов

# CMake config file for unit tests
# Requiring V 3.10 for gtest_discover_tests
cmake_minimum_required(VERSION 3.10)
find_package(OpenCV REQUIRED)
enable_testing()

# finds all .cpp files under this directory (./test) and add them to executable
file(GLOB_RECURSE tests "*.cpp")
file(GLOB_RECURSE source "../src/*.cpp")
add_executable(splitwebp_tests ${tests} ${source})

include_directories("../3rdparty/libwebp/include")

# Link gtest libraries
target_link_libraries(splitwebp_tests ${OpenCV_LIBS})
target_link_libraries(splitwebp_tests webp webpdemux pthread)
target_link_libraries(splitwebp_tests gtest_main)

set(CTEST_OUTPUT_ON_FAILURE 1)

# Find all tests in all .cpp files and convert to CTests
include(GoogleTest)

gtest_discover_tests(splitwebp_tests)

Как исправить конвейер непрерывной интеграции?

Источник
Alex Reinking
9 августа 2021 в 03:42
0

Не использовать подстановку для источников без CONFIGURE_DEPENDS. А еще лучше вообще не искать источники.

Alex Reinking
9 августа 2021 в 03:43
0

Используйте target_include_directories вместо include_directories.

Ответы (1)

avatar
Rajdeep Roy Chowdhury
9 августа 2021 в 01:50
3

Проблема в том, что gtest_discover_tests(...) занимает слишком много времени и поэтому истекает. Очевидное решение — увеличить лимит времени ожидания.

Линия

gtest_discover_tests(splitwebp_tests)

можно заменить на

gtest_discover_tests(splitwebp_tests PROPERTIES TIMEOUT 600)
Hermilton
21 октября 2021 в 19:23
0

Примечание. Начиная с CMAKE 3.10.3, это называется DISCOVERY_TIMEOUT (см.: cmake.org/cmake/help/git-stage/module/…). Его можно установить как gtest_discover_tests(splitwebp_tests DISCOVERY_TIMEOUT 30)