diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2014-11-03 11:29:14 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2014-11-03 11:29:14 +0100 |
commit | 8821b89c074b5901c6a2dc3b3756cd9531698ca7 (patch) | |
tree | 0c9058169127a9728b6664e914b77d63896b7f6f /tests/auto | |
parent | 4b736ac6bd882d0d09ecb0de31faa03b089fe2dc (diff) | |
parent | 0d1b18c7ad5bbfe4507f33d5f726b46f39d08677 (diff) |
Merge remote-tracking branch 'origin/1.3'
Conflicts:
tests/auto/api/tst_api.h
Change-Id: I1f9cb9105f4ed2c428729810b7a7079d11e90957
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/api/testdata/command-extraction/main.cpp | 1 | ||||
-rw-r--r-- | tests/auto/api/testdata/command-extraction/project.qbs | 5 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 43 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/change-in-disabled-product/project.qbs | 9 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/change-in-disabled-product/test1.txt | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/change-in-disabled-product/test2.txt | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 15 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 1 |
9 files changed, 75 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/command-extraction/main.cpp b/tests/auto/api/testdata/command-extraction/main.cpp new file mode 100644 index 000000000..237c8ce18 --- /dev/null +++ b/tests/auto/api/testdata/command-extraction/main.cpp @@ -0,0 +1 @@ +int main() {} diff --git a/tests/auto/api/testdata/command-extraction/project.qbs b/tests/auto/api/testdata/command-extraction/project.qbs new file mode 100644 index 000000000..73b66aaa0 --- /dev/null +++ b/tests/auto/api/testdata/command-extraction/project.qbs @@ -0,0 +1,5 @@ +import qbs + +CppApplication { + files: "main.cpp" +} diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp index 9b72c0f04..d488068e3 100644 --- a/tests/auto/api/tst_api.cpp +++ b/tests/auto/api/tst_api.cpp @@ -682,6 +682,49 @@ void TestApi::changeContent() #endif // QBS_ENABLE_PROJECT_FILE_UPDATES +void TestApi::commandExtraction() +{ + qbs::SetupProjectParameters setupParams + = defaultSetupParameters("/command-extraction/project.qbs"); + QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams, + m_logSink, 0)); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); + qbs::Project project = setupJob->project(); + qbs::ProjectData projectData = project.projectData(); + QCOMPARE(projectData.allProducts().count(), 1); + qbs::ProductData productData = projectData.allProducts().first(); + qbs::ErrorInfo errorInfo; + const QString projectDirPath = QDir::cleanPath(QFileInfo(setupParams.projectFilePath()).path()); + const QString sourceFilePath = projectDirPath + "/main.cpp"; + + // Before the first build, no rules exist. + qbs::RuleCommandList commands + = project.ruleCommands(productData, sourceFilePath, "obj", &errorInfo); + QCOMPARE(commands.count(), 0); + QVERIFY(errorInfo.hasError()); + QVERIFY2(errorInfo.toString().contains("No rule"), qPrintable(errorInfo.toString())); + + qbs::BuildOptions options; + options.setDryRun(true); + QScopedPointer<qbs::BuildJob> buildJob(project.buildAllProducts(options)); + waitForFinished(buildJob.data()); + QVERIFY2(!buildJob->error().hasError(), qPrintable(buildJob->error().toString())); + projectData = project.projectData(); + QCOMPARE(projectData.allProducts().count(), 1); + productData = projectData.allProducts().first(); + errorInfo = qbs::ErrorInfo(); + + // After the build, the compile command must be found. + commands = project.ruleCommands(productData, sourceFilePath, "obj", &errorInfo); + QCOMPARE(commands.count(), 1); + QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + const qbs::RuleCommand command = commands.first(); + QCOMPARE(command.type(), qbs::RuleCommand::ProcessCommandType); + QVERIFY(!command.executable().isEmpty()); + QVERIFY(!command.arguments().isEmpty()); +} + void TestApi::changeDependentLib() { qbs::ErrorInfo errorInfo = doBuildProject("change-dependent-lib/change-dependent-lib.qbs"); diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h index 47bfb829d..3f0f19145 100644 --- a/tests/auto/api/tst_api.h +++ b/tests/auto/api/tst_api.h @@ -65,6 +65,7 @@ private slots: #ifdef QBS_ENABLE_PROJECT_FILE_UPDATES void changeContent(); #endif + void commandExtraction(); void changeDependentLib(); void enableAndDisableProduct(); void disabledInstallGroup(); diff --git a/tests/auto/blackbox/testdata/change-in-disabled-product/project.qbs b/tests/auto/blackbox/testdata/change-in-disabled-product/project.qbs new file mode 100644 index 000000000..8a99d2c8c --- /dev/null +++ b/tests/auto/blackbox/testdata/change-in-disabled-product/project.qbs @@ -0,0 +1,9 @@ +import qbs + +Product { + condition: false + files: [ + 'test1.txt', + // 'test2.txt' + ] +} diff --git a/tests/auto/blackbox/testdata/change-in-disabled-product/test1.txt b/tests/auto/blackbox/testdata/change-in-disabled-product/test1.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata/change-in-disabled-product/test1.txt diff --git a/tests/auto/blackbox/testdata/change-in-disabled-product/test2.txt b/tests/auto/blackbox/testdata/change-in-disabled-product/test2.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata/change-in-disabled-product/test2.txt diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 7f1f21252..6537fd5d3 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -242,6 +242,21 @@ void TestBlackbox::changedFiles() QVERIFY2(m_qbsStdout.contains("file1.cpp"), m_qbsStdout.constData()); } +void TestBlackbox::changeInDisabledProduct() +{ + QDir::setCurrent(testDataDir + "/change-in-disabled-product"); + QCOMPARE(runQbs(), 0); + waitForNewTimestamp(); + QFile projectFile("project.qbs"); + QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); + QByteArray content = projectFile.readAll(); + content.replace("// 'test2.txt'", "'test2.txt'"); + projectFile.resize(0); + projectFile.write(content); + projectFile.close(); + QCOMPARE(runQbs(), 0); +} + void TestBlackbox::dependenciesProperty() { QDir::setCurrent(testDataDir + QLatin1String("/dependenciesProperty")); diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index f83c5b4c6..459b2e071 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -96,6 +96,7 @@ private slots: void buildDirectories(); void changedFiles_data(); void changedFiles(); + void changeInDisabledProduct(); void dependenciesProperty(); void dynamicMultiplexRule(); void dynamicRuleOutputs(); |