123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/exe.vcxproj")
- if(NOT EXISTS "${vcProjectFile}")
- set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
- return()
- endif()
- set(inGroup FALSE)
- set(inCommand FALSE)
- set(expected_Debug
- "cmd_1 cmd_1_arg"
- "cmd_1_dbg cmd_1_dbg_arg"
- "cmd_2_dbg cmd_2_dbg_arg"
- "cmd_3_dbg cmd_3_dbg_arg")
- set(expected_Release
- "cmd_1 cmd_1_arg"
- "cmd_3_rel cmd_3_rel_arg")
- # extract build events
- file(STRINGS "${vcProjectFile}" lines)
- foreach(line IN LISTS lines)
- if(line MATCHES "^ *<ItemDefinitionGroup Condition=.*Configuration.*Platform.*>$")
- set(inGroup TRUE)
- string(REGEX MATCH "=='(.*)\\|(.*)'" out ${line})
- set(config ${CMAKE_MATCH_1})
- elseif(line MATCHES "^ *</ItemDefinitionGroup>$")
- set(inGroup FALSE)
- elseif(inGroup)
- if(line MATCHES "^ *<Command>.*$")
- set(inCommand TRUE)
- string(REGEX MATCH "<Command>(.*)" cmd ${line})
- set(currentCommand ${CMAKE_MATCH_1})
- elseif(line MATCHES "^(.*)</Command>$")
- string(REGEX MATCH "(.*)</Command>" cmd ${line})
- list(APPEND currentCommand ${CMAKE_MATCH_1})
- set(command_${config} ${currentCommand})
- set(inCommand FALSE)
- elseif(inCommand)
- list(APPEND currentCommand ${line})
- endif()
- endif()
- endforeach()
- foreach(config "Debug" "Release")
- set(currentName command_${config})
- set(expectedName expected_${config})
- set(strippedCommand "")
- if(DEFINED ${currentName})
- foreach(v ${${currentName}})
- if(${v} MATCHES "cmd_")
- list(APPEND strippedCommand ${v})
- endif()
- endforeach()
- if(NOT "${strippedCommand}" STREQUAL
- "${${expectedName}}")
- message(" - ${strippedCommand}")
- message(" + ${${expectedName}}")
- set(RunCMake_TEST_FAILED "build event command does not match")
- return()
- endif()
- endif()
- endforeach()
|