cmake_minimum_required(VERSION 3.1)

project(TestVirtualEnv LANGUAGES NONE)

include(CTest)

find_package(Python3 REQUIRED COMPONENTS Interpreter)
if (NOT Python3_FOUND)
  message (FATAL_ERROR "Fail to found Python 3")
endif()

set (Python3_VIRTUAL_ENV "${CMAKE_CURRENT_BINARY_DIR}/py3venv")

execute_process (COMMAND "${Python3_EXECUTABLE}" -m venv "${Python3_VIRTUAL_ENV}"
                 RESULT_VARIABLE result
                 OUTPUT_VARIABLE outputs
                 ERROR_VARIABLE outputs)
if (result)
  message (FATAL_ERROR "Fail to create virtual environment: ${outputs}")
endif()

add_test(NAME FindPython3.VirtualEnvDefault
         COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME
                                           "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvDefault.cmake")

add_test(NAME FindPython3.VirtualEnvOnly
         COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME
                                           "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake")
add_test(NAME FindPython3.UnsetVirtualEnvOnly
         COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME
                                           --unset=VIRTUAL_ENV
                 "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake")

add_test(NAME FindPython3.VirtualEnvStandard
         COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME
                                           "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}"
                 -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvStandard.cmake")
