set(NUM_TRIES 30)
set(DELAY 1)

if (NOT EXISTS ${v1}/preBuild.hook)
  set(RunCMake_TEST_FAILED "preBuild hook did not run\n")
else()
  file(READ ${v1}/preBuild.hook preBuildErrors)
  if (preBuildErrors)
    string(APPEND RunCMake_TEST_FAILED "Errors found in data during preBuild hook:\n${preBuildErrors}\n")
  endif()
endif()

macro(hasPostBuildArtifacts)
  if (NOT postBuildRan AND EXISTS ${v1}/postBuild.hook)
    set(postBuildRan 1)
  endif()
  if (NOT dataDirClean)
    file(GLOB data "${v1}/data/*json")
    if ("${data}" STREQUAL "")
      set(dataDirClean 1)
    endif()
  endif()
endmacro()

set(postBuildRan 0)
set(dataDirClean 0)
foreach(_ RANGE ${NUM_TRIES})
  hasPostBuildArtifacts()
  if (postBuildRan AND dataDirClean)
    break()
  endif()
  execute_process(COMMAND ${CMAKE_COMMAND} -E sleep ${DELAY})
endforeach()

if (NOT postBuildRan)
  string(APPEND RunCMake_TEST_FAILED "postBuild hook did not run\n")
else()
  file(READ ${v1}/postBuild.hook postBuildErrors)
  if (postBuildErrors)
    string(APPEND RunCMake_TEST_FAILED "Errors found in data during postBuild hook:\n${postBuildErrors}\n")
  endif()
endif()
if (NOT dataDirClean)
  string(APPEND RunCMake_TEST_FAILED "Snippet files not fully removed post build\n")
endif()
