diff options
author | Jake Petroules <jake.petroules@qt.io> | 2016-12-07 01:33:23 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2016-12-07 22:55:09 +0000 |
commit | 8cd0f9be320c821d1e54b6b52afea0695757b536 (patch) | |
tree | 913369d1b823021b29e5a7f5dad766923b5ed4a4 | |
parent | 28af1e508aee74f90f718a082fe4095910e5a731 (diff) |
Downgrade error message from JavaCompilerScanner to a warning
This is not actually fatal, as Qbs collects dependency information both
from the TreePathScanner API *and* the output files the compilation
process writes to. Instead, downgrade it to a warning and also point
users to the bug report. This fixes a regression from 1.5.x.
Adds an XFAIL'ing autotest.
Task-number: QBS-1069
Change-Id: I30e5f5d0d1554bf5078509768fdad12f20922319
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
6 files changed, 35 insertions, 4 deletions
diff --git a/share/qbs/modules/java/io/qt/qbs/tools/utils/JavaCompilerScanner.java b/share/qbs/modules/java/io/qt/qbs/tools/utils/JavaCompilerScanner.java index 368f5519e..1be804ee5 100644 --- a/share/qbs/modules/java/io/qt/qbs/tools/utils/JavaCompilerScanner.java +++ b/share/qbs/modules/java/io/qt/qbs/tools/utils/JavaCompilerScanner.java @@ -156,11 +156,18 @@ public class JavaCompilerScanner { Collections.sort(parsedOutputFilePathsArray); ArrayList<String> compilationOutputFilePathsArray = new ArrayList<String>(compilationOutputFilePaths); Collections.sort(compilationOutputFilePathsArray); + compilationOutputFilePaths.removeAll(parsedOutputFilePaths); + ArrayList<String> differenceArray = new ArrayList<String>(compilationOutputFilePaths); + Collections.sort(differenceArray); - throw new RuntimeException("The set of output files determined by source code parsing:\n\n" + System.err.println("The set of output files determined by source code parsing:\n\n" + join("\n", parsedOutputFilePathsArray) + "\n\n" - + "is missing some files that would be produced by the compiler:\n\n" - + join("\n", compilationOutputFilePathsArray) + "\n"); + + "is missing some files from the list that would be produced by the compiler:\n\n" + + join("\n", compilationOutputFilePathsArray) + "\n\n" + + "The missing files are:\n\n" + + join("\n", differenceArray) + "\n\n" + + "Compilation will still continue, though a build error *might* appear later;\n" + + "please check the bug report at https://bugreports.qt.io/browse/QBS-1069\n"); } return !parsedOutputFilePaths.isEmpty() ? 0 : 1; diff --git a/share/qbs/modules/java/utils.js b/share/qbs/modules/java/utils.js index 7e3679a5e..632fc8102 100644 --- a/share/qbs/modules/java/utils.js +++ b/share/qbs/modules/java/utils.js @@ -303,7 +303,9 @@ function outputArtifacts(product, inputs) { ]; process.exec(ModUtils.moduleProperty(product, "interpreterFilePath"), javaArgs .concat(javacArguments(product, inputs, helperOverrideArgs(product))), true); - return JSON.parse(process.readStdOut()); + var out = JSON.parse(process.readStdOut()); + console.error(process.readStdErr()); + return out; } finally { if (process) process.close(); diff --git a/tests/auto/blackbox/testdata-java/java/inner-class/InnerClass.java b/tests/auto/blackbox/testdata-java/java/inner-class/InnerClass.java new file mode 100644 index 000000000..3e0333ecb --- /dev/null +++ b/tests/auto/blackbox/testdata-java/java/inner-class/InnerClass.java @@ -0,0 +1,6 @@ +public class InnerClass { + private final InnerInnerClass clazz = new InnerInnerClass(); + + private class InnerInnerClass { + } +} diff --git a/tests/auto/blackbox/testdata-java/java/inner-class/inner-class.qbs b/tests/auto/blackbox/testdata-java/java/inner-class/inner-class.qbs new file mode 100644 index 000000000..5bc861f5d --- /dev/null +++ b/tests/auto/blackbox/testdata-java/java/inner-class/inner-class.qbs @@ -0,0 +1,5 @@ +import qbs + +JavaJarFile { + files: ["**/*.java"] +} diff --git a/tests/auto/blackbox/tst_blackboxjava.cpp b/tests/auto/blackbox/tst_blackboxjava.cpp index ba00de997..87cb92436 100644 --- a/tests/auto/blackbox/tst_blackboxjava.cpp +++ b/tests/auto/blackbox/tst_blackboxjava.cpp @@ -288,4 +288,14 @@ void TestBlackboxJava::javaDependencyTracking() QSKIP("No JDKs installed"); } +void TestBlackboxJava::javaDependencyTrackingInnerClass() +{ + QDir::setCurrent(testDataDir + "/java/inner-class"); + QbsRunParameters params; + params.expectFailure = true; + QCOMPARE(runQbs(params), 0); + QEXPECT_FAIL(0, "QBS-1069", Abort); + QVERIFY(!m_qbsStderr.contains("QBS-1069")); +} + QTEST_MAIN(TestBlackboxJava) diff --git a/tests/auto/blackbox/tst_blackboxjava.h b/tests/auto/blackbox/tst_blackboxjava.h index 124c992a6..40f1b1636 100644 --- a/tests/auto/blackbox/tst_blackboxjava.h +++ b/tests/auto/blackbox/tst_blackboxjava.h @@ -43,6 +43,7 @@ private slots: void android_data(); void java(); void javaDependencyTracking(); + void javaDependencyTrackingInnerClass(); private: QMap<QString, QString> findAndroid(int *status); |