Skip to content

Commit 234ad07

Browse files
Don't output unused dependency warning and errors when compilation fails. (#1548)
When a scala source is malformed, the AST parsing dependency checking step comes back with no/very little dependencies used. It then prints out a bunch of these warnings which are not necessarily true. As a workaround, let's not print the unused dependency warnings if the build has already failed before hand.
1 parent 92fef4e commit 234ad07

File tree

7 files changed

+97
-34
lines changed

7 files changed

+97
-34
lines changed

src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_12_13_and_before_2_13_12/DepsTrackingReporter.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,22 @@ public void prepareReport() throws IOException {
146146
}
147147

148148
Set<Dependency> unusedDeps = new HashSet<>();
149-
for (int i = 0; i < ops.directTargets.length; i++) {
150-
String directTarget = ops.directTargets[i];
151-
if (usedTargets.contains(directTarget)) {
152-
continue;
153-
}
149+
if (!hasErrors()) {
150+
for (int i = 0; i < ops.directTargets.length; i++) {
151+
String directTarget = ops.directTargets[i];
152+
if (usedTargets.contains(directTarget)) {
153+
continue;
154+
}
154155

155-
unusedDeps.add(
156+
unusedDeps.add(
156157
buildDependency(
157-
ops.directJars[i],
158-
directTarget,
159-
Kind.UNUSED,
160-
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
158+
ops.directJars[i],
159+
directTarget,
160+
Kind.UNUSED,
161+
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
161162
)
162-
);
163+
);
164+
}
163165
}
164166

165167
writeSdepsFile(usedDeps, unusedDeps);

src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_13_12/DepsTrackingReporter.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,20 +137,22 @@ public void prepareReport() throws IOException {
137137
}
138138

139139
Set<Dependency> unusedDeps = new HashSet<>();
140-
for (int i = 0; i < ops.directTargets.length; i++) {
141-
String directTarget = ops.directTargets[i];
142-
if (usedTargets.contains(directTarget)) {
143-
continue;
144-
}
140+
if (!hasErrors()) {
141+
for (int i = 0; i < ops.directTargets.length; i++) {
142+
String directTarget = ops.directTargets[i];
143+
if (usedTargets.contains(directTarget)) {
144+
continue;
145+
}
145146

146-
unusedDeps.add(
147+
unusedDeps.add(
147148
buildDependency(
148-
ops.directJars[i],
149-
directTarget,
150-
Kind.UNUSED,
151-
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
149+
ops.directJars[i],
150+
directTarget,
151+
Kind.UNUSED,
152+
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
152153
)
153-
);
154+
);
155+
}
154156
}
155157

156158
writeSdepsFile(usedDeps, unusedDeps);

src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/before_2_12_13/DepsTrackingReporter.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,20 +133,22 @@ public void prepareReport() throws IOException {
133133
}
134134

135135
Set<Dependency> unusedDeps = new HashSet<>();
136-
for (int i = 0; i < ops.directTargets.length; i++) {
137-
String directTarget = ops.directTargets[i];
138-
if (usedTargets.contains(directTarget)) {
139-
continue;
140-
}
136+
if (!hasErrors()) {
137+
for (int i = 0; i < ops.directTargets.length; i++) {
138+
String directTarget = ops.directTargets[i];
139+
if (usedTargets.contains(directTarget)) {
140+
continue;
141+
}
141142

142-
unusedDeps.add(
143+
unusedDeps.add(
143144
buildDependency(
144-
ops.directJars[i],
145-
directTarget,
146-
Kind.UNUSED,
147-
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
145+
ops.directJars[i],
146+
directTarget,
147+
Kind.UNUSED,
148+
ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode)
148149
)
149-
);
150+
);
151+
}
150152
}
151153

152154
writeSdepsFile(usedDeps, unusedDeps);

test/shell/test_compiler_dependency_tracking.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,35 @@ test_sdeps() {
2828
bazel test --extra_toolchains=//test_expect_failure/compiler_dependency_tracker:ast_plus_warn //test_expect_failure/compiler_dependency_tracker/sdeps/...
2929
}
3030

31+
test_fails_without_warning() {
32+
cmd=$1
33+
expected=$2
34+
35+
local output
36+
output=$($cmd 2>&1)
37+
38+
if [ $? -eq 0 ]; then
39+
echo "Expected build to fail"
40+
echo "$output"
41+
exit 1
42+
fi
43+
44+
echo "$output" | grep "$expected"
45+
if [ $? -eq 0 ]; then
46+
echo "Expected output:[$output] to not contain [$expected]"
47+
exit 1
48+
fi
49+
}
50+
51+
test_no_unused_warn_when_broken() {
52+
action_should_fail_without_message \
53+
"remove deps" \
54+
build //test_expect_failure/compiler_dependency_tracker:F
55+
}
56+
57+
3158
$runner test_fails_for_unused_dep
3259
$runner test_fails_for_missing_compile_dep
3360
$runner test_fails_for_strict_dep
3461
$runner test_sdeps
62+
$runner test_no_unused_warn_when_broken

test/shell/test_helper.sh

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,27 @@ action_should_fail_with_message() {
7373
fi
7474
}
7575

76+
action_should_fail_without_message() {
77+
set +e
78+
MSG=$1
79+
TEST_ARG=${@:2}
80+
RES=$(bazel $TEST_ARG 2>&1)
81+
RESPONSE_CODE=$?
82+
echo $RES | grep -- "$MSG"
83+
GREP_RES=$?
84+
if [ $RESPONSE_CODE -eq 0 ]; then
85+
echo $RES
86+
echo -e "${RED} \"bazel $TEST_ARG\" should have failed but passed. $NC"
87+
exit 1
88+
elif [ $GREP_RES -eq 0 ]; then
89+
echo $RES
90+
echo -e "${RED} \"bazel $TEST_ARG\" should have failed with message not containing \"$MSG\" but it did. $NC"
91+
exit 1
92+
else
93+
exit 0
94+
fi
95+
}
96+
7697
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message() {
7798
set +e
7899

@@ -133,4 +154,4 @@ jar_contains_files() {
133154
return 1
134155
fi
135156
done
136-
}
157+
}

test_expect_failure/compiler_dependency_tracker/BUILD

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,9 @@ scala_library(
6969
name = "E",
7070
srcs = ["E.scala"],
7171
)
72+
73+
scala_library(
74+
name = "F",
75+
srcs = ["F.scala"],
76+
deps = [":E"],
77+
)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class F {
2+

0 commit comments

Comments
 (0)