mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
Test for FileTypes (and QFlags).
This commit is contained in:
+20
-11
@@ -6,23 +6,32 @@ find_package(GTest REQUIRED)
|
||||
set(PYLIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/pylibs)
|
||||
|
||||
if (TARGET uibase)
|
||||
set(UIBASE_PATH $<TARGET_FILE:uibase>)
|
||||
set(UIBASE_PATH $<TARGET_FILE_DIR:uibase>)
|
||||
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}\\;$<TARGET_FILE_DIR:mobase>"
|
||||
"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}\\;$<TARGET_FILE_DIR:mobase>;\
|
||||
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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#include "pybind11_qt/pybind11_qt.h"
|
||||
|
||||
#include <pybind11/functional.h>
|
||||
#include <pybind11/pybind11.h>
|
||||
|
||||
#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();
|
||||
});
|
||||
}
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user