Skip to content

Commit c567dab

Browse files
authored
Add more tests which use ast_plus_one_deps_strict_deps_unused_deps_error toolchain (#1030)
* move ast_plus_one_deps_strict_deps_unused_deps_error to //scala package also mention it in readme * add e2e tests to use ast_plus_one_deps_strict_deps_unused_deps_error * fix lint * rename ast_plus_one_deps_strict_deps_unused_deps_error to minimal_direct_source_deps
1 parent 30b4529 commit c567dab

File tree

9 files changed

+30
-18
lines changed

9 files changed

+30
-18
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ With these settings, we also will error on dependencies which are unneeded, and
228228
229229
The dependency tracking method `ast` is experimental but so far proves to be better than the default for computing the direct dependencies for `plus-one` mode code. In the future we hope to make this the default for `plus-one` mode and remove the option altogether.
230230
231+
To try it out you can use the following toolchain: `//scala:minimal_direct_source_deps`.
232+
231233
### [Experimental] Dependency mode
232234
233235
There are three dependency modes. The reason for the multiple modes is that often `scalac` depends on jars which seem unnecessary at first glance. Hence, in order to reduce the need to please `scalac`, we provide the following options.

scala/BUILD

+16
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,22 @@ toolchain(
3636
visibility = ["//visibility:public"],
3737
)
3838

39+
scala_toolchain(
40+
name = "ast_plus_one_deps_strict_deps_unused_deps_error_impl",
41+
dependency_mode = "plus-one",
42+
dependency_tracking_method = "ast",
43+
strict_deps_mode = "error",
44+
unused_dependency_checker_mode = "error",
45+
visibility = ["//visibility:public"],
46+
)
47+
48+
toolchain(
49+
name = "minimal_direct_source_deps",
50+
toolchain = "ast_plus_one_deps_strict_deps_unused_deps_error_impl",
51+
toolchain_type = "@io_bazel_rules_scala//scala:toolchain_type",
52+
visibility = ["//visibility:public"],
53+
)
54+
3955
scala_toolchain(
4056
name = "code_coverage_toolchain_impl",
4157
enable_code_coverage_aspect = "on",

src/java/io/bazel/rulesscala/specs2/BUILD

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ scala_library(
77
"Specs2RunnerBuilder.scala",
88
"package.scala",
99
],
10+
unused_dependency_checker_ignored_targets = [
11+
"//external:io_bazel_rules_scala/dependency/scala/scala_xml",
12+
],
1013
visibility = ["//visibility:public"],
1114
deps = [
1215
"//external:io_bazel_rules_scala/dependency/junit/junit",

src/scala/scripts/BUILD

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ scala_library(
3131
scala_library(
3232
name = "scalapb_generator_lib",
3333
srcs = ["ScalaPBGenerator.scala"],
34+
unused_dependency_checker_ignored_targets = [
35+
"//external:io_bazel_rules_scala/dependency/com_google_protobuf/protobuf_java",
36+
],
3437
visibility = ["//visibility:public"],
3538
runtime_deps = [
3639
"//external:io_bazel_rules_scala/dependency/com_google_protobuf/protobuf_java",

test/shell/test_deps.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ test_plus_one_ast_analyzer_strict_deps() {
5050
expected_message_error="error: Target '$dependenecy_target' is used but isn't explicitly declared, please add it to the deps"
5151

5252
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message "${expected_message_error}" ${test_target} "--extra_toolchains=//test/toolchains:ast_plus_one_deps_strict_deps_error" "eq"
53-
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message "${expected_message_error}" ${test_target} "--extra_toolchains=//test/toolchains:ast_plus_one_deps_strict_deps_unused_deps_error" "eq"
53+
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message "${expected_message_error}" ${test_target} "--extra_toolchains=//scala:minimal_direct_source_deps" "eq"
5454
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message "${expected_message_warn}" ${test_target} "--extra_toolchains=//test/toolchains:ast_plus_one_deps_strict_deps_warn" "ne"
5555
}
5656

test/shell/test_unused_dependency.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ test_plus_one_ast_analyzer_unused_deps_error() {
5656
}
5757

5858
test_plus_one_ast_analyzer_unused_deps_strict_deps_error() {
59-
action_should_fail build --extra_toolchains="//test/toolchains:ast_plus_one_deps_strict_deps_unused_deps_error" //test_expect_failure/plus_one_deps/with_unused_deps:a
59+
action_should_fail build --extra_toolchains="//scala:minimal_direct_source_deps" //test_expect_failure/plus_one_deps/with_unused_deps:a
6060
}
6161

6262
test_plus_one_ast_analyzer_unused_deps_warn() {

test/src/main/scala/scalarules/test/srcjars_with_java/BUILD

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ scala_library(
1010
scala_library(
1111
name = "mixed_language_dependent",
1212
srcs = ["MixedLanguageDependent.scala"],
13+
unused_dependency_checker_ignored_targets = [":mixed_language_source_jar"],
1314
deps = [":mixed_language_source_jar"],
1415
)
1516

@@ -23,5 +24,6 @@ scala_library(
2324
scala_library(
2425
name = "java_dependent",
2526
srcs = ["JavaDependent.scala"],
27+
unused_dependency_checker_ignored_targets = [":java_source_jar"],
2628
deps = [":java_source_jar"],
2729
)

test/toolchains/BUILD.bazel

-16
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,3 @@ toolchain(
5959
toolchain_type = "@io_bazel_rules_scala//scala:toolchain_type",
6060
visibility = ["//visibility:public"],
6161
)
62-
63-
scala_toolchain(
64-
name = "ast_plus_one_deps_strict_deps_unused_deps_error_impl",
65-
dependency_mode = "plus-one",
66-
dependency_tracking_method = "ast",
67-
strict_deps_mode = "error",
68-
unused_dependency_checker_mode = "error",
69-
visibility = ["//visibility:public"],
70-
)
71-
72-
toolchain(
73-
name = "ast_plus_one_deps_strict_deps_unused_deps_error",
74-
toolchain = "ast_plus_one_deps_strict_deps_unused_deps_error_impl",
75-
toolchain_type = "@io_bazel_rules_scala//scala:toolchain_type",
76-
visibility = ["//visibility:public"],
77-
)

test_rules_scala.sh

+2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ $runner bazel test test/...
1818
$runner bazel test third_party/...
1919
# UnusedDependencyChecker doesn't work with strict_java_deps
2020
$runner bazel build "--strict_java_deps=ERROR -- test/... -test:UnusedDependencyChecker"
21+
$runner bazel build "--extra_toolchains=//scala:minimal_direct_source_deps -- test/... -test:UnusedDependencyChecker"
2122
#$runner bazel build "--strict_java_deps=ERROR --all_incompatible_changes -- test/... -test:UnusedDependencyChecker"
2223
$runner bazel test "--strict_java_deps=ERROR -- test/... -test:UnusedDependencyChecker"
24+
$runner bazel test "--extra_toolchains=//scala:minimal_direct_source_deps -- test/... -test:UnusedDependencyChecker"
2325
$runner bazel build "test_expect_failure/missing_direct_deps/internal_deps/... --strict_java_deps=warn"
2426
$runner bazel build //test_expect_failure/proto_source_root/... --strict_proto_deps=off
2527
$runner bazel test //test/... --extra_toolchains="//test_expect_failure/plus_one_deps:plus_one_deps"

0 commit comments

Comments
 (0)