Test for FileTypes (and QFlags).

This commit is contained in:
Mikaël Capelle
2022-05-05 14:21:24 +02:00
parent 19da0a9d8c
commit b17a1a3b07
4 changed files with 80 additions and 12 deletions
+20 -11
View File
@@ -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()
+1 -1
View File
@@ -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
+22
View File
@@ -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();
});
}
+37
View File
@@ -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)