diff options
author | cnsun <cnsun@google.com> | 2018-04-11 08:19:21 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-11 08:21:02 -0700 |
commit | c8dd4148851e709c9ce6556efd0aed4cdf0ac90f (patch) | |
tree | 029db25225219e7e3dedbc66fd0c3a9540ad279b /src | |
parent | 9635fc649ba7370186effbafe658ecc80fa3cd47 (diff) |
Enable testing stderr for import-deps-checker.
RELNOTES: None.
PiperOrigin-RevId: 192452316
Diffstat (limited to 'src')
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: |