| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- macro(error text)
 
-   set(RunCMake_TEST_FAILED "${text}")
 
-   return()
 
- endmacro()
 
- macro(parseGlobalSections arg_out_pre arg_out_post testName)
 
-   set(out_pre ${arg_out_pre})
 
-   set(out_post ${arg_out_post})
 
-   set(sln "${RunCMake_TEST_BINARY_DIR}/${testName}.sln")
 
-   if(NOT EXISTS "${sln}")
 
-     error("Expected solution file ${sln} does not exist")
 
-   endif()
 
-   file(STRINGS "${sln}" lines)
 
-   set(sectionLines "")
 
-   set(store FALSE)
 
-   foreach(line IN LISTS lines)
 
-     if(line MATCHES "^\t*Global\n?$")
 
-       set(store TRUE)
 
-     elseif(line MATCHES "^\t*EndGlobal\n?$")
 
-       set(store FALSE)
 
-     elseif(store)
 
-       list(APPEND sectionLines "${line}")
 
-     endif()
 
-   endforeach()
 
-   set(sectionName "")
 
-   set(sectionType "")
 
-   foreach(line IN LISTS sectionLines)
 
-     if(line MATCHES "^\t*GlobalSection\\((.*)\\) *= *(pre|post)Solution\n?$")
 
-       set(sectionName "${CMAKE_MATCH_1}")
 
-       set(sectionType ${CMAKE_MATCH_2})
 
-       list(APPEND ${out_${sectionType}} "${sectionName}")
 
-       if(DEFINED ${out_${sectionType}}_${sectionName})
 
-         error("Section ${sectionName} defined twice")
 
-       endif()
 
-       set(${out_${sectionType}}_${sectionName} "")
 
-     elseif(line MATCHES "\t*EndGlobalSection\n?$")
 
-       set(sectionName "")
 
-       set(sectionType "")
 
-     elseif(sectionName)
 
-       string(REGEX MATCH "^\t*([^=]*)=([^\n]*)\n?$" matches "${line}")
 
-       if(NOT matches)
 
-         error("Bad syntax in solution file: '${line}'")
 
-       endif()
 
-       string(STRIP "${CMAKE_MATCH_1}" key)
 
-       string(STRIP "${CMAKE_MATCH_2}" value)
 
-       if(key STREQUAL "SolutionGuid" AND value MATCHES "^{[0-9A-F-]+}$")
 
-         set(value "{00000000-0000-0000-0000-000000000000}")
 
-       endif()
 
-       list(APPEND ${out_${sectionType}}_${sectionName} "${key}=${value}")
 
-     endif()
 
-   endforeach()
 
- endmacro()
 
- macro(getProjectNames arg_out_projects)
 
-   set(${arg_out_projects} "")
 
-   set(sln "${RunCMake_TEST_BINARY_DIR}/${test}.sln")
 
-   if(NOT EXISTS "${sln}")
 
-     error("Expected solution file ${sln} does not exist")
 
-   endif()
 
-   file(STRINGS "${sln}" project_lines REGEX "^Project\\(")
 
-   foreach(project_line IN LISTS project_lines)
 
-     string(REGEX REPLACE ".* = \"" "" project_line "${project_line}")
 
-     string(REGEX REPLACE "\", .*"  "" project_line "${project_line}")
 
-     list(APPEND ${arg_out_projects} "${project_line}")
 
-   endforeach()
 
- endmacro()
 
- macro(testGlobalSection prefix sectionName)
 
-   if(NOT DEFINED ${prefix}_${sectionName})
 
-     error("Section ${sectionName} does not exist")
 
-   endif()
 
-   if(NOT "${${prefix}_${sectionName}}" STREQUAL "${ARGN}")
 
-     error("Section ${sectionName} content mismatch\n  expected: ${ARGN}\n  actual: ${${prefix}_${sectionName}}")
 
-   endif()
 
- endmacro()
 
 
  |