aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar cnsun <cnsun@google.com>2018-04-11 08:19:21 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-11 08:21:02 -0700
commitc8dd4148851e709c9ce6556efd0aed4cdf0ac90f (patch)
tree029db25225219e7e3dedbc66fd0c3a9540ad279b
parent9635fc649ba7370186effbafe658ecc80fa3cd47 (diff)
Enable testing stderr for import-deps-checker.
RELNOTES: None. PiperOrigin-RevId: 192452316
-rw-r--r--src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java24
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD54
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt104
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt104
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_complete_classpath.stderr.txt0
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_annotation_missing.stderr.txt16
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_exception_missing.stderr.txt8
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_interface_missing.stderr.txt12
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_members_missing.stderr.txt11
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_missing.stderr.txt21
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.stderr.txt12
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.txt (renamed from src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/string_annotation_value_test.txt)0
-rwxr-xr-xsrc/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh37
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl16
14 files changed, 371 insertions, 48 deletions
diff --git a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java
index 4d632d34e3..7e7fd373b8 100644
--- a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java
+++ b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java
@@ -124,22 +124,26 @@ public class Main {
String result = checker.computeResultOutput();
checkState(!result.isEmpty(), "The result should NOT be empty.");
exitCode = options.failOnErrors ? DEPS_ERROR_EXIT_CODE : 0;
-
- System.err.println(
- (options.failOnErrors ? "ERROR" : "WARNING")
- + ": The dependencies for the jars "
- + options.inputJars
- + " are not complete. bootclasspath = "
- + options.bootclasspath
- + ", classpath = "
- + options.classpath);
- System.err.println(result);
+ printErrorMessage(result, options);
asCharSink(options.output, StandardCharsets.UTF_8).write(result);
}
}
System.exit(exitCode);
}
+ private static void printErrorMessage(String detailedErrorMessage, Options options) {
+ System.err.print(options.failOnErrors ? "ERROR" : "WARNING");
+ System.err.printf(
+ ": The dependencies for the following %d jar(s) are not complete.\n",
+ options.inputJars.size());
+ int index = 1;
+ for (Path jar : options.inputJars) {
+ System.err.printf(" %3d.%s\n", index++, jar.toString());
+ }
+ System.err.println("The details are listed below:");
+ System.err.print(detailedErrorMessage);
+ }
+
@VisibleForTesting
static Options parseCommandLineOptions(String[] args) throws IOException {
OptionsParser optionsParser = OptionsParser.newOptionsParser(Options.class);
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD
index b5aed26104..a874588626 100644
--- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD
@@ -118,8 +118,10 @@ load("//src/java_tools/import_deps_checker/javatests/com/google/devtools/build/i
create_golden_test(
name = "bootclasspath_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_bootclasspath_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_bootclasspath_missing.txt",
+ golden_stderr_file = "golden_bootclasspath_missing.stderr.txt",
has_bootclasspath = False,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = None,
@@ -129,8 +131,10 @@ create_golden_test(
create_golden_test(
name = "warn_on_bootclasspath_missing_golden_test",
- emit_errors = False,
- golden_file = "golden_bootclasspath_missing.txt",
+ expect_errors = False,
+ fail_on_errors = False,
+ golden_output_file = "golden_bootclasspath_missing.txt",
+ golden_stderr_file = "golden_bootclasspath_missing.stderr.warningtxt",
has_bootclasspath = False,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = None,
@@ -140,8 +144,10 @@ create_golden_test(
create_golden_test(
name = "library_exception_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_library_exception_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_library_exception_missing.txt",
+ golden_stderr_file = "golden_library_exception_missing.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = "testdata_lib_LibraryException",
@@ -151,8 +157,10 @@ create_golden_test(
create_golden_test(
name = "library_annotation_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_library_annotation_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_library_annotation_missing.txt",
+ golden_stderr_file = "golden_library_annotation_missing.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = "testdata_lib_LibraryAnnotations",
@@ -162,8 +170,10 @@ create_golden_test(
create_golden_test(
name = "library_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_library_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_library_missing.txt",
+ golden_stderr_file = "golden_library_missing.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = "testdata_lib_Library",
@@ -173,8 +183,10 @@ create_golden_test(
create_golden_test(
name = "library_interface_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_library_interface_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_library_interface_missing.txt",
+ golden_stderr_file = "golden_library_interface_missing.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = "testdata_lib_LibraryInterface",
@@ -184,8 +196,10 @@ create_golden_test(
create_golden_test(
name = "library_members_missing_golden_test",
- emit_errors = True,
- golden_file = "golden_library_members_missing.txt",
+ expect_errors = True,
+ fail_on_errors = True,
+ golden_output_file = "golden_library_members_missing.txt",
+ golden_stderr_file = "golden_library_members_missing.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = "testdata_lib_Library",
@@ -196,8 +210,10 @@ create_golden_test(
create_golden_test(
name = "complete_classpath_golden_test",
- emit_errors = True,
- golden_file = "golden_complete_classpath.txt",
+ expect_errors = False,
+ fail_on_errors = True,
+ golden_output_file = "golden_complete_classpath.txt",
+ golden_stderr_file = "golden_complete_classpath.stderr.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
missing_jar = None,
@@ -226,7 +242,8 @@ sh_test(
name = "string_annotation_value_test",
srcs = ["golden_test.sh"],
args = [
- "$(location string_annotation_value_test.txt)",
+ "$(location golden_string_annotation_value_test.txt)",
+ "$(location golden_string_annotation_value_test.stderr.txt)",
"199",
"$(location //third_party/bazel/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker)",
"--fail_on_errors",
@@ -240,7 +257,8 @@ sh_test(
data = [
":libempty.jar",
"//third_party/bazel/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
- "//third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps:string_annotation_value_test.txt",
+ "//third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps:golden_string_annotation_value_test.stderr.txt",
+ "//third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps:golden_string_annotation_value_test.txt",
"//third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata:libOneAnnotationValue.jar",
"//third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata:libStringAnnotation.jar",
],
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt
new file mode 100644
index 0000000000..b7e6289752
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt
@@ -0,0 +1,104 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing java.io.PrintStream
+Missing java.lang.Byte
+Missing java.lang.Class
+Missing java.lang.Enum
+Missing java.lang.Exception
+Missing java.lang.Object
+Missing java.lang.String
+Missing java.lang.SuppressWarnings
+Missing java.lang.System
+Missing java.lang.annotation.Annotation
+Missing java.lang.annotation.ElementType
+Missing java.lang.annotation.Retention
+Missing java.lang.annotation.RetentionPolicy
+Missing java.lang.annotation.Target
+Missing java.lang.invoke.CallSite
+Missing java.lang.invoke.LambdaMetafactory
+Missing java.lang.invoke.MethodHandle
+Missing java.lang.invoke.MethodHandles$Lookup
+Missing java.lang.invoke.MethodType
+Missing java.util.Objects
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client
+ missing ancestor: java.lang.Object
+ resolution failure path: com.google.devtools.build.importdeps.testdata.Library -> java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$EnumTest
+ missing ancestor: java.lang.Enum
+ resolution failure path: java.lang.Enum
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class1
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class10
+ missing ancestor: java.lang.Object
+ resolution failure path: com.google.devtools.build.importdeps.testdata.Library$Class9 -> java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class2
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class3
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class4
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class5
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class6
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class7
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class8
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class9
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationFlag
+ missing ancestor: java.lang.Enum
+ resolution failure path: java.lang.Enum
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ClassAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ConstructorAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$FieldAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$MethodAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ParameterAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$TypeAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryException
+ missing ancestor: java.lang.Exception
+ resolution failure path: java.lang.Exception
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryInterface
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryInterface$Func
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=name, descriptor=()Ljava/lang/String;
+Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I
+===Total===
+missing=20
+incomplete=25
+missing_members=2
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt
new file mode 100644
index 0000000000..a9f3158947
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt
@@ -0,0 +1,104 @@
+WARNING: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing java.io.PrintStream
+Missing java.lang.Byte
+Missing java.lang.Class
+Missing java.lang.Enum
+Missing java.lang.Exception
+Missing java.lang.Object
+Missing java.lang.String
+Missing java.lang.SuppressWarnings
+Missing java.lang.System
+Missing java.lang.annotation.Annotation
+Missing java.lang.annotation.ElementType
+Missing java.lang.annotation.Retention
+Missing java.lang.annotation.RetentionPolicy
+Missing java.lang.annotation.Target
+Missing java.lang.invoke.CallSite
+Missing java.lang.invoke.LambdaMetafactory
+Missing java.lang.invoke.MethodHandle
+Missing java.lang.invoke.MethodHandles$Lookup
+Missing java.lang.invoke.MethodType
+Missing java.util.Objects
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client
+ missing ancestor: java.lang.Object
+ resolution failure path: com.google.devtools.build.importdeps.testdata.Library -> java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$EnumTest
+ missing ancestor: java.lang.Enum
+ resolution failure path: java.lang.Enum
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class1
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class10
+ missing ancestor: java.lang.Object
+ resolution failure path: com.google.devtools.build.importdeps.testdata.Library$Class9 -> java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class2
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class3
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class4
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class5
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class6
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class7
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class8
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library$Class9
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationFlag
+ missing ancestor: java.lang.Enum
+ resolution failure path: java.lang.Enum
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ClassAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ConstructorAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$FieldAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$MethodAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ParameterAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryAnnotations$TypeAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryException
+ missing ancestor: java.lang.Exception
+ resolution failure path: java.lang.Exception
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryInterface
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.LibraryInterface$Func
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=name, descriptor=()Ljava/lang/String;
+Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I
+===Total===
+missing=20
+incomplete=25
+missing_members=2
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_complete_classpath.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_complete_classpath.stderr.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_complete_classpath.stderr.txt
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_annotation_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_annotation_missing.stderr.txt
new file mode 100644
index 0000000000..d1cda0af8b
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_annotation_missing.stderr.txt
@@ -0,0 +1,16 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationFlag
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ClassAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ConstructorAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$FieldAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$MethodAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ParameterAnnotation
+Missing com.google.devtools.build.importdeps.testdata.LibraryAnnotations$TypeAnnotation
+===Total===
+missing=9
+incomplete=0
+missing_members=0
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_exception_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_exception_missing.stderr.txt
new file mode 100644
index 0000000000..ca984a53ce
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_exception_missing.stderr.txt
@@ -0,0 +1,8 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing com.google.devtools.build.importdeps.testdata.LibraryException
+===Total===
+missing=1
+incomplete=0
+missing_members=0
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_interface_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_interface_missing.stderr.txt
new file mode 100644
index 0000000000..a75d95a45b
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_interface_missing.stderr.txt
@@ -0,0 +1,12 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing com.google.devtools.build.importdeps.testdata.LibraryInterface
+Missing com.google.devtools.build.importdeps.testdata.LibraryInterface$Func
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client
+ missing ancestor: com.google.devtools.build.importdeps.testdata.LibraryInterface
+ resolution failure path: com.google.devtools.build.importdeps.testdata.LibraryInterface
+===Total===
+missing=2
+incomplete=1
+missing_members=0
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_members_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_members_missing.stderr.txt
new file mode 100644
index 0000000000..8f3f4026f9
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_members_missing.stderr.txt
@@ -0,0 +1,11 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing member 'I' in class com.google.devtools.build.importdeps.testdata.Library$Class1 : name=I, descriptor=Lcom/google/devtools/build/importdeps/testdata/Library$Class1;
+Missing member 'field' in class com.google.devtools.build.importdeps.testdata.Library$Class3 : name=field, descriptor=Lcom/google/devtools/build/importdeps/testdata/Library$Class4;
+Missing member 'createClass5' in class com.google.devtools.build.importdeps.testdata.Library$Class4 : name=createClass5, descriptor=()Lcom/google/devtools/build/importdeps/testdata/Library$Class5;
+Missing member 'create' in class com.google.devtools.build.importdeps.testdata.Library$Class5 : name=create, descriptor=(Lcom/google/devtools/build/importdeps/testdata/Library$Class7;)Lcom/google/devtools/build/importdeps/testdata/Library$Class6;
+===Total===
+missing=0
+incomplete=0
+missing_members=4
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_missing.stderr.txt
new file mode 100644
index 0000000000..4c0f4a9337
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_library_missing.stderr.txt
@@ -0,0 +1,21 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
+The details are listed below:
+Missing com.google.devtools.build.importdeps.testdata.Library
+Missing com.google.devtools.build.importdeps.testdata.Library$Class1
+Missing com.google.devtools.build.importdeps.testdata.Library$Class10
+Missing com.google.devtools.build.importdeps.testdata.Library$Class2
+Missing com.google.devtools.build.importdeps.testdata.Library$Class3
+Missing com.google.devtools.build.importdeps.testdata.Library$Class4
+Missing com.google.devtools.build.importdeps.testdata.Library$Class5
+Missing com.google.devtools.build.importdeps.testdata.Library$Class6
+Missing com.google.devtools.build.importdeps.testdata.Library$Class7
+Missing com.google.devtools.build.importdeps.testdata.Library$Class8
+Missing com.google.devtools.build.importdeps.testdata.Library$Class9
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client
+ missing ancestor: com.google.devtools.build.importdeps.testdata.Library
+ resolution failure path: com.google.devtools.build.importdeps.testdata.Library
+===Total===
+missing=11
+incomplete=1
+missing_members=0
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.stderr.txt
new file mode 100644
index 0000000000..72d94646d4
--- /dev/null
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.stderr.txt
@@ -0,0 +1,12 @@
+ERROR: The dependencies for the following 1 jar(s) are not complete.
+ 1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libOneAnnotationValue.jar
+The details are listed below:
+Missing java.lang.Object
+Missing java.lang.String
+Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.StringAnnotation
+ missing ancestor: java.lang.Object
+ resolution failure path: java.lang.Object
+===Total===
+missing=2
+incomplete=1
+missing_members=0
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/string_annotation_value_test.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.txt
index 8cbc6210d5..8cbc6210d5 100644
--- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/string_annotation_value_test.txt
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_string_annotation_value_test.txt
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh
index a2634f5c7d..8d50d28617 100755
--- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh
@@ -16,9 +16,10 @@
set -u
-gold_file=$1
+gold_output_file=$1
+shift
+gold_stderr_file=$1
shift
-
expected_exit_code=$1
shift
@@ -38,39 +39,49 @@ else
output="${tmpdir}"
fi
-actual_file="${output}/actual_result.txt"
+output_file="${output}/actual_result.txt"
checker_stderr="${output}/checker_stderr.txt"
# Run the checker command.
-$@ --output "${actual_file}" 2> ${checker_stderr}
+$@ --output "${output_file}" 2> ${checker_stderr}
checker_ret=$?
if [[ "${checker_ret}" != ${expected_exit_code} ]]; then
echo "Checker error!!! ${checker_ret}, expected=${expected_exit_code}"
cat ${checker_stderr}
- exit ${checker_ret}
+ exit 1 # Exit with an error.
fi
-diff "${gold_file}" "${actual_file}"
-gold_actual_ret=$?
-
-# TODO(b/77721804): re-enable test coverage for stderr
+diff "${gold_output_file}" "${output_file}"
+gold_output_ret=$?
-if [[ "${gold_actual_ret}" != 0 ]]; then
+if [[ "${gold_output_ret}" != 0 ]] ; then
echo "============== Actual Output =============="
- cat "${actual_file}"
+ cat "${output_file}"
echo "" # New line.
- echo "===========================================\n"
+ echo "==========================================="
echo "============== Expected Output =============="
- cat "${gold_file}"
+ cat "${gold_output_file}"
echo "" # New line.
echo "==========================================="
+ exit 1
+fi
+
+diff "${gold_stderr_file}" "${checker_stderr}"
+gold_stderr_ret=$?
+
+if [[ "${gold_stderr_ret}" != 0 ]]; then
echo "============== Checker Stderr =============="
cat "${checker_stderr}"
echo "" # New line.
echo "==========================================="
+ echo "============== Expected Stderr =============="
+ cat "${gold_stderr_file}"
+ echo "" # New line.
+ echo "==========================================="
+
exit 1
fi
diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl
index 5e6bfef50d..1d045fc52a 100644
--- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl
+++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl
@@ -13,9 +13,9 @@
# limitations under the License.
'''Helpers to create golden tests, to minimize code duplication.'''
-def create_golden_test(name, golden_file, emit_errors, has_bootclasspath, testdata_pkg,
- import_deps_checker, rt_jar, missing_jar = None,
- replacing_jar = None):
+def create_golden_test(name, golden_output_file, golden_stderr_file, expect_errors, fail_on_errors,
+ has_bootclasspath, testdata_pkg, import_deps_checker, rt_jar,
+ missing_jar = None, replacing_jar = None):
'''Create a golden test for the dependency checker.'''
all_dep_jars = [
"testdata_client",
@@ -26,7 +26,8 @@ def create_golden_test(name, golden_file, emit_errors, has_bootclasspath, testda
]
client_jar = testdata_pkg + ":testdata_client"
data = [
- golden_file,
+ golden_output_file,
+ golden_stderr_file,
import_deps_checker,
rt_jar,
] + [testdata_pkg + ":" + x for x in all_dep_jars]
@@ -34,11 +35,12 @@ def create_golden_test(name, golden_file, emit_errors, has_bootclasspath, testda
data.append(testdata_pkg + ":" + replacing_jar)
args = [
- "$(location %s)" % golden_file,
+ "$(location %s)" % golden_output_file,
+ "$(location %s)" % golden_stderr_file,
# The exit code 199 means the checker emits errors on dependency issues.
- "199" if emit_errors else "0",
+ "199" if expect_errors else "0",
"$(location %s)" % import_deps_checker,
- "--fail_on_errors" if emit_errors else "--nofail_on_errors"
+ "--fail_on_errors" if fail_on_errors else "--nofail_on_errors"
]
args.append("--bootclasspath_entry")
if has_bootclasspath: