if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/compile_commands.json") set(RunCMake_TEST_FAILED "compile_commands.json not generated") return() endif() set(ESCAPED_BINARY_DIR [==[[^ ]*/Tests/RunCMake/Swift/CompileCommands-build]==]) set(E_SOURCE_PATH [==[(\\")?[^ ]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")?]==]) set(L_SOURCE_PATH [==[(\\")?[^ ]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?]==]) # The compile command for both files should contain all Swift source files in # the module set(expected_compile_commands [==[^\[ { "directory": "${BINARY_DIR}", "command": "[^ ]*swiftc[^ ]* ${E_SOURCE_PATH} ${L_SOURCE_PATH}", "file": "[^ ]*/Tests/RunCMake/Swift/E.swift", "output": "[^ ]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?E.swift.(o|obj)" }, { "directory": "${BINARY_DIR}", "command": "[^ ]*swiftc[^ ]* ${E_SOURCE_PATH} ${L_SOURCE_PATH}", "file": "[^ ]*/Tests/RunCMake/Swift/L.swift", "output": "[^ ]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?L.swift.(o|obj)" }]==] ) string(REPLACE [=[${BINARY_DIR}]=] "${ESCAPED_BINARY_DIR}" expected_compile_commands "${expected_compile_commands}") string(REPLACE [=[${E_SOURCE_PATH}]=] "${E_SOURCE_PATH}" expected_compile_commands "${expected_compile_commands}") string(REPLACE [=[${L_SOURCE_PATH}]=] "${L_SOURCE_PATH}" expected_compile_commands "${expected_compile_commands}") file(READ "${RunCMake_TEST_BINARY_DIR}/compile_commands.json" compile_commands) if(NOT compile_commands MATCHES "${expected_compile_commands}") string(REPLACE "\n" "\n " expected_compile_commands_formatted "${expected_compile_commands}") string(REPLACE "\n" "\n " compile_commands_formatted "${compile_commands}") string(APPEND RunCMake_TEST_FAILED "Expected compile_commands.json to match:\n ${expected_compile_commands_formatted}\nActual compile_commands.json:\n ${compile_commands_formatted}\n") endif()