|
|
@@ -0,0 +1,63 @@
|
|
|
+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()
|