From a3033d1a063c0f9611c71738e9116f78d04daf97 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Feb 2024 16:54:52 -0500 Subject: Tests: Remove unnecessary RunCMake.cmake_language expected result files RunCMake defaults to expecting result `0` with empty stderr. --- Tests/RunCMake/cmake_language/exit_0_script-result.txt | 1 - Tests/RunCMake/cmake_language/exit_0_script-stderr.txt | 0 Tests/RunCMake/cmake_language/exit_0_script_with_command-result.txt | 1 - Tests/RunCMake/cmake_language/exit_0_script_with_command-stderr.txt | 0 Tests/RunCMake/cmake_language/exit_5_script-stderr.txt | 0 Tests/RunCMake/cmake_language/exit_5_script_with_command-stderr.txt | 0 Tests/RunCMake/cmake_language/exit_7_script_in_include-stderr.txt | 0 .../cmake_language/exit_8_script_in_recursive_cmake_language-stderr.txt | 1 - 8 files changed, 3 deletions(-) delete mode 100644 Tests/RunCMake/cmake_language/exit_0_script-result.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_0_script-stderr.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_0_script_with_command-result.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_0_script_with_command-stderr.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_5_script-stderr.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_5_script_with_command-stderr.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_7_script_in_include-stderr.txt delete mode 100644 Tests/RunCMake/cmake_language/exit_8_script_in_recursive_cmake_language-stderr.txt diff --git a/Tests/RunCMake/cmake_language/exit_0_script-result.txt b/Tests/RunCMake/cmake_language/exit_0_script-result.txt deleted file mode 100644 index 573541a..0000000 --- a/Tests/RunCMake/cmake_language/exit_0_script-result.txt +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/Tests/RunCMake/cmake_language/exit_0_script-stderr.txt b/Tests/RunCMake/cmake_language/exit_0_script-stderr.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/cmake_language/exit_0_script_with_command-result.txt b/Tests/RunCMake/cmake_language/exit_0_script_with_command-result.txt deleted file mode 100644 index 573541a..0000000 --- a/Tests/RunCMake/cmake_language/exit_0_script_with_command-result.txt +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/Tests/RunCMake/cmake_language/exit_0_script_with_command-stderr.txt b/Tests/RunCMake/cmake_language/exit_0_script_with_command-stderr.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/cmake_language/exit_5_script-stderr.txt b/Tests/RunCMake/cmake_language/exit_5_script-stderr.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/cmake_language/exit_5_script_with_command-stderr.txt b/Tests/RunCMake/cmake_language/exit_5_script_with_command-stderr.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/cmake_language/exit_7_script_in_include-stderr.txt b/Tests/RunCMake/cmake_language/exit_7_script_in_include-stderr.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/RunCMake/cmake_language/exit_8_script_in_recursive_cmake_language-stderr.txt b/Tests/RunCMake/cmake_language/exit_8_script_in_recursive_cmake_language-stderr.txt deleted file mode 100644 index 8b13789..0000000 --- a/Tests/RunCMake/cmake_language/exit_8_script_in_recursive_cmake_language-stderr.txt +++ /dev/null @@ -1 +0,0 @@ - -- cgit v0.12 From 86698eea854bb779dd45f067a05fdad6068561e7 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Feb 2024 16:45:43 -0500 Subject: cmake_language: Fix EXIT inside control flow blocks These were missed in commit 1bb1769235 (cmake_language: Add EXIT subcommand, 2024-01-05, v3.29.0-rc1~112^2). Fixes: #25674 --- Source/cmBlockCommand.cxx | 4 ++++ Source/cmForEachCommand.cxx | 5 +++++ Source/cmFunctionCommand.cxx | 4 ++++ Source/cmIfCommand.cxx | 4 ++++ Source/cmMacroCommand.cxx | 4 ++++ Source/cmWhileCommand.cxx | 4 ++++ Tests/RunCMake/cmake_language/RunCMakeTest.cmake | 7 +++++++ .../cmake_language/exit_9_script_block-result.txt | 1 + .../cmake_language/exit_9_script_block.cmake | 5 +++++ .../exit_9_script_control-result.txt | 1 + .../cmake_language/exit_9_script_control.cmake | 24 ++++++++++++++++++++++ .../exit_9_script_foreach-result.txt | 1 + .../cmake_language/exit_9_script_foreach.cmake | 5 +++++ .../exit_9_script_function-result.txt | 1 + .../cmake_language/exit_9_script_function.cmake | 6 ++++++ .../cmake_language/exit_9_script_if-result.txt | 1 + .../RunCMake/cmake_language/exit_9_script_if.cmake | 5 +++++ .../cmake_language/exit_9_script_macro-result.txt | 1 + .../cmake_language/exit_9_script_macro.cmake | 6 ++++++ .../cmake_language/exit_9_script_while-result.txt | 1 + .../cmake_language/exit_9_script_while.cmake | 5 +++++ 21 files changed, 95 insertions(+) create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_block-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_block.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_control-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_control.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_foreach-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_foreach.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_function-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_function.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_if-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_if.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_macro-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_macro.cmake create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_while-result.txt create mode 100644 Tests/RunCMake/cmake_language/exit_9_script_while.cmake diff --git a/Source/cmBlockCommand.cxx b/Source/cmBlockCommand.cxx index 42f1ad3..5bf7bed 100644 --- a/Source/cmBlockCommand.cxx +++ b/Source/cmBlockCommand.cxx @@ -127,6 +127,10 @@ bool cmBlockFunctionBlocker::Replay(std::vector functions, inStatus.SetContinueInvoked(); return true; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + return true; + } if (cmSystemTools::GetFatalErrorOccurred()) { return true; } diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 21a140d..33dae79 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -272,6 +272,11 @@ auto cmForEachFunctionBlocker::invoke( if (status.GetContinueInvoked()) { break; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + result.Break = true; + break; + } if (cmSystemTools::GetFatalErrorOccurred()) { result.Restore = false; result.Break = true; diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 8d2d972..33721fc 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -124,6 +124,10 @@ bool cmFunctionHelperCommand::operator()( makefile.RaiseScope(status.GetReturnVariables()); break; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + break; + } } // pop scope on the makefile diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index c2a09c1..0b80aaa 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -161,6 +161,10 @@ bool cmIfFunctionBlocker::Replay(std::vector functions, inStatus.SetContinueInvoked(); return true; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + return true; + } } } return true; diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 3d7cd8b..b57c3dd 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -135,6 +135,10 @@ bool cmMacroHelperCommand::operator()( inStatus.SetBreakInvoked(); return true; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + return true; + } } return true; } diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index e80d1fc..6b454d7 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -105,6 +105,10 @@ bool cmWhileFunctionBlocker::Replay(std::vector functions, if (status.GetContinueInvoked()) { break; } + if (status.HasExitCode()) { + inStatus.SetExitCode(status.GetExitCode()); + return true; + } if (cmSystemTools::GetFatalErrorOccurred()) { return true; } diff --git a/Tests/RunCMake/cmake_language/RunCMakeTest.cmake b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake index ac4aec8..5fb2de6 100644 --- a/Tests/RunCMake/cmake_language/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake @@ -91,6 +91,13 @@ run_cmake_script(exit_5_script) run_cmake_script(exit_0_script_with_command) run_cmake_script(exit_7_script_in_include) run_cmake_script(exit_8_script_in_recursive_cmake_language) +run_cmake_script(exit_9_script_block) +run_cmake_script(exit_9_script_control) +run_cmake_script(exit_9_script_if) +run_cmake_script(exit_9_script_foreach) +run_cmake_script(exit_9_script_function) +run_cmake_script(exit_9_script_macro) +run_cmake_script(exit_9_script_while) # Default log level run_cmake_command( diff --git a/Tests/RunCMake/cmake_language/exit_9_script_block-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_block-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_block-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_block.cmake b/Tests/RunCMake/cmake_language/exit_9_script_block.cmake new file mode 100644 index 0000000..b8d8615 --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_block.cmake @@ -0,0 +1,5 @@ +block() + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endblock() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_control-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_control-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_control-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_control.cmake b/Tests/RunCMake/cmake_language/exit_9_script_control.cmake new file mode 100644 index 0000000..168f81f --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_control.cmake @@ -0,0 +1,24 @@ +function(exit_macro) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endfunction() + +function(exit_function) + exit_macro() + message(FATAL_ERROR "This should not be reached!") +endfunction() + +block() + if(1) + foreach(i IN ITEMS a b) + while(1) + exit_function() + message(FATAL_ERROR "This should not be reached!") + endwhile() + message(FATAL_ERROR "This should not be reached!") + endforeach() + message(FATAL_ERROR "This should not be reached!") + endif() + message(FATAL_ERROR "This should not be reached!") +endblock() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_foreach-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_foreach-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_foreach-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_foreach.cmake b/Tests/RunCMake/cmake_language/exit_9_script_foreach.cmake new file mode 100644 index 0000000..b205537 --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_foreach.cmake @@ -0,0 +1,5 @@ +foreach(i IN ITEMS a b) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endforeach() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_function-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_function-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_function-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_function.cmake b/Tests/RunCMake/cmake_language/exit_9_script_function.cmake new file mode 100644 index 0000000..67a2615 --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_function.cmake @@ -0,0 +1,6 @@ +function(exit) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endfunction() +exit() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_if-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_if-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_if-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_if.cmake b/Tests/RunCMake/cmake_language/exit_9_script_if.cmake new file mode 100644 index 0000000..935b8d5 --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_if.cmake @@ -0,0 +1,5 @@ +if(1) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endif() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_macro-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_macro-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_macro-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_macro.cmake b/Tests/RunCMake/cmake_language/exit_9_script_macro.cmake new file mode 100644 index 0000000..133348c --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_macro.cmake @@ -0,0 +1,6 @@ +macro(exit) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endmacro() +exit() +message(FATAL_ERROR "This should not be reached!") diff --git a/Tests/RunCMake/cmake_language/exit_9_script_while-result.txt b/Tests/RunCMake/cmake_language/exit_9_script_while-result.txt new file mode 100644 index 0000000..b38a53d --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_while-result.txt @@ -0,0 +1 @@ +^9$ diff --git a/Tests/RunCMake/cmake_language/exit_9_script_while.cmake b/Tests/RunCMake/cmake_language/exit_9_script_while.cmake new file mode 100644 index 0000000..261438c --- /dev/null +++ b/Tests/RunCMake/cmake_language/exit_9_script_while.cmake @@ -0,0 +1,5 @@ +while(1) + cmake_language(EXIT 9) + message(FATAL_ERROR "This should not be reached!") +endwhile() +message(FATAL_ERROR "This should not be reached!") -- cgit v0.12