############################################################################
 # BornAgain/Tests/Py/Varia/CMakeLists.txt
############################################################################

set(OUTPUT_DIR ${TEST_OUTPUT_DIR}/PyFu)
file(MAKE_DIRECTORY ${OUTPUT_DIR})

set(infrastructure PyFuTestInfrastructure.py)
file(GLOB tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py)
foreach(util ${infrastructure})
    list(REMOVE_ITEM tests ${util})
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${util} ${OUTPUT_DIR}/${util} @ONLY)
endforeach()

foreach(_test ${tests})
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_test} ${OUTPUT_DIR}/${_test} COPYONLY)
    add_test(NAME Py.Functional.${_test}
        WORKING_DIRECTORY ${OUTPUT_DIR}
        COMMAND ${CMAKE_COMMAND} -E env
            PYTHONPATH=${BA_PY_SOURCE_OUTPUT_DIR}
            BA_REFERENCE_DIR_SUITE=${REFERENCE_DIR_SUITE}
        ${Python3_EXECUTABLE} ${OUTPUT_DIR}/${_test})
endforeach()

#--- Test Python package
if(BA_PY_PACK)
    get_target_property(BA_WHEEL_DIR ba_wheel WHEEL_DIR)

    # directory for a Python virtual environment to install the wheel
    set(BA_VENV_DIR "${CMAKE_BINARY_DIR}/venv")
    add_test(NAME Py.Functional.TestWheel
        COMMAND ${CMAKE_COMMAND}
        -DPython3_EXECUTABLE=${Python3_EXECUTABLE}
        -DBA_VENV_DIR=${BA_VENV_DIR}
        -DBA_WHEEL_DIR=${BA_WHEEL_DIR}
        -P ${CMAKE_CURRENT_LIST_DIR}/testpywheel.cmake
    )

    set_tests_properties(Py.Functional.TestWheel PROPERTIES
        DEPENDS ba_wheel
        LABELS "XL"
    )
endif(BA_PY_PACK)
