From de8c90e9d991a4ab04d34aa05ccffd74695d68d7 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 16 Sep 2021 10:45:45 +0200 Subject: [PATCH] Meson: Fix autotests Change-Id: I5f690efe9db19ef8ae6f86ed5556b4939bb52a05 Reviewed-by: Jarek Kobus --- qbs/imports/QtcAutotest.qbs | 11 ++++++++--- .../mesonprojectmanager/CMakeLists.txt | 5 +++++ .../mesonprojectmanager.qbs | 14 +++++++------- .../tests/testmesoninfoparser.cpp | 19 +++++++++++++++++-- .../tests/testmesonwrapper.cpp | 19 +++++++++++++++++-- 5 files changed, 54 insertions(+), 14 deletions(-) diff --git a/qbs/imports/QtcAutotest.qbs b/qbs/imports/QtcAutotest.qbs index 801cfd045c1..91427f75115 100644 --- a/qbs/imports/QtcAutotest.qbs +++ b/qbs/imports/QtcAutotest.qbs @@ -17,9 +17,14 @@ QtcProduct { project.buildDirectory + '/' + qtc.ide_library_path, project.buildDirectory + '/' + qtc.ide_plugin_path ] - cpp.defines: base.filter(function(d) { - return d !== "QT_RESTRICTED_CAST_FROM_ASCII"; - }) + cpp.defines: { + var defines = base.filter(function(d) { return d !== "QT_RESTRICTED_CAST_FROM_ASCII"; }); + var absLibExecPath = FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, + qtc.ide_libexec_path); + var relLibExecPath = FileInfo.relativePath(destinationDirectory, absLibExecPath); + defines.push('TEST_RELATIVE_LIBEXEC_PATH="' + relLibExecPath + '"'); + return defines; + } Group { fileTagsFilter: product.type diff --git a/src/plugins/mesonprojectmanager/CMakeLists.txt b/src/plugins/mesonprojectmanager/CMakeLists.txt index f25c9b28f69..1e2aef3744e 100644 --- a/src/plugins/mesonprojectmanager/CMakeLists.txt +++ b/src/plugins/mesonprojectmanager/CMakeLists.txt @@ -86,6 +86,9 @@ add_qtc_plugin(MesonProjectManager resources.qrc ) +file(RELATIVE_PATH RELATIVE_TEST_PATH "${PROJECT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") +file(RELATIVE_PATH TEST_RELATIVE_LIBEXEC_PATH "/${RELATIVE_TEST_PATH}" "/${IDE_LIBEXEC_PATH}") + if(WITH_TESTS) add_qtc_test(tst_mesonwrapper INCLUDES @@ -96,6 +99,7 @@ add_qtc_test(tst_mesonwrapper DEFINES MESON_SAMPLES_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/resources" MESON_SAMPLES_BUILD_DIR="${CMAKE_CURRENT_BINARY_DIR}" + TEST_RELATIVE_LIBEXEC_PATH="${TEST_RELATIVE_LIBEXEC_PATH}" SOURCES tests/testmesonwrapper.cpp exewrappers/mesonwrapper.cpp @@ -115,6 +119,7 @@ add_qtc_test(tst_mesoninfoparser DEFINES MESON_SAMPLES_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/resources" MESON_SAMPLES_BUILD_DIR="${CMAKE_CURRENT_BINARY_DIR}" + TEST_RELATIVE_LIBEXEC_PATH="${TEST_RELATIVE_LIBEXEC_PATH}" SOURCES tests/testmesoninfoparser.cpp exewrappers/mesonwrapper.cpp diff --git a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs index f3e8de5d68c..2aed9f3b783 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs +++ b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs @@ -110,13 +110,13 @@ Project { } QtcAutotest { - name: "tst_mesonwrapper" + name: "mesonwrapper" condition: project.withAutotests Depends { name: "Core" } Depends { name: "Utils" } - cpp.defines: project.testDefines + cpp.defines: base.concat(project.testDefines) cpp.includePaths: "." files: [ @@ -131,13 +131,13 @@ Project { } QtcAutotest { - name: "tst_mesoninfoparser" + name: "mesoninfoparser" condition: project.withAutotests Depends { name: "Core" } Depends { name: "Utils" } - cpp.defines: project.testDefines + cpp.defines: base.concat(project.testDefines) cpp.includePaths: "." files: [ @@ -153,7 +153,7 @@ Project { } QtcAutotest { - name: "tst_ninjaparser" + name: "ninjaparser" condition: project.withAutotests Depends { name: "Core" } @@ -171,14 +171,14 @@ Project { } QtcAutotest { - name: "tst_mesonparser" + name: "mesonparser" condition: project.withAutotests Depends { name: "Core" } Depends { name: "ProjectExplorer" } Depends { name: "Utils" } - cpp.defines: "MESONPARSER_DISABLE_TASKS_FOR_TESTS" + cpp.defines: base.concat("MESONPARSER_DISABLE_TASKS_FOR_TESTS") cpp.includePaths: "." files: [ diff --git a/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp b/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp index 1b91ffcc1dd..cbbf9042daf 100644 --- a/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp +++ b/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp @@ -26,6 +26,10 @@ #include "exewrappers/mesonwrapper.h" #include "mesoninfoparser/mesoninfoparser.h" +#include +#include + +#include #include #include #include @@ -73,7 +77,12 @@ class AMesonInfoParser : public QObject Q_OBJECT private slots: - void initTestCase() {} + void initTestCase() + { + Utils::LauncherInterface::startLauncher( + QCoreApplication::instance()->applicationDirPath() + '/' + + QLatin1String(TEST_RELATIVE_LIBEXEC_PATH)); + } void shouldListTargets_data() { @@ -110,7 +119,13 @@ private slots: }) } - void cleanupTestCase() {} + void cleanupTestCase() + { + Utils::LauncherInterface::stopLauncher(); + } + +private: + Utils::ProcessReaper processReaper; }; QTEST_MAIN(AMesonInfoParser) diff --git a/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp b/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp index 8bca81083bd..c257434151c 100644 --- a/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp +++ b/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp @@ -25,6 +25,10 @@ #include "exewrappers/mesonwrapper.h" +#include +#include + +#include #include #include #include @@ -44,7 +48,12 @@ class AMesonWrapper : public QObject Q_OBJECT private slots: - void initTestCase() {} + void initTestCase() + { + Utils::LauncherInterface::startLauncher( + QCoreApplication::instance()->applicationDirPath() + '/' + + QLatin1String(TEST_RELATIVE_LIBEXEC_PATH)); + } void shouldFindMesonFromPATH() { @@ -104,7 +113,13 @@ private slots: Utils::FilePath::fromString(build_dir.path())))); } - void cleanupTestCase() {} + void cleanupTestCase() + { + Utils::LauncherInterface::stopLauncher(); + } + +private: + Utils::ProcessReaper processReaper; }; QTEST_MAIN(AMesonWrapper)