diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 99b943f659..15a1e2c0c3 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1747,50 +1747,6 @@ if(BUILD_TESTING) add_installmode_test(SYMLINK_OR_COPY) endif() - - # do each of the tutorial steps - function(add_tutorial_test step_name use_mymath tutorial_arg pass_regex) - set(tutorial_test_name Tutorial${step_name}) - set(tutorial_build_dir "${CMake_BINARY_DIR}/Tests/Tutorial/${step_name}") - if(use_mymath) - set(tutorial_build_options "") - else() - set(tutorial_test_name ${tutorial_test_name}_MYMATH) - set(tutorial_build_dir "${tutorial_build_dir}_MYMATH") - set(tutorial_build_options -DUSE_MYMATH:BOOL=OFF) - endif() - add_test(${tutorial_test_name} ${CMAKE_CTEST_COMMAND} - -C "Release" - --build-and-test - "${CMake_SOURCE_DIR}/Help/guide/tutorial/${step_name}" - ${tutorial_build_dir}_Build - ${build_generator_args} - --build-project Tutorial - --build-options ${tutorial_build_options} - --test-command Tutorial ${tutorial_arg}) - set_tests_properties(${tutorial_test_name} PROPERTIES - PASS_REGULAR_EXPRESSION ${pass_regex}) - - list(APPEND TEST_BUILD_DIRS "${tutorial_build_dir}_Build") - endfunction() - - if(NOT CMake_TEST_EXTERNAL_CMAKE) - foreach(STP RANGE 2 12) - if(STP EQUAL 8) - set(pass_regex ".*using log and exp") - else() - set(pass_regex "The square root of 25 is 5") - endif() - add_tutorial_test(Step${STP} TRUE 25 ${pass_regex}) - endforeach() - set(pass_regex "The square root of 25 is 5") - add_tutorial_test(Complete TRUE 25 ${pass_regex}) - foreach(STP RANGE 3 12) - add_tutorial_test(Step${STP} FALSE 25 ${pass_regex}) - endforeach() - add_tutorial_test(Complete FALSE 25 ${pass_regex}) - endif() - function(add_importexport_test export_name import_name) set(install_dir "${CMake_BINARY_DIR}/Tests/ImportExport/Install${export_name}") diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index aa4e311b3d..3fd01594da 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -582,6 +582,11 @@ add_RunCMake_test(TargetArtifacts -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) add_RunCMake_test(TargetObjects) add_RunCMake_test(TargetProperties) add_RunCMake_test(ToolchainFile) +if(NOT CMake_TEST_EXTERNAL_CMAKE) + set(Tutorial_ARGS TEST_DIR Tutorial -DTutorial_SOURCE_DIR=${CMake_SOURCE_DIR}/Help/guide/tutorial) + add_RunCMake_test(Tutorial-NoMath ${Tutorial_ARGS} -DTutorial_USE_MYMATH=OFF) + add_RunCMake_test(Tutorial-MyMath ${Tutorial_ARGS} -DTutorial_USE_MYMATH=ON) +endif() add_RunCMake_test(find_dependency) add_RunCMake_test(CompileDefinitions) add_RunCMake_test(CompileWarningAsError diff --git a/Tests/RunCMake/Tutorial/RunCMakeTest.cmake b/Tests/RunCMake/Tutorial/RunCMakeTest.cmake new file mode 100644 index 0000000000..5516e72fa3 --- /dev/null +++ b/Tests/RunCMake/Tutorial/RunCMakeTest.cmake @@ -0,0 +1,39 @@ +include(RunCMake) + +function(run_tutorial_step name) + set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}-build) + if(Tutorial_USE_MYMATH) + set(math MyMath) + else() + set(math NoMath) + endif() + set(config Release) + if(RunCMake_GENERATOR_IS_MULTI_CONFIG) + set(exe ${RunCMake_TEST_BINARY_DIR}/${config}/Tutorial) + else() + set(exe ${RunCMake_TEST_BINARY_DIR}/Tutorial) + list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=${config}) + endif() + list(APPEND RunCMake_TEST_OPTIONS -DUSE_MYMATH:BOOL=${Tutorial_USE_MYMATH}) + run_cmake(${name}-configure) + unset(RunCMake_TEST_OPTIONS) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_OUTPUT_MERGE 1) + run_cmake_command(${name}-build ${CMAKE_COMMAND} --build . --config ${config}) + unset(RunCMake_TEST_OUTPUT_MERGE) + if(EXISTS ${RunCMake_SOURCE_DIR}/${name}-${math}-run-stdout.txt) + set(RunCMake-stdout-file ${name}-${math}-run-stdout.txt) + else() + set(RunCMake-stdout-file Step-${math}-run-stdout.txt) + endif() + run_cmake_command(${name}-run ${exe} 25) +endfunction() + +if(NOT Tutorial_USE_MYMATH) + run_tutorial_step(Step2) +endif() +foreach(step RANGE 3 12) + run_tutorial_step(Step${step}) +endforeach() +run_tutorial_step(Complete) diff --git a/Tests/RunCMake/Tutorial/Step-MyMath-run-stdout.txt b/Tests/RunCMake/Tutorial/Step-MyMath-run-stdout.txt new file mode 100644 index 0000000000..5e3442aeb7 --- /dev/null +++ b/Tests/RunCMake/Tutorial/Step-MyMath-run-stdout.txt @@ -0,0 +1,2 @@ +^(Computing sqrt of 25 to be [0-9.]+ +)+The square root of 25 is 5$ diff --git a/Tests/RunCMake/Tutorial/Step-NoMath-run-stdout.txt b/Tests/RunCMake/Tutorial/Step-NoMath-run-stdout.txt new file mode 100644 index 0000000000..75bb544ba0 --- /dev/null +++ b/Tests/RunCMake/Tutorial/Step-NoMath-run-stdout.txt @@ -0,0 +1 @@ +^The square root of 25 is 5$ diff --git a/Tests/RunCMake/Tutorial/Step8-MyMath-run-stdout.txt b/Tests/RunCMake/Tutorial/Step8-MyMath-run-stdout.txt new file mode 100644 index 0000000000..19c4f47614 --- /dev/null +++ b/Tests/RunCMake/Tutorial/Step8-MyMath-run-stdout.txt @@ -0,0 +1,2 @@ +^Computing sqrt of 25 to be 5 using log and exp +The square root of 25 is 5$