From 9f4254a94eba886de6960351e8ca20e40622b4ee Mon Sep 17 00:00:00 2001 From: Ivan Komissarov Date: Thu, 11 May 2023 18:21:08 +0300 Subject: js_versionCompare: allow build number It is not clear why it worked before. Task-number: QBS-1733 Change-Id: Ib870f669d9151c91635b7078fae8cb217c9955f3 Reviewed-by: Christian Kandeler --- tests/auto/blackbox/testdata/whole-archive/whole-archive.qbs | 1 + 1 file changed, 1 insertion(+) (limited to 'tests') diff --git a/tests/auto/blackbox/testdata/whole-archive/whole-archive.qbs b/tests/auto/blackbox/testdata/whole-archive/whole-archive.qbs index ec46938ab..c138e46c0 100644 --- a/tests/auto/blackbox/testdata/whole-archive/whole-archive.qbs +++ b/tests/auto/blackbox/testdata/whole-archive/whole-archive.qbs @@ -33,6 +33,7 @@ Project { property string dummy: product.linkWholeArchive // To force probe re-execution configure: { if (!toolchain.includes("msvc") + || toolchain.includes("clang-cl") || Utilities.versionCompare(compilerVersion, "19.0.24215.1") >= 0) { console.info("can link whole archives"); } else { -- cgit v1.2.3 From 610508fcbf95b16567a17f53fd370f9b0ae3505b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 16 May 2023 17:14:03 +0200 Subject: Properly handle non-string exceptions Fixes: QBS-1734 Change-Id: If7901dc698fdd5ee44021a3b92cf28295123eccc Reviewed-by: Ivan Komissarov --- tests/auto/language/testdata/throw.qbs | 16 ++++++++++++++++ tests/auto/language/tst_language.cpp | 35 ++++++++++++++++++++++++++++++++++ tests/auto/language/tst_language.h | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 tests/auto/language/testdata/throw.qbs (limited to 'tests') diff --git a/tests/auto/language/testdata/throw.qbs b/tests/auto/language/testdata/throw.qbs new file mode 100644 index 000000000..e9a97efb5 --- /dev/null +++ b/tests/auto/language/testdata/throw.qbs @@ -0,0 +1,16 @@ +Project { + property string throwType + property bool dummy: { + if (throwType === "bool") + throw true; + if (throwType === "int") + throw 43; + if (throwType === "string") + throw "an error"; + if (throwType === "list") + throw ["an", "error"]; + if (throwType === "object") + throw { result: "crash", reason: "overheating" }; + throw "type missing"; + } +} diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp index 50269a7d7..9045442c9 100644 --- a/tests/auto/language/tst_language.cpp +++ b/tests/auto/language/tst_language.cpp @@ -65,6 +65,7 @@ #include #include +#include #include #include @@ -371,6 +372,40 @@ void TestLanguage::rfc1034Identifier() QCOMPARE(exceptionCaught, false); } +void TestLanguage::throwThings_data() +{ + QTest::addColumn("type"); + QTest::addColumn("result"); + QTest::addRow("bool") << "bool" << "true"; + QTest::addRow("int") << "int" << "43"; + QTest::addRow("string") << "string" << "an error"; + QTest::addRow("list") << "list" << R"([ + "an", + "error" +])"; + QTest::addRow("object") << "object" << R"({ + "reason": "overheating", + "result": "crash" +})"; +} + +void TestLanguage::throwThings() +{ + QFETCH(QString, type); + QFETCH(QString, result); + bool exceptionCaught = false; + try { + SetupProjectParameters params = defaultParameters; + params.setProjectFilePath(testProject("throw.qbs")); + params.setOverriddenValues({{"project.throwType", type}}); + loader->loadProject(params); + } catch (const ErrorInfo &e) { + exceptionCaught = true; + QVERIFY2(e.toString().contains(result), qPrintable(e.toString())); + } + QVERIFY(exceptionCaught); +} + void TestLanguage::conditionalDepends() { bool exceptionCaught = false; diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h index 4fe2752e4..e72259a0f 100644 --- a/tests/auto/language/tst_language.h +++ b/tests/auto/language/tst_language.h @@ -177,6 +177,8 @@ private slots: void qualifiedId(); void recursiveProductDependencies(); void rfc1034Identifier(); + void throwThings_data(); + void throwThings(); void useInternalProfile(); void versionCompare(); void wildcards_data(); -- cgit v1.2.3