aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar Yun Peng <pcloudy@google.com>2017-06-13 16:21:15 +0200
committerGravatar Yun Peng <pcloudy@google.com>2017-06-13 17:13:28 +0200
commit9b3f76ee2731cb951177cb2d656de8bbf0d4a4b5 (patch)
treea6bf7039ca3aeab50e48f3697d2976da9d9a93eb /src/test/java/com/google
parentcec624e756d0090cda440937dd00da542d3932bd (diff)
Also filter stderr when parse_showincludes feature is enabled
On Windows, cl.exe generates include information to stdout. But when using the cuda compiler(nvcc.exe) to invoke cl.exe, it's redirected to stderr. So we need to parse the output of stderr as well. Change-Id: I9a763a6eefa531932bf1077ef4155f6bda934240 PiperOrigin-RevId: 158842448
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/ShowIncludesFilterTest.java22
2 files changed, 22 insertions, 1 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index e2f14af56a..e34417ee6a 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -925,6 +925,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:bazel-main",
"//src/main/java/com/google/devtools/build/lib:bazel-rules",
"//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/build/lib:inmemoryfs",
"//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:util",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/ShowIncludesFilterTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/ShowIncludesFilterTest.java
index 6e897d002c..a70a24ad29 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/ShowIncludesFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/ShowIncludesFilterTest.java
@@ -17,6 +17,9 @@ package com.google.devtools.build.lib.rules.cpp;
import static com.google.common.truth.Truth.assertThat;
import static java.nio.charset.StandardCharsets.UTF_8;
+import com.google.devtools.build.lib.util.io.FileOutErr;
+import com.google.devtools.build.lib.vfs.FileSystem;
+import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
import java.io.ByteArrayOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
@@ -32,12 +35,16 @@ public class ShowIncludesFilterTest {
private ShowIncludesFilter showIncludesFilter;
private ByteArrayOutputStream output;
private FilterOutputStream filterOutputStream;
+ private FileSystem fs;
+ private FileOutErr outErr;
@Before
- public void setUpOutputStreams() {
+ public void setUpOutputStreams() throws IOException {
showIncludesFilter = new ShowIncludesFilter("foo.cpp");
output = new ByteArrayOutputStream();
filterOutputStream = showIncludesFilter.getFilteredOutputStream(output);
+ fs = new InMemoryFileSystem();
+ fs.getRootDirectory().getChild("out").createDirectory();
}
private byte[] getBytes(String str) {
@@ -105,4 +112,17 @@ public class ShowIncludesFilterTest {
filterOutputStream.flush();
assertThat(output.toString()).isEqualTo("foo.h");
}
+
+ @Test
+ public void testOnFileOutErr() throws IOException {
+ outErr = new FileOutErr(fs.getPath("/out/stdout"), fs.getPath("/out/stderr"));
+ ShowIncludesFilter showIncludesFilterForStdout = new ShowIncludesFilter("foo.cpp");
+ ShowIncludesFilter showIncludesFilterForStderr = new ShowIncludesFilter("foo.cpp");
+ outErr.setOutputFilter(showIncludesFilterForStdout);
+ outErr.setErrorFilter(showIncludesFilterForStderr);
+ outErr.getOutputStream().write(getBytes("Note: including file: bar1.h\n"));
+ outErr.getErrorStream().write(getBytes("Note: including file: bar2.h\n"));
+ assertThat(showIncludesFilterForStdout.getDependencies()).contains("bar1.h");
+ assertThat(showIncludesFilterForStderr.getDependencies()).contains("bar2.h");
+ }
}