Browse Source

Tests: Update for upstream ninja change to write status on stderr

Upstream ninja commit `ad3d29fb53` (Put builder output through status
interface) from ninja PR 1899 changed the status output from stdout to
stderr.  In particular, `ninja: no work to do` is now printed on stderr.
Update our RunCMake tests to accept this difference.

A few RunCMake test cases check for `ninja: no work to do`.  For those,
move the message to stdout using `RunCMake_TEST_OUTPUT_MERGE`.  The rest
of the test cases do not care about the message, so remove it from the
actual stderr content before comparing against that expected.
Brad King 4 years ago
parent
commit
d33c2c93d8

+ 2 - 0
Tests/RunCMake/Ninja/RunCMakeTest.cmake

@@ -34,6 +34,7 @@ function(run_NoWorkToDo)
   run_cmake(NoWorkToDo)
   set(RunCMake_TEST_NO_CLEAN 1)
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/NoWorkToDo-build)
+  set(RunCMake_TEST_OUTPUT_MERGE 1)
   run_cmake_command(NoWorkToDo-build ${CMAKE_COMMAND} --build .)
   run_cmake_command(NoWorkToDo-nowork ${CMAKE_COMMAND} --build . -- -d explain)
 endfunction()
@@ -43,6 +44,7 @@ function(run_VerboseBuild)
   run_cmake(VerboseBuild)
   set(RunCMake_TEST_NO_CLEAN 1)
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/VerboseBuild-build)
+  set(RunCMake_TEST_OUTPUT_MERGE 1)
   run_cmake_command(VerboseBuild-build ${CMAKE_COMMAND} --build . -v --clean-first)
   run_cmake_command(VerboseBuild-nowork ${CMAKE_COMMAND} --build . --verbose)
 endfunction()

+ 6 - 0
Tests/RunCMake/RunCMake.cmake

@@ -139,6 +139,12 @@ function(run_cmake test)
   if(NOT "${actual_result}" MATCHES "${expect_result}")
     string(APPEND msg "Result is [${actual_result}], not [${expect_result}].\n")
   endif()
+
+  # Special case: remove ninja no-op line from stderr, but not stdout.
+  # Test cases that look for it should use RunCMake_TEST_OUTPUT_MERGE.
+  string(REGEX REPLACE "(^|\r?\n)ninja: no work to do\\.\r?\n" "\\1" actual_stderr "${actual_stderr}")
+
+  # Remove incidental content from both stdout and stderr.
   string(CONCAT ignore_line_regex
     "(^|\n)((==[0-9]+=="
     "|BullseyeCoverage"

+ 4 - 0
Tests/RunCMake/try_compile/RunCMakeTest.cmake

@@ -93,7 +93,9 @@ if(RunCMake_GENERATOR MATCHES "Make|Ninja")
   message(STATUS "RerunCMake: first configuration...")
   run_cmake(RerunCMake)
   if(NOT CMake_TEST_FILESYSTEM_1S)
+    set(RunCMake_TEST_OUTPUT_MERGE 1)
     run_cmake_command(RerunCMake-nowork${ninja} ${CMAKE_COMMAND} --build .)
+    unset(RunCMake_TEST_OUTPUT_MERGE)
   endif()
 
   execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 1) # handle 1s resolution
@@ -101,7 +103,9 @@ if(RunCMake_GENERATOR MATCHES "Make|Ninja")
   file(WRITE "${in_tc}" "does-not-compile\n")
   run_cmake_command(RerunCMake-rerun${ninja} ${CMAKE_COMMAND} --build .)
   if(NOT CMake_TEST_FILESYSTEM_1S)
+    set(RunCMake_TEST_OUTPUT_MERGE 1)
     run_cmake_command(RerunCMake-nowork${ninja} ${CMAKE_COMMAND} --build .)
+    unset(RunCMake_TEST_OUTPUT_MERGE)
   endif()
 
   unset(RunCMake_TEST_BINARY_DIR)