Skip to content

Commit ec8091f

Browse files
Add tests for experimental_unused_deps flag and tags
1 parent c4c2cbb commit ec8091f

3 files changed

Lines changed: 49 additions & 0 deletions

File tree

src/test/java/com/google/devtools/build/lib/rules/java/BUILD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,11 @@ java_test(
187187
srcs = ["JavaStarlarkApiTest.java"],
188188
deps = [
189189
":java-info",
190+
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
191+
"//src/main/java/com/google/devtools/build/lib/cmdline",
192+
"//src/main/java/com/google/devtools/build/lib/packages:provider",
190193
"//src/main/java/com/google/devtools/build/lib/rules/java:java-compilation",
194+
"//src/main/java/com/google/devtools/build/lib/skyframe:bzl_load_value",
191195
"//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
192196
"//src/main/java/net/starlark/java/annot",
193197
"//src/test/java/com/google/devtools/build/lib/analysis/util",

src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import static com.google.common.truth.Truth.assertThat;
1717
import static java.util.Arrays.stream;
18+
import static com.google.devtools.build.lib.skyframe.BzlLoadValue.keyForBuild;
1819

1920
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
2021
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;

src/test/shell/bazel/bazel_java_test.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2531,4 +2531,48 @@ EOF
25312531
expect_log "foo.txt"
25322532
}
25332533

2534+
function test_unused_deps_enforcement_and_tags() {
2535+
mkdir -p java/unused_a java/unused_b
2536+
cat << 'EOF' > java/unused_a/BUILD
2537+
load("@rules_java//java:java_library.bzl", "java_library")
2538+
package(default_visibility=['//visibility:public'])
2539+
java_library(name = "unused_a", srcs = ["A.java"])
2540+
EOF
2541+
cat << 'EOF' > java/unused_a/A.java
2542+
package unused_a;
2543+
public class A {}
2544+
EOF
2545+
2546+
cat << 'EOF' > java/unused_b/BUILD
2547+
load("@rules_java//java:java_library.bzl", "java_library")
2548+
java_library(name = "unused_b", srcs = ["B.java"], deps = ["//java/unused_a"])
2549+
EOF
2550+
cat << 'EOF' > java/unused_b/B.java
2551+
package unused_b;
2552+
public class B {}
2553+
EOF
2554+
2555+
# 1. Default behaviour: unused_deps is off by default -> build succeeds
2556+
bazel build //java/unused_b:unused_b >& $TEST_log || fail "build should succeed by default"
2557+
2558+
# 2. Strict behaviour: --experimental_unused_deps=error -> build fails
2559+
bazel build //java/unused_b:unused_b --experimental_unused_deps=error >& $TEST_log && fail "build should fail with unused_deps=error"
2560+
expect_log "buildozer 'remove deps //java/unused_a' //java/unused_b"
2561+
2562+
# 3. Opt-out per target via tag: unused-deps:off -> build succeeds
2563+
cat << 'EOF' > java/unused_b/BUILD
2564+
load("@rules_java//java:java_library.bzl", "java_library")
2565+
java_library(name = "unused_b", srcs = ["B.java"], deps = ["//java/unused_a"], tags = ["unused-deps:off"])
2566+
EOF
2567+
bazel build //java/unused_b:unused_b --experimental_unused_deps=error >& $TEST_log || fail "build should succeed with unused-deps:off tag"
2568+
2569+
# 4. Opt-in per target via tag: unused-deps:error -> build fails
2570+
cat << 'EOF' > java/unused_b/BUILD
2571+
load("@rules_java//java:java_library.bzl", "java_library")
2572+
java_library(name = "unused_b", srcs = ["B.java"], deps = ["//java/unused_a"], tags = ["unused-deps:error"])
2573+
EOF
2574+
bazel build //java/unused_b:unused_b --experimental_unused_deps=off >& $TEST_log && fail "build should fail with unused-deps:error tag when global flag is off"
2575+
expect_log "buildozer 'remove deps //java/unused_a' //java/unused_b"
2576+
}
2577+
25342578
run_suite "Java integration tests"

0 commit comments

Comments
 (0)