include(RunCMake)

run_cmake(BadArg1)
run_cmake(BadArg2)
run_cmake(BadArg3)

run_cmake(QueryList)
run_cmake(QueryKeys)

run_cmake(UnitTest)
run_cmake(Exherbo)
run_cmake(Ubuntu)

run_cmake(CentOS6)
run_cmake(Debian6)

run_cmake(UserFallbackScript)

if(RunCMake_GENERATOR MATCHES "Visual Studio")
  run_cmake(VsMSBuild)
else()
  run_cmake(VsMSBuildMissing)
endif()

if(CMAKE_HOST_WIN32)
  run_cmake_script(MSYSTEM_PREFIX-Empty)
  if("$ENV{MSYSTEM}" MATCHES "(MSYS|MINGW32|MINGW64|UCRT64)")
    set(RunCMake_TEST_VARIANT_DESCRIPTION "-$ENV{MSYSTEM}")
    run_cmake_script(MSYSTEM_PREFIX -DCMake_TEST_MSYSTEM_PREFIX=${CMake_TEST_MSYSTEM_PREFIX})
    unset(RunCMake_TEST_VARIANT_DESCRIPTION)
  endif()
else()
  run_cmake_script(MSYSTEM_PREFIX-Missing)
endif()

# WINDOWS_REGISTRY tests
run_cmake(Registry_NoArgs)
run_cmake(Registry_BadQuery1)
run_cmake(Registry_BadQuery2)
run_cmake(Registry_BadView1)
run_cmake(Registry_BadView2)
run_cmake(Registry_BadView3)
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
  run_cmake(Registry_BadKey1)
  run_cmake(Registry_BadKey2)

  # Tests using the Windows registry
  find_program(REG NAMES "reg.exe" NO_CACHE)
  if (REG)
    ## check host architecture
    cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKCU" SUBKEYS VIEW 64 ERROR_VARIABLE status)
    if (status STREQUAL "")
      set(ARCH "64bit")
    else()
      set(ARCH "32bit")
    endif()

    # crete some entries in the registry
    cmake_path(CONVERT "${RunCMake_SOURCE_DIR}/registry_host${ARCH}.reg" TO_NATIVE_PATH_LIST registry_data)
    execute_process(COMMAND "${REG}" import "${registry_data}" OUTPUT_QUIET ERROR_QUIET)

    run_cmake_with_options(Registry_Query -DARCH=${ARCH})

    # clean-up registry
    execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\CLSID\\CMake-Tests\\chsi-registry" /f OUTPUT_QUIET ERROR_QUIET)
    if (ARCH STREQUAL "64bit")
      execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\WOW6432Node\\CLSID\\CMake-Tests\\chsi-registry" /f OUTPUT_QUIET ERROR_QUIET)
    endif()
  endif()
endif()
