diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt index 7e9d9ae..1bf9f74 100644 --- a/tests/python/CMakeLists.txt +++ b/tests/python/CMakeLists.txt @@ -6,23 +6,32 @@ find_package(GTest REQUIRED) set(PYLIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/pylibs) if (TARGET uibase) - set(UIBASE_PATH $) + set(UIBASE_PATH $) else() - set(UIBASE_PATH "${MO2_INSTALL_PATH}/bin/uibase.dll") + set(UIBASE_PATH "${MO2_INSTALL_PATH}/bin") endif() -add_custom_target(pytest - ${CMAKE_COMMAND} -E env - PYTHONPATH="${PYLIB_DIR}\\;$" - "UIBASE_PATH=${UIBASE_PATH}" "QT_ROOT=${QT_ROOT}" - ${CMAKE_CURRENT_BINARY_DIR}/pylibs/bin/pytest.exe ${CMAKE_CURRENT_SOURCE_DIR} -s - WORKING_DIRECTORY ${MO2_INSTALL_PATH} +add_custom_target(pytest-deps) +add_test(NAME pytest + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/pylibs/bin/pytest.exe ${CMAKE_CURRENT_SOURCE_DIR} -s ) -mo2_python_pip_install(pytest + +set(extra_paths "${UIBASE_PATH}\\;${MO2_INSTALL_PATH}/bin/dlls") +set_tests_properties(pytest + PROPERTIES + DEPENDS pytest-deps + WORKING_DIRECTORY ${MO2_INSTALL_PATH}/bin + ENVIRONMENT_MODIFICATION + "PYTHONPATH=set:${PYLIB_DIR}\\;$;\ +UIBASE_PATH=set:${UIBASE_PATH};\ +QT_ROOT=set:${QT_ROOT}" +) + +mo2_python_pip_install(pytest-deps DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/pylibs PACKAGES pytest PyQt6==6.3.0) -add_dependencies(pytest mobase) +add_dependencies(pytest-deps mobase) file(GLOB test_files CONFIGURE_DEPENDS "test_*.cpp") foreach (test_file ${test_files}) @@ -48,5 +57,5 @@ foreach (test_file ${test_files}) target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../mocks) - add_dependencies(pytest ${target}) + add_dependencies(pytest-deps ${target}) endforeach() diff --git a/tests/python/conftest.py b/tests/python/conftest.py index 8af3abf..19830e5 100644 --- a/tests/python/conftest.py +++ b/tests/python/conftest.py @@ -9,7 +9,7 @@ def pytest_configure(): global app os.add_dll_directory(Path(os.getenv("QT_ROOT")).joinpath("bin")) - os.add_dll_directory(Path(os.getenv("UIBASE_PATH")).parent) + os.add_dll_directory(Path(os.getenv("UIBASE_PATH"))) from PyQt6.QtWidgets import QApplication diff --git a/tests/python/test_filetree.cpp b/tests/python/test_filetree.cpp new file mode 100644 index 0000000..882a0b4 --- /dev/null +++ b/tests/python/test_filetree.cpp @@ -0,0 +1,22 @@ +#include "pybind11_qt/pybind11_qt.h" + +#include +#include + +#include "ifiletree.h" + +using namespace MOBase; + +PYBIND11_MODULE(filetree, m) +{ + // test the FileTypes stuff + m.def("is_file", [](IFileTree::FileTypes const& t) { + return t.testFlag(IFileTree::FILE); + }); + m.def("is_directory", [](IFileTree::FileTypes const& t) { + return t.testFlag(IFileTree::DIRECTORY); + }); + m.def("value", [](IFileTree::FileTypes const& t) { + return t.toInt(); + }); +} diff --git a/tests/python/test_filetree.py b/tests/python/test_filetree.py new file mode 100644 index 0000000..8248bf9 --- /dev/null +++ b/tests/python/test_filetree.py @@ -0,0 +1,37 @@ +import mobase +import pytest + +m = pytest.importorskip("mobase_tests.filetree") + + +def test_filetype(): + FT = mobase.FileTreeEntry.FileTypes + + assert mobase.FileTreeEntry.FILE == FT.FILE + assert m.is_file(FT.FILE) + assert not m.is_directory(FT.FILE) + assert m.value(FT.FILE) == FT.FILE.value + + assert mobase.FileTreeEntry.DIRECTORY == FT.DIRECTORY + assert not m.is_file(FT.DIRECTORY) + assert m.is_directory(FT.DIRECTORY) + assert m.value(FT.DIRECTORY) == FT.DIRECTORY.value + + assert mobase.FileTreeEntry.FILE_OR_DIRECTORY == FT.FILE_OR_DIRECTORY + assert m.is_file(FT.FILE_OR_DIRECTORY) + assert m.is_directory(FT.FILE_OR_DIRECTORY) + assert m.value(FT.FILE_OR_DIRECTORY) == FT.FILE_OR_DIRECTORY.value + + assert FT.FILE_OR_DIRECTORY == FT.FILE | FT.DIRECTORY + assert m.is_file(FT.FILE | FT.DIRECTORY) + assert m.is_directory(FT.FILE | FT.DIRECTORY) + assert m.value(FT.FILE | FT.DIRECTORY) == (FT.FILE.value | FT.DIRECTORY.value) + + assert m.is_file(FT.FILE_OR_DIRECTORY & FT.FILE) + assert not m.is_directory(FT.FILE_OR_DIRECTORY & FT.FILE) + + assert not m.is_file(FT.FILE_OR_DIRECTORY & FT.DIRECTORY) + assert m.is_directory(FT.FILE_OR_DIRECTORY & FT.DIRECTORY) + + assert m.is_file(FT.FILE_OR_DIRECTORY & ~FT.DIRECTORY) + assert not m.is_directory(FT.FILE_OR_DIRECTORY & ~FT.DIRECTORY)