summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/CommandLine/ProfilingTest-check.cmake
blob: 2e8eac1f6f4d5973426ab79c18f19d41f4a2de3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if (NOT EXISTS ${ProfilingTestOutput})
  set(RunCMake_TEST_FAILED "Expected ${ProfilingTestOutput} to exists")
endif()

file(READ "${ProfilingTestOutput}" JSON_HEADER LIMIT 2)
if (NOT JSON_HEADER MATCHES "^\\[{")
  set(RunCMake_TEST_FAILED "Expected valid JSON start")
  return()
endif()

file(SIZE "${ProfilingTestOutput}" OUTPUT_SIZE)
math(EXPR END_OFFSET "${OUTPUT_SIZE} -2 ")

file(READ "${ProfilingTestOutput}" JSON_TRAILER OFFSET ${END_OFFSET})
if (NOT JSON_TRAILER MATCHES "^}]$")
  set(RunCMake_TEST_FAILED "Expected valid JSON end")
  return()
endif()

file(STRINGS ${ProfilingTestOutput} upperCaseCommand
  REGEX [["name"[ ]*:[ ]*"__TESTING_COMMAND_CASE"]])
if (NOT "${upperCaseCommand}" STREQUAL "")
  set(RunCMake_TEST_FAILED "Command name not stored in lowercase")
endif()
file(STRINGS ${ProfilingTestOutput} lowerCaseCommand
  REGEX [["name"[ ]*:[ ]*"__testing_command_case"]])
list(LENGTH lowerCaseCommand numInvocations)
if (NOT numInvocations EQUAL 1)
  set(RunCMake_TEST_FAILED
      "Unexpected number of lowercase command names: ${numInvocations}")
endif()