aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cnsun <cnsun@google.com>2018-03-08 15:12:38 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-08 15:14:44 -0800
commit16cb4dd34ca5f7ad485d9e4fff48b8180e03fee9 (patch)
tree4e79d591558f5e10bf18c4efa4fee0d8322b2397 /src
parent24ad3649a20304029a2e30b32c6d88b2619fc3b6 (diff)
Add a flag to control whether to treat missing dependencies as errors or
warnings (--emit_errors or --noemit_errors). RELNOTES:None. PiperOrigin-RevId: 188397338
Diffstat (limited to 'src')
-rw-r--r--src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/Main.java19
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/BUILD18
-rwxr-xr-xsrc/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_test.sh8
-rw-r--r--src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/tests.bzl5
4 files changed, 41 insertions, 9 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 53e1f82309..6eed69e665 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
@@ -92,11 +92,18 @@ public class Main {
help = "Output path to save the result."
)
public Path output;
+
+ @Option(
+ name = "fail_on_errors",
+ defaultValue = "true",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help = "Fail on incomplete dependencies, otherwise emit warnings."
+ )
+ public boolean failOnErrors;
}
- /**
- * A randomly picked large exit code to avoid collision with other common exit codes.
- */
+ /** A randomly picked large exit code to avoid collision with other common exit codes. */
private static final int DEPS_ERROR_EXIT_CODE = 199;
public static void main(String[] args) throws IOException {
@@ -115,9 +122,11 @@ public class Main {
if (!checker.check()) {
String result = checker.computeResultOutput();
checkState(!result.isEmpty(), "The result should NOT be empty.");
- exitCode = DEPS_ERROR_EXIT_CODE;
+ exitCode = options.failOnErrors ? DEPS_ERROR_EXIT_CODE : 0;
+
System.err.println(
- "ERROR: The dependencies for the jars "
+ (options.failOnErrors ? "ERROR" : "WARNING")
+ + ": The dependencies for the jars "
+ options.inputJars
+ " are not complete. bootclasspath = "
+ options.bootclasspath
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 16af1d65af..da4b1a9c55 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,6 +118,18 @@ 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",
+ has_bootclasspath = False,
+ import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
+ missing_jar = None,
+ rt_jar = "@local_jdk//:jre/lib/rt.jar",
+ testdata_pkg = "//src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata",
+)
+
+create_golden_test(
+ name = "warn_on_bootclasspath_missing_golden_test",
+ emit_errors = False,
golden_file = "golden_bootclasspath_missing.txt",
has_bootclasspath = False,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -128,6 +140,7 @@ create_golden_test(
create_golden_test(
name = "library_exception_missing_golden_test",
+ emit_errors = True,
golden_file = "golden_library_exception_missing.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -138,6 +151,7 @@ create_golden_test(
create_golden_test(
name = "library_annotation_missing_golden_test",
+ emit_errors = True,
golden_file = "golden_library_annotation_missing.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -148,6 +162,7 @@ create_golden_test(
create_golden_test(
name = "library_missing_golden_test",
+ emit_errors = True,
golden_file = "golden_library_missing.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -158,6 +173,7 @@ create_golden_test(
create_golden_test(
name = "library_interface_missing_golden_test",
+ emit_errors = True,
golden_file = "golden_library_interface_missing.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -168,6 +184,7 @@ create_golden_test(
create_golden_test(
name = "library_members_missing_golden_test",
+ emit_errors = True,
golden_file = "golden_library_members_missing.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
@@ -179,6 +196,7 @@ create_golden_test(
create_golden_test(
name = "complete_classpath_golden_test",
+ emit_errors = True,
golden_file = "golden_complete_classpath.txt",
has_bootclasspath = True,
import_deps_checker = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker",
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 3b835f6471..d9f967c28e 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
@@ -17,6 +17,9 @@
gold_file=$1
shift
+expected_exit_code=$1
+shift
+
if [ -d "$TEST_TMPDIR" ]; then
# Running as part of blaze test
tmpdir="$TEST_TMPDIR"
@@ -40,9 +43,8 @@ checker_stderr="${output}/checker_stderr.txt"
$@ --output "${actual_file}" 2> ${checker_stderr}
checker_ret=$?
-# The exit code 199 means the checker finds dependency issues.
-if [[ "${checker_ret}" != 0 ]] && [[ "${checker_ret}" != 199 ]]; then
- echo "Checker error!!! ${checker_ret}"
+if [[ "${checker_ret}" != ${expected_exit_code} ]]; then
+ echo "Checker error!!! ${checker_ret}, expected=${expected_exit_code}"
cat ${checker_stderr}
exit ${checker_ret}
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 df7069feb6..5e6bfef50d 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,7 +13,7 @@
# limitations under the License.
'''Helpers to create golden tests, to minimize code duplication.'''
-def create_golden_test(name, golden_file, has_bootclasspath, testdata_pkg,
+def create_golden_test(name, golden_file, emit_errors, has_bootclasspath, testdata_pkg,
import_deps_checker, rt_jar, missing_jar = None,
replacing_jar = None):
'''Create a golden test for the dependency checker.'''
@@ -35,7 +35,10 @@ def create_golden_test(name, golden_file, has_bootclasspath, testdata_pkg,
args = [
"$(location %s)" % golden_file,
+ # The exit code 199 means the checker emits errors on dependency issues.
+ "199" if emit_errors else "0",
"$(location %s)" % import_deps_checker,
+ "--fail_on_errors" if emit_errors else "--nofail_on_errors"
]
args.append("--bootclasspath_entry")
if has_bootclasspath: