| set(BUILD_DIR "${RunCMake_BINARY_DIR}/OutputSyncUsesTerminal-build") |
| |
| function(check_has target regex) |
| file(STRINGS "${BUILD_DIR}/${target}" lines REGEX "${regex}") |
| list(LENGTH lines len) |
| if(len EQUAL 0) |
| set(RunCMake_TEST_FAILED |
| "${RunCMake_TEST_FAILED}Expected to find '${regex}' in ${target}\n" |
| PARENT_SCOPE) |
| endif() |
| endfunction() |
| |
| function(check_missing target regex) |
| file(STRINGS "${BUILD_DIR}/${target}" lines REGEX "${regex}") |
| list(LENGTH lines len) |
| if(NOT len EQUAL 0) |
| set(RunCMake_TEST_FAILED |
| "${RunCMake_TEST_FAILED}Did not expect to find '${regex}' in ${target}: ${lines}\n" |
| PARENT_SCOPE) |
| endif() |
| endfunction() |
| |
| # The USES_TERMINAL recipe is prefixed with the build-time toggle variable. |
| check_has("CMakeFiles/term.dir/build.make" |
| [[\$\(CMAKE_USES_TERMINAL_PREFIX\)\$\(CMAKE_COMMAND\) -E true]]) |
| |
| # A plain recipe references no prefix. |
| check_missing("CMakeFiles/plain.dir/build.make" [[\$\(CMAKE_USES_TERMINAL_PREFIX\)]]) |
| |
| # A jobserver-aware recipe keeps the literal '+' and is not given the toggle. |
| check_has("CMakeFiles/jsa.dir/build.make" [[\+\$\(CMAKE_COMMAND\) -E true]]) |
| check_missing("CMakeFiles/jsa.dir/build.make" [[\$\(CMAKE_USES_TERMINAL_PREFIX\)]]) |
| |
| # A recipe that is both jobserver-aware and USES_TERMINAL uses only '+' |
| # (no doubled prefix). |
| check_has("CMakeFiles/both.dir/build.make" [[\+\$\(CMAKE_COMMAND\) -E true]]) |
| check_missing("CMakeFiles/both.dir/build.make" [[\$\(CMAKE_USES_TERMINAL_PREFIX\)]]) |