diff options
Diffstat (limited to 'tests/auto/blackbox/tst_blackbox.cpp')
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 19676d050..a2e8238c9 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2019 Jochen Ulrich <jochenulrich@t-online.de> ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -1805,14 +1806,17 @@ void TestBlackbox::separateDebugInfo() { QDir::setCurrent(testDataDir + "/separate-debug-info"); QCOMPARE(runQbs(QbsRunParameters(QStringList("qbs.debugInformation:true"))), 0); + const bool isWindows = m_qbsStdout.contains("is windows: yes"); + const bool isNotWindows = m_qbsStdout.contains("is windows: no"); + QVERIFY(isWindows != isNotWindows); + const bool isDarwin = m_qbsStdout.contains("is darwin: yes"); + const bool isNotDarwin = m_qbsStdout.contains("is darwin: no"); + QVERIFY(isDarwin != isNotDarwin); const SettingsPtr s = settings(); Profile buildProfile(profileName(), s.get()); QStringList toolchain = buildProfile.value("qbs.toolchain").toStringList(); - std::string targetPlatform = buildProfile.value("qbs.targetPlatform").toString().toStdString(); - std::vector<std::string> targetOS = HostOsInfo::canonicalOSIdentifiers(targetPlatform); - if (qbs::Internal::contains(targetOS, "darwin") - || (targetPlatform.empty() && HostOsInfo::isMacosHost())) { + if (isDarwin) { QVERIFY(directoryExists(relativeProductBuildDir("app1") + "/app1.app.dSYM")); QVERIFY(regularFileExists(relativeProductBuildDir("app1") + "/app1.app.dSYM/Contents/Info.plist")); @@ -1877,7 +1881,6 @@ void TestBlackbox::separateDebugInfo() .entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries).size(), 1); QVERIFY(regularFileExists(relativeProductBuildDir("bar5") + "/bar5.bundle.dwarf")); } else if (toolchain.contains("gcc")) { - const bool isWindows = qbs::Internal::contains(targetOS, "windows"); const QString exeSuffix = isWindows ? ".exe" : ""; const QString dllPrefix = isWindows ? "" : "lib"; const QString dllSuffix = isWindows ? ".dll" : ".so"; @@ -4353,6 +4356,18 @@ void TestBlackbox::lexyacc() QCOMPARE(runQbs(), 0); const QString parserBinary = relativeExecutableFilePath("one-grammar"); QProcess p; + const QByteArray magicString = "add to PATH: "; + const int magicStringIndex = m_qbsStdout.indexOf(magicString); + if (magicStringIndex != -1) { + const int newLineIndex = m_qbsStdout.indexOf('\n', magicStringIndex); + QVERIFY(newLineIndex != -1); + const int dirIndex = magicStringIndex + magicString.length(); + const QString dir = QString::fromLocal8Bit(m_qbsStdout.mid(dirIndex, + newLineIndex - dirIndex)); + QProcessEnvironment env; + env.insert("PATH", dir); + p.setProcessEnvironment(env); + } p.start(parserBinary); QVERIFY2(p.waitForStarted(), qPrintable(p.errorString())); p.write("a && b || c && !d"); @@ -5624,6 +5639,34 @@ void TestBlackbox::autotestWithDependencies() && m_qbsStdout.contains("i am the helper"), m_qbsStdout.constData()); } +void TestBlackbox::autotestTimeout() +{ + QFETCH(QStringList, resolveParams); + QFETCH(bool, expectFailure); + QDir::setCurrent(testDataDir + "/autotest-timeout"); + QbsRunParameters resolveParameters("resolve", resolveParams); + QCOMPARE(runQbs(resolveParameters), 0); + QbsRunParameters buildParameters(QStringList({"-p", "autotest-runner"})); + buildParameters.expectFailure = expectFailure; + if (expectFailure) { + QVERIFY(runQbs(buildParameters) != 0); + QVERIFY(m_qbsStderr.contains("cancelled") && m_qbsStderr.contains("timeout")); + } + else + QVERIFY(runQbs(buildParameters) == 0); +} + +void TestBlackbox::autotestTimeout_data() +{ + QTest::addColumn<QStringList>("resolveParams"); + QTest::addColumn<bool>("expectFailure"); + QTest::newRow("no timeout") << QStringList() << false; + QTest::newRow("timeout on test") << QStringList({"products.testApp.autotest.timeout:2"}) + << true; + QTest::newRow("timeout on runner") << QStringList({"products.autotest-runner.timeout:2"}) + << true; +} + void TestBlackbox::autotests_data() { QTest::addColumn<QString>("evilPropertySpec"); |