mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
Move to VCPKG.
* Minor cleaning of CMakeLists.txt. Fix C++ warnings and Qt deprecation. * Avoid using Python from virtual environment.
This commit is contained in:
+21
-12
@@ -2,17 +2,28 @@ cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
# pytest
|
||||
cmake_policy(SET CMP0144 NEW)
|
||||
|
||||
find_package(mo2-uibase CONFIG REQUIRED)
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
set(PYLIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/pylibs)
|
||||
|
||||
if (TARGET uibase)
|
||||
set(UIBASE_PATH $<TARGET_FILE_DIR:uibase>)
|
||||
else()
|
||||
set(UIBASE_PATH "${MO2_INSTALL_PATH}/bin")
|
||||
endif()
|
||||
set(UIBASE_PATH $<TARGET_FILE_DIR:mo2::uibase>)
|
||||
|
||||
add_custom_target(python-tests)
|
||||
target_sources(python-tests
|
||||
PRIVATE
|
||||
conftest.py
|
||||
test_argument_wrapper.py
|
||||
test_filetree.py
|
||||
test_functional.py
|
||||
test_guessed_string.py
|
||||
test_organizer.py
|
||||
test_path_wrappers.py
|
||||
test_qt_widgets.py
|
||||
test_qt.py
|
||||
test_shared_cpp_owner.py
|
||||
)
|
||||
|
||||
add_test(NAME pytest
|
||||
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/pylibs/bin/pytest.exe ${CMAKE_CURRENT_SOURCE_DIR} -s
|
||||
@@ -21,18 +32,16 @@ add_test(NAME pytest
|
||||
set_tests_properties(pytest
|
||||
PROPERTIES
|
||||
DEPENDS python-tests
|
||||
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}"
|
||||
UIBASE_PATH=set:${UIBASE_PATH}"
|
||||
)
|
||||
|
||||
mo2_python_pip_install(python-tests
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/pylibs
|
||||
PACKAGES pytest
|
||||
PyQt${QT_MAJOR_VERSION}==${QT_VERSION}
|
||||
PyQt${QT_MAJOR_VERSION}-Qt${QT_MAJOR_VERSION}==${QT_VERSION})
|
||||
PyQt${MO2_QT_VERSION_MAJOR}==${MO2_QT_VERSION}
|
||||
PyQt${MO2_QT_VERSION_MAJOR}-Qt${MO2_QT_VERSION_MAJOR}==${MO2_QT_VERSION})
|
||||
add_dependencies(python-tests mobase)
|
||||
set_target_properties(python-tests PROPERTIES FOLDER tests/python)
|
||||
|
||||
@@ -56,8 +65,8 @@ foreach (test_file ${test_files})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
mo2_add_dependencies(${target} PRIVATE uibase Qt::Core Qt::Widgets)
|
||||
target_link_libraries(${target} PRIVATE pybind11::qt pybind11::utils GTest::gmock)
|
||||
target_link_libraries(${target} PRIVATE
|
||||
mo2::uibase Qt6::Core Qt6::Widgets pybind11::qt pybind11::utils GTest::gmock)
|
||||
|
||||
target_include_directories(${target}
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../mocks)
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import cast
|
||||
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
|
||||
|
||||
def pytest_configure():
|
||||
global app
|
||||
|
||||
os.add_dll_directory(str(Path(cast(str, os.getenv("QT_ROOT"))).joinpath("bin")))
|
||||
os.add_dll_directory(str(os.getenv("UIBASE_PATH")))
|
||||
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <pybind11/functional.h>
|
||||
#include <pybind11/pybind11.h>
|
||||
|
||||
#include "ifiletree.h"
|
||||
#include <uibase/ifiletree.h>
|
||||
|
||||
using namespace MOBase;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <pybind11/functional.h>
|
||||
#include <pybind11/pybind11.h>
|
||||
|
||||
#include "guessedvalue.h"
|
||||
#include <uibase/guessedvalue.h>
|
||||
|
||||
using namespace MOBase;
|
||||
|
||||
|
||||
@@ -30,14 +30,14 @@ PYBIND11_MODULE(organizer, m)
|
||||
EXPECT_CALL(*mock, startApplication(Eq("invalid.exe"), _, _, _, _, _))
|
||||
.WillRepeatedly(Return(INVALID_HANDLE_VALUE));
|
||||
ON_CALL(*mock, waitForApplication)
|
||||
.WillByDefault([&mock, original_handle = handle](
|
||||
HANDLE handle, bool refresh, LPDWORD exitCode) {
|
||||
.WillByDefault([&mock, original_handle = handle](HANDLE handle, bool,
|
||||
LPDWORD exitCode) {
|
||||
if (handle == original_handle) {
|
||||
*exitCode = 0;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
*exitCode = -1;
|
||||
*exitCode = static_cast<DWORD>(-1);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -72,24 +72,26 @@ PYBIND11_MODULE(qt, m)
|
||||
// QVariant
|
||||
|
||||
m.def("qvariant_from_none", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Invalid,
|
||||
return std::make_tuple(variant.userType() == QMetaType::UnknownType,
|
||||
variant.isValid());
|
||||
});
|
||||
m.def("qvariant_from_int", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Int, variant.toInt());
|
||||
return std::make_tuple(variant.userType() == QMetaType::Int, variant.toInt());
|
||||
});
|
||||
m.def("qvariant_from_bool", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Bool, variant.toBool());
|
||||
return std::make_tuple(variant.userType() == QMetaType::Bool, variant.toBool());
|
||||
});
|
||||
m.def("qvariant_from_str", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::String,
|
||||
return std::make_tuple(variant.userType() == QMetaType::QString,
|
||||
variant.toString());
|
||||
});
|
||||
m.def("qvariant_from_list", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::List, variant.toList());
|
||||
return std::make_tuple(variant.userType() == QMetaType::QVariantList,
|
||||
variant.toList());
|
||||
});
|
||||
m.def("qvariant_from_map", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Map, variant.toMap());
|
||||
return std::make_tuple(variant.userType() == QMetaType::QVariantMap,
|
||||
variant.toMap());
|
||||
});
|
||||
|
||||
m.def("qvariant_none", []() {
|
||||
|
||||
Reference in New Issue
Block a user