diff options
Diffstat (limited to 'tests/unit/CMakeLists.txt')
-rw-r--r-- | tests/unit/CMakeLists.txt | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 01592f3..d24aa70 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -12,64 +12,46 @@ set_source_files_properties (gschemas.compiled GENERATED) # and help the tests to find that file by setting -DSCHEMA_DIR set (XDG_DATA_DIRS "${CMAKE_CURRENT_BINARY_DIR}/gsettings-schemas") set (SCHEMA_DIR "${XDG_DATA_DIRS}/glib-2.0/schemas") -if (EXISTS /usr/share/glib-2.0/schemas/com.ubuntu.touch.system.gschema.xml) - set (DISPLAY_SCHEMA /usr/share/glib-2.0/schemas/com.ubuntu.touch.system.gschema.xml) -else() - set (DISPLAY_SCHEMA ${CMAKE_SOURCE_DIR}/data/org.ayatana.display.gschema.xml) -endif() +set (DISPLAY_SCHEMA ${CMAKE_BINARY_DIR}/data/org.ayatana.indicator.display.gschema.xml) add_definitions(-DSCHEMA_DIR="${SCHEMA_DIR}") execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE COMPILE_SCHEMA_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE) +# Because gschemas.compiled will be referenced multiple times independently, a level of +# redirection is needed to prevent CMake from generating the rule for the file multiple +# times, causing a race condition. +# https://discourse.cmake.org/t/race-condition-when-multi-add-custom-target-deps-on-same-file-generated-by-add-custom-command/2358 +# https://bugs.debian.org/892091 (bug for ayatana-indicators-power, but applies here as well) add_custom_command (OUTPUT gschemas.compiled + DEPENDS ${CMAKE_BINARY_DIR}/data/org.ayatana.indicator.display.gschema.xml COMMAND mkdir -p ${SCHEMA_DIR} COMMAND cp -f ${DISPLAY_SCHEMA} ${SCHEMA_DIR} COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR}) +add_custom_target(gschemas-compiled DEPENDS gschemas.compiled) set(SERVICE_LINK_LIBRARIES ${SERVICE_LIB} ${SERVICE_DEPS_LIBRARIES} ) -set(QT_LINK_LIBRARIES - test-utils - Qt5::Core - Qt5::Test - Qt5::DBus -) set(TEST_LINK_LIBRARIES ${TEST_DEPS_LIBRARIES} ${GTEST_LIBRARIES} ${GMOCK_LIBRARIES} ) -add_definitions( - -DGREETER_TEMPLATE="${CMAKE_SOURCE_DIR}/tests/utils/mock-greeter.py" -) - function(add_test_by_name name) set(TEST_NAME ${name}) set(COVERAGE_TEST_TARGETS ${COVERAGE_TEST_TARGETS} ${TEST_NAME} PARENT_SCOPE) - add_executable (${TEST_NAME} ${TEST_NAME}.cpp gschemas.compiled) + add_executable (${TEST_NAME} ${TEST_NAME}.cpp) target_link_options(${TEST_NAME} PRIVATE -no-pie) add_test(${TEST_NAME} ${TEST_NAME}) + add_dependencies(${TEST_NAME} gschemas-compiled) set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT ${CTEST_ENVIRONMENT}) + set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT "TEST_NAME=${TEST_NAME}") target_link_libraries(${TEST_NAME} ${SERVICE_LINK_LIBRARIES} ${TEST_LINK_LIBRARIES} ${THREAD_LINK_LIBRARIES}) endfunction() -add_test_by_name(adbd-client-test) add_test_by_name(rotation-lock-test) -function(add_qt_test_by_name name) - set(TEST_NAME ${name}) - set(COVERAGE_TEST_TARGETS ${COVERAGE_TEST_TARGETS} ${TEST_NAME} PARENT_SCOPE) - add_executable (${TEST_NAME} ${TEST_NAME}.cpp) - target_link_options(${TEST_NAME} PRIVATE -no-pie) - add_test(${TEST_NAME} ${TEST_NAME}) - set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT ${CTEST_ENVIRONMENT}) - target_link_libraries(${TEST_NAME} ${SERVICE_LINK_LIBRARIES} ${QT_LINK_LIBRARIES} ${TEST_LINK_LIBRARIES} ${THREAD_LINK_LIBRARIES}) -endfunction() -add_qt_test_by_name(greeter-test) -add_qt_test_by_name(usb-snap-test) - set(COVERAGE_TEST_TARGETS ${COVERAGE_TEST_TARGETS} PARENT_SCOPE |