diff options
-rw-r--r-- | src/lib/corelib/buildgraph/processcommandexecutor.cpp | 4 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/output-redirection/input.bin | bin | 0 -> 1024 bytes | |||
-rw-r--r-- | tests/auto/blackbox/testdata/output-redirection/input.txt | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/output-redirection/output-redirection.qbs | 38 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/output-redirection/output.bin | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | tests/auto/blackbox/testdata/output-redirection/output.txt | 2 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 8 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 1 |
8 files changed, 53 insertions, 1 deletions
diff --git a/src/lib/corelib/buildgraph/processcommandexecutor.cpp b/src/lib/corelib/buildgraph/processcommandexecutor.cpp index f8a86cfe8..79edda320 100644 --- a/src/lib/corelib/buildgraph/processcommandexecutor.cpp +++ b/src/lib/corelib/buildgraph/processcommandexecutor.cpp @@ -277,7 +277,9 @@ void ProcessCommandExecutor::getProcessOutput(bool stdOut, ProcessResult &result } QString contentString = filterProcessOutput(content, filterFunction); if (!redirectPath.isEmpty()) { - const QProcess::ProcessError error = saveToFile(redirectPath, contentString.toLocal8Bit()); + const QByteArray dataToWrite = filterFunction.isEmpty() ? content + : contentString.toLocal8Bit(); + const QProcess::ProcessError error = saveToFile(redirectPath, dataToWrite); if (result.error() == QProcess::UnknownError && error != QProcess::UnknownError) result.d->error = error; } else { diff --git a/tests/auto/blackbox/testdata/output-redirection/input.bin b/tests/auto/blackbox/testdata/output-redirection/input.bin Binary files differnew file mode 100644 index 000000000..2b231c7a8 --- /dev/null +++ b/tests/auto/blackbox/testdata/output-redirection/input.bin diff --git a/tests/auto/blackbox/testdata/output-redirection/input.txt b/tests/auto/blackbox/testdata/output-redirection/input.txt new file mode 100644 index 000000000..0ba7b6bf7 --- /dev/null +++ b/tests/auto/blackbox/testdata/output-redirection/input.txt @@ -0,0 +1 @@ +this is a plain text file diff --git a/tests/auto/blackbox/testdata/output-redirection/output-redirection.qbs b/tests/auto/blackbox/testdata/output-redirection/output-redirection.qbs new file mode 100644 index 000000000..3ee443438 --- /dev/null +++ b/tests/auto/blackbox/testdata/output-redirection/output-redirection.qbs @@ -0,0 +1,38 @@ +import qbs.FileInfo + +Product { + name: "the-product" + type: "output" + Group { + files: "input.bin" + fileTags: "binary" + } + Group { + files: "input.txt" + fileTags: "text" + } + + Rule { + inputs: ["text", "binary"] + Artifact { + filePath: "output." + FileInfo.completeSuffix(input.filePath) + fileTags: "output" + } + prepare: { + var binary; + var prefixArgs; + if (product.qbs.hostOS.contains("windows")) { + binary = product.qbs.windowsShellPath; + prefixArgs = ["/c", "type"]; + } else { + binary = "cat"; + prefixArgs = []; + } + var inputPath = FileInfo.toNativeSeparators(input.filePath); + var cmd = new Command(binary, prefixArgs.concat([inputPath, inputPath])); + cmd.stdoutFilePath = output.filePath; + cmd.highlight = "filegen"; + return cmd; + } + } +} diff --git a/tests/auto/blackbox/testdata/output-redirection/output.bin b/tests/auto/blackbox/testdata/output-redirection/output.bin Binary files differnew file mode 100644 index 000000000..efb4ec03b --- /dev/null +++ b/tests/auto/blackbox/testdata/output-redirection/output.bin diff --git a/tests/auto/blackbox/testdata/output-redirection/output.txt b/tests/auto/blackbox/testdata/output-redirection/output.txt new file mode 100644 index 000000000..e309ab1af --- /dev/null +++ b/tests/auto/blackbox/testdata/output-redirection/output.txt @@ -0,0 +1,2 @@ +this is a plain text file +this is a plain text file diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 31a5a92ae..a2e8238c9 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -6306,6 +6306,14 @@ void TestBlackbox::outputArtifactAutoTagging() QVERIFY(regularFileExists(relativeExecutableFilePath("output-artifact-auto-tagging"))); } +void TestBlackbox::outputRedirection() +{ + QDir::setCurrent(testDataDir + "/output-redirection"); + QCOMPARE(runQbs(), 0); + TEXT_FILE_COMPARE("output.txt", relativeProductBuildDir("the-product") + "/output.txt"); + TEXT_FILE_COMPARE("output.bin", relativeProductBuildDir("the-product") + "/output.bin"); +} + void TestBlackbox::wildCardsAndRules() { QDir::setCurrent(testDataDir + "/wildcards-and-rules"); diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index 4c1268912..ba511ed10 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -209,6 +209,7 @@ private slots: void nsisDependencies(); void outOfDateMarking(); void outputArtifactAutoTagging(); + void outputRedirection(); void overrideProjectProperties(); void pathProbe_data(); void pathProbe(); |