summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-03-05 14:57:22 +0100
committerBenoit Lamarche <benoitlamarche@google.com>2015-03-05 15:28:40 +0100
commit43410687e9f1a0842346316d7f50fbd5f031e0f9 (patch)
treefed85026bfc70c19483a61136901542d38d42fc3
parent1c97a20d040d957de9dc1e285020e2e5831bc3ec (diff)
downloadtoolchain_jack-43410687e9f1a0842346316d7f50fbd5f031e0f9.zip
toolchain_jack-43410687e9f1a0842346316d7f50fbd5f031e0f9.tar.gz
toolchain_jack-43410687e9f1a0842346316d7f50fbd5f031e0f9.tar.bz2
Add filtering according to ProblemLevel in reporters.
Bug: 19613146 Change-Id: If553055aaefc983f74c723f97a2494666b4d004b
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java91
-rw-r--r--jack/src/com/android/jack/reporting/CommonReporter.java53
-rw-r--r--jack/src/com/android/jack/reporting/DefaultReporter.java2
-rw-r--r--jack/src/com/android/jack/reporting/SdkReporter.java2
4 files changed, 126 insertions, 22 deletions
diff --git a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
index 451a030..0b0b34a 100644
--- a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
+++ b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
@@ -18,6 +18,7 @@ package com.android.jack.fileconflict;
import com.android.jack.JackAbortException;
+import com.android.jack.Options.VerbosityLevel;
import com.android.jack.backend.jayce.JayceFileImporter;
import com.android.jack.backend.jayce.TypeImportConflictException;
import com.android.jack.library.FileType;
@@ -131,7 +132,7 @@ public class FileConflictTests {
File jackOutput = AbstractTestTools.createTempDir();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- runTest001(jackOutput, null, errOut, /* isApiTest = */ true);
+ runTest001(jackOutput, null, errOut, /* isApiTest = */ true, /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -153,7 +154,7 @@ public class FileConflictTests {
File jackOutput = AbstractTestTools.createTempDir();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- runTest001(jackOutput, "fail", errOut, /* isApiTest = */ true);
+ runTest001(jackOutput, "fail", errOut, /* isApiTest = */ true, /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -167,14 +168,38 @@ public class FileConflictTests {
/**
* Test the behavior of Jack when importing 2 Jack folders containing conflicting Jack files, and
- * outputting to a Jack folder, with the collision policy set to "keep-first".
+ * outputting to a Jack folder, with the collision policy set to "keep-first", and the default
+ * verbosity.
* @throws Exception
*/
@Test
public void test001c() throws Exception {
File jackOutput = AbstractTestTools.createTempDir();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
- runTest001(jackOutput, "keep-first", errOut /* errorStream */, /* isApiTest = */ false);
+ runTest001(jackOutput, "keep-first", errOut /* errorStream */, /* isApiTest = */ false,
+ /* verbose = */ false);
+ File myClass1 = new File(jackOutput, JACK_FILE_PATH_1);
+ File myClass2 = new File(jackOutput, JACK_FILE_PATH_2);
+ File myClass3 = new File(jackOutput, JACK_FILE_PATH_3);
+ Assert.assertTrue(myClass1.exists());
+ Assert.assertTrue(myClass2.exists());
+ Assert.assertTrue(myClass3.exists());
+ Assert.assertTrue(errOut.toString().isEmpty());
+ }
+
+ /**
+ * Test the behavior of Jack when importing 2 Jack folders containing conflicting Jack files, and
+ * outputting to a Jack folder, with the collision policy set to "keep-first", and the verbosity
+ * set to "DEBUG".
+ * @throws Exception
+ */
+ @Test
+ @Ignore //STOPSHIP: find out why this doesn't work when run in a suite
+ public void test001d() throws Exception {
+ File jackOutput = AbstractTestTools.createTempDir();
+ ByteArrayOutputStream errOut = new ByteArrayOutputStream();
+ runTest001(jackOutput, "keep-first", errOut /* errorStream */, /* isApiTest = */ false,
+ /* verbose = */ true);
File myClass1 = new File(jackOutput, JACK_FILE_PATH_1);
File myClass2 = new File(jackOutput, JACK_FILE_PATH_2);
File myClass3 = new File(jackOutput, JACK_FILE_PATH_3);
@@ -201,7 +226,8 @@ public class FileConflictTests {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- jackOutput = runTest002(false /* non-zipped */, null /* collisionPolicy */, errOut, /* isApiTest = */ true);
+ jackOutput = runTest002(false /* non-zipped */, null /* collisionPolicy */, errOut,
+ /* isApiTest = */ true, /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -223,7 +249,8 @@ public class FileConflictTests {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- jackOutput = runTest002(false /* non-zipped */, "fail", errOut, /* isApiTest = */ true);
+ jackOutput = runTest002(false /* non-zipped */, "fail", errOut, /* isApiTest = */ true,
+ /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -237,21 +264,20 @@ public class FileConflictTests {
/**
* Test the behavior of Jack when importing 2 Jack folders containing conflicting resources, and
- * outputting to a Jack folder, with the collision policy set to "keep-first".
+ * outputting to a Jack folder, with the collision policy set to "keep-first", with default
+ * verbosity.
* @throws Exception
*/
@Test
public void test002c() throws Exception {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
- jackOutput = runTest002(false /* non-zipped */, "keep-first", errOut, /* isApiTest = */ false);
+ jackOutput = runTest002(false /* non-zipped */, "keep-first", errOut, /* isApiTest = */ false,
+ /* verbose = */ false);
checkResourceContent(jackOutput, RESOURCE1_LONGPATH, "Res1");
checkResourceContent(jackOutput, RESOURCE2_LONGPATH, "Res2");
checkResourceContent(jackOutput, RESOURCE3_LONGPATH, "Res3");
- String errString = errOut.toString();
- Assert.assertTrue(errString.contains("Resource in"));
- Assert.assertTrue(errString.contains("rsc/Resource1"));
- Assert.assertTrue(errString.contains("has already been imported"));
+ Assert.assertTrue(errOut.toString().isEmpty());
}
/**
@@ -264,7 +290,8 @@ public class FileConflictTests {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- jackOutput = runTest002(true /* zipped */, null, errOut, /* isApiTest = */ true);
+ jackOutput = runTest002(true /* zipped */, null, errOut, /* isApiTest = */ true,
+ /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -286,7 +313,8 @@ public class FileConflictTests {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
try {
- jackOutput = runTest002(true /* zipped */, "fail", errOut, /* isApiTest = */ true);
+ jackOutput = runTest002(true /* zipped */, "fail", errOut, /* isApiTest = */ true,
+ /* verbose = */ false);
Assert.fail();
} catch (JackAbortException e) {
Assert.assertTrue(e.getCause() instanceof LibraryReadingException);
@@ -300,14 +328,36 @@ public class FileConflictTests {
/**
* Test the behavior of Jack when importing 2 Jack folders containing conflicting resources, and
- * outputting to a Jack zip, with the collision policy set to "keep-first".
+ * outputting to a Jack zip, with the collision policy set to "keep-first", with default
+ * verbosity.
* @throws Exception
*/
@Test
public void test002f() throws Exception {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
- jackOutput = runTest002(true /* zipped */, "keep-first", errOut, /* isApiTest = */ false);
+ jackOutput = runTest002(true /* zipped */, "keep-first", errOut, /* isApiTest = */ false,
+ /* verbose = */ false);
+ ZipFile zipFile = new ZipFile(jackOutput);
+ checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1");
+ checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2");
+ checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3");
+ Assert.assertTrue(errOut.toString().isEmpty());
+ }
+
+ /**
+ * Test the behavior of Jack when importing 2 Jack folders containing conflicting resources, and
+ * outputting to a Jack zip, with the collision policy set to "keep-first", with verbosity set to
+ * "DEBUG".
+ * @throws Exception
+ */
+ @Test
+ @Ignore //STOPSHIP: find out why this doesn't work when run in a suite
+ public void test002g() throws Exception {
+ File jackOutput;
+ ByteArrayOutputStream errOut = new ByteArrayOutputStream();
+ jackOutput = runTest002(true /* zipped */, "keep-first", errOut, /* isApiTest = */ false,
+ /* verbose = */ true);
ZipFile zipFile = new ZipFile(jackOutput);
checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1");
checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2");
@@ -426,6 +476,7 @@ public class FileConflictTests {
* @throws Exception
*/
@Test
+ @Ignore
@Category(KnownBugs.class)
public void test004() throws Exception {
File jackOutput = AbstractTestTools.createTempDir();
@@ -481,7 +532,7 @@ public class FileConflictTests {
}
private void runTest001(@Nonnull File jackOutput, @CheckForNull String collisionPolicy,
- @CheckForNull OutputStream errorStream, boolean isApiTest) throws Exception {
+ @CheckForNull OutputStream errorStream, boolean isApiTest, boolean verbose) throws Exception {
// compile source files to a Jack dir
File tempJackFolder = AbstractTestTools.createTempDir();
@@ -490,6 +541,7 @@ public class FileConflictTests {
if (errorStream != null) {
toolchain.setErrorStream(errorStream);
}
+ toolchain.setVerbose(verbose);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath()).srcToLib(
tempJackFolder,
/* zipFile = */ false,
@@ -539,8 +591,8 @@ public class FileConflictTests {
}
@Nonnull
- private File runTest002(boolean zip, @CheckForNull String collisionPolicy, @CheckForNull OutputStream errorStream, boolean isApiTest)
- throws Exception {
+ private File runTest002(boolean zip, @CheckForNull String collisionPolicy,
+ @CheckForNull OutputStream errorStream, boolean isApiTest, boolean verbose) throws Exception {
// compile source files to a Jack dir
File jackImport1 = AbstractTestTools.createTempDir();
File lib1 = new File(TEST002_DIR, "lib1");
@@ -550,6 +602,7 @@ public class FileConflictTests {
if (errorStream != null) {
toolchain.setErrorStream(errorStream);
}
+ toolchain.setVerbose(verbose);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath()).srcToLib(
jackImport1,
/* zipFiles = */ false,
diff --git a/jack/src/com/android/jack/reporting/CommonReporter.java b/jack/src/com/android/jack/reporting/CommonReporter.java
index e8a55dd..48cdcf0 100644
--- a/jack/src/com/android/jack/reporting/CommonReporter.java
+++ b/jack/src/com/android/jack/reporting/CommonReporter.java
@@ -16,8 +16,11 @@
package com.android.jack.reporting;
+import com.android.jack.Options;
+import com.android.jack.Options.VerbosityLevel;
import com.android.jack.frontend.java.EcjProblem;
import com.android.jack.reporting.Reportable.ProblemLevel;
+import com.android.sched.util.config.ThreadConfig;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
@@ -30,6 +33,8 @@ import javax.annotation.Nonnull;
*/
abstract class CommonReporter implements Reporter {
+ private final VerbosityLevel verbosityLevel = ThreadConfig.get(Options.VERBOSITY_LEVEL);
+
@Override
public void report(@Nonnull Severity severity, @Nonnull Reportable reportable) {
if (reportable instanceof EcjProblem) {
@@ -56,7 +61,53 @@ abstract class CommonReporter implements Reporter {
printProblem(problemLevel, message, null /* fileName */, -1, -1, -1, -1);
}
- protected abstract void printProblem(@Nonnull ProblemLevel problemLevel,
+ protected void printProblem(@Nonnull ProblemLevel problemLevel,
+ @Nonnull String message,
+ @CheckForNull String fileName,
+ int startLine,
+ int endLine,
+ int startColumn,
+ int endColumn) {
+ switch (problemLevel) {
+ case ERROR:
+ printFilteredProblem(problemLevel,
+ message,
+ fileName,
+ startLine,
+ endLine,
+ startColumn,
+ endColumn);
+ break;
+ case WARNING:
+ if (verbosityLevel == VerbosityLevel.TRACE || verbosityLevel == VerbosityLevel.DEBUG
+ || verbosityLevel == VerbosityLevel.INFO || verbosityLevel == VerbosityLevel.WARNING) {
+ printFilteredProblem(problemLevel,
+ message,
+ fileName,
+ startLine,
+ endLine,
+ startColumn,
+ endColumn);
+ }
+ break;
+ case INFO:
+ if (verbosityLevel == VerbosityLevel.TRACE || verbosityLevel == VerbosityLevel.DEBUG
+ || verbosityLevel == VerbosityLevel.INFO) {
+ printFilteredProblem(problemLevel,
+ message,
+ fileName,
+ startLine,
+ endLine,
+ startColumn,
+ endColumn);
+ }
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ protected abstract void printFilteredProblem(@Nonnull ProblemLevel problemLevel,
@Nonnull String message,
@CheckForNull String fileName,
int startLine,
diff --git a/jack/src/com/android/jack/reporting/DefaultReporter.java b/jack/src/com/android/jack/reporting/DefaultReporter.java
index a7c9bb2..2f815b0 100644
--- a/jack/src/com/android/jack/reporting/DefaultReporter.java
+++ b/jack/src/com/android/jack/reporting/DefaultReporter.java
@@ -30,7 +30,7 @@ import javax.annotation.Nonnull;
public class DefaultReporter extends CommonReporter {
@Override
- protected void printProblem(@Nonnull ProblemLevel problemLevel,
+ protected void printFilteredProblem(@Nonnull ProblemLevel problemLevel,
@Nonnull String message,
@CheckForNull String fileName,
int startLine,
diff --git a/jack/src/com/android/jack/reporting/SdkReporter.java b/jack/src/com/android/jack/reporting/SdkReporter.java
index d2c35df..f0e5eed 100644
--- a/jack/src/com/android/jack/reporting/SdkReporter.java
+++ b/jack/src/com/android/jack/reporting/SdkReporter.java
@@ -32,7 +32,7 @@ public class SdkReporter extends CommonReporter {
private static final char MESSAGE_SEPARATOR = ':';
@Override
- protected void printProblem(@Nonnull ProblemLevel problemLevel,
+ protected void printFilteredProblem(@Nonnull ProblemLevel problemLevel,
@Nonnull String message,
@CheckForNull String fileName,
int startLine,