summaryrefslogtreecommitdiff
path: root/cmake/QtTestHelpers.cmake
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2023-01-03 14:42:33 +0100
committerMikolaj Boc <mikolaj.boc@qt.io>2023-01-23 15:23:10 +0100
commit11891ae9c9fcf7cb911648675eca83f3189ccbed (patch)
treebacdebb4d98ac5289527beb98ce57349a5c1a4f3 /cmake/QtTestHelpers.cmake
parent69e478480a782a663b8dd176ca4d917a09c91341 (diff)
downloadqtbase-11891ae9c9fcf7cb911648675eca83f3189ccbed.tar.gz
Skip tests outside of qtbase on batching+superbuild
The batcher does not currently work properly with non-qtbase submodules. Disable them temporarily so that at least the tests in qtbase are batched. Do this from qtbase so that changes to each and every submodule are not necessary. Also, maintain a list of tests that were thus skipped. On any qt cmake internal function call that refers to such a target, identify the target as skipped and make the call a no-op. Fixes: QTBUG-109785 Change-Id: Ib0aa5d39eee8315ffd4ac62f6d1f44fe9bbf7a2f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtTestHelpers.cmake')
-rw-r--r--cmake/QtTestHelpers.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake
index 945311b4a7..463229abd5 100644
--- a/cmake/QtTestHelpers.cmake
+++ b/cmake/QtTestHelpers.cmake
@@ -398,6 +398,34 @@ function(qt_internal_is_in_test_batch out name)
endif()
endfunction()
+function(qt_internal_is_skipped_test out name)
+ get_target_property(is_skipped_test ${name} _qt_is_skipped_test)
+ set(${out} ${is_skipped_test} PARENT_SCOPE)
+endfunction()
+
+function(qt_internal_set_skipped_test name)
+ set_target_properties(${name} PROPERTIES _qt_is_skipped_test TRUE)
+endfunction()
+
+function(qt_internal_is_qtbase_test out)
+ get_filename_component(dir "${CMAKE_CURRENT_BINARY_DIR}" ABSOLUTE)
+ set(${out} FALSE PARENT_SCOPE)
+
+ while(TRUE)
+ get_filename_component(filename "${dir}" NAME)
+ if("${filename}" STREQUAL "qtbase")
+ set(${out} TRUE PARENT_SCOPE)
+ break()
+ endif()
+
+ set(prev_dir "${dir}")
+ get_filename_component(dir "${dir}" DIRECTORY)
+ if("${dir}" STREQUAL "${prev_dir}")
+ break()
+ endif()
+ endwhile()
+endfunction()
+
function(qt_internal_get_batched_test_arguments out testname)
if(WASM)
# Add a query string to the runner document, so that the script therein
@@ -434,6 +462,18 @@ function(qt_internal_add_test name)
)
_qt_internal_validate_all_args_are_parsed(arg)
+ if(QT_BUILD_TESTS_BATCHED AND QT_SUPERBUILD AND NOT arg_NO_BATCH AND NOT arg_QMLTEST)
+ qt_internal_is_qtbase_test(is_qtbase_test)
+ if(NOT is_qtbase_test)
+ file(GENERATE OUTPUT "dummy${name}.cpp" CONTENT "int main() { return 0; }")
+ # Add a dummy target to tackle some potential problems
+ qt_internal_add_executable(${name} SOURCES "dummy${name}.cpp")
+ # Batched tests outside of qtbase are unsupported and skipped
+ qt_internal_set_skipped_test(${name})
+ return()
+ endif()
+ endif()
+
if (NOT arg_OUTPUT_DIRECTORY)
set(arg_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()