diff --git a/deps/test/BUILD.bazel.test b/deps/test/BUILD.bazel.test index 68e6338ba..6fa66b66e 100644 --- a/deps/test/BUILD.bazel.test +++ b/deps/test/BUILD.bazel.test @@ -1,156 +1,11 @@ -"""Test targets to ensure dependency version compatibility. +"""Test targets to ensure dependency version compatibility.""" -Copied and adapted targets from the main repo as noted. -""" -load( - ":defs.bzl", - "default_outputs_test", - "scalafmt_scala_test", - "scrooge_transitive_outputs_test", -) -load("@rules_java//java:defs.bzl", "java_library") -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_scala//jmh:jmh.bzl", "scala_benchmark_jmh") -load("@rules_scala//scala/scalafmt:phase_scalafmt_ext.bzl", "ext_scalafmt") -load("@rules_scala//scala:advanced_usage/scala.bzl", "make_scala_test") -load( - "@rules_scala//scala:scala.bzl", - "scala_binary", - "scala_doc", - "scala_junit_test", - "scala_library", - "scala_specs2_junit_test", - "scala_test", -) -load("@rules_scala//scala_proto:scala_proto.bzl", "scala_proto_library") -load("@rules_scala//thrift:thrift.bzl", "thrift_library") -load( - "@rules_scala//twitter_scrooge:twitter_scrooge.bzl", - "scrooge_java_library", - "scrooge_scala_library", -) - -# From: `test/BUILD` -scala_binary( - name = "ScalaBinary", - srcs = ["ScalaBinary.scala"], - main_class = "scalarules.test.ScalaBinary", - deps = [ - ":HelloLib", - ], -) - -scala_library( - name = "HelloLib", - srcs = ["HelloLib.scala"], -) - -scala_doc( - name = "ScalaDoc", - deps = [":HelloLib"], -) - -# From: `examples/testing/multi_frameworks_toolchain/example/BUILD` -scala_test( - name = "scalatest_example", - srcs = ["ScalaTestExampleTest.scala"], -) +load(":defs.bzl", "scalafmt_scala_test") -scala_specs2_junit_test( - name = "specs2_example", - srcs = ["Specs2ExampleTest.scala"], - suffixes = ["Test"], -) - -# Manufactured based on `docs/phase_scalafmt.md` and `test/scalafmt/BUILD`. +# Based on `docs/phase_scalafmt.md`, `test/scalafmt/BUILD`, and a copy of: +# examples/testing/multi_frameworks_toolchain/example/ScalaTestExampleTest.scala scalafmt_scala_test( name = "ScalafmtTest", srcs = ["ScalaTestExampleTest.scala"], format = True, ) - -# From: `test/proto/BUILD` -proto_library( - name = "standalone_proto", - srcs = ["standalone.proto"], -) - -scala_proto_library( - name = "standalone_scala_proto", - deps = [":standalone_proto"], -) - -default_outputs_test( - name = "standalone_scala_proto_outs_test", - expected_outs = [ - "standalone_proto_scalapb-src.jar", - "standalone_proto_scalapb.jar", - ], - target_under_test = ":standalone_scala_proto", -) - -# From: `test/jmh/BUILD` -java_library( - name = "java_type", - srcs = ["JavaType.java"], - visibility = ["//visibility:public"], -) - -scala_library( - name = "scala_type", - srcs = ["ScalaType.scala"], - visibility = ["//visibility:public"], -) - -scala_library( - name = "add_numbers", - srcs = ["AddNumbers.scala"], - visibility = ["//visibility:public"], - exports = [ - ":java_type", - ":scala_type", - ], - deps = [ - ":java_type", - ":scala_type", - ], -) - -scala_benchmark_jmh( - name = "test_benchmark", - srcs = ["TestBenchmark.scala"], - data = ["data.txt"], - deps = [":add_numbers"], -) - -# From: `test/src/main/scala/scalarules/test/twitter_scrooge/BUILD` - -thrift_library( - name = "thrift3", - srcs = ["Thrift3.thrift"], - visibility = ["//visibility:public"], -) - -scrooge_scala_library( - name = "scrooge3", - visibility = ["//visibility:public"], - deps = [":thrift3"], -) - -scrooge_java_library( - name = "scrooge3_java", - visibility = ["//visibility:public"], - deps = [":thrift3"], -) - -scrooge_transitive_outputs_test( - name = "scrooge_test_scala", - dep = ":scrooge3", - expected_jars = ["thrift3_scrooge_scala.jar"], -) - -scrooge_transitive_outputs_test( - name = "scrooge_test_java", - dep = ":scrooge3_java", - expected_jars = ["thrift3_scrooge_java.jar"], -) diff --git a/deps/test/HelloLib.scala b/deps/test/HelloLib.scala deleted file mode 100644 index 612c9e851..000000000 --- a/deps/test/HelloLib.scala +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package scalarules.test - -object HelloLib { - def printMessage(arg: String) { - println(arg) - } -} - diff --git a/deps/test/MODULE.bazel.template b/deps/test/MODULE.bazel.template index 2b5f8a466..4aceeaa5e 100644 --- a/deps/test/MODULE.bazel.template +++ b/deps/test/MODULE.bazel.template @@ -1,9 +1,6 @@ """Bazel module template for test/shell/test_deps_versions.sh tests.""" -module( - name = "rules_scala_deps_versions_test", - bazel_compatibility = [">=${bazelversion}"], -) +module(name = "rules_scala_deps_versions_test") bazel_dep(name = "rules_scala") local_path_override( @@ -11,6 +8,12 @@ local_path_override( path = "../..", ) +bazel_dep(name = "multi_frameworks_toolchain") +local_path_override( + module_name = "multi_frameworks_toolchain", + path = "../../examples/testing/multi_frameworks_toolchain", +) + bazel_dep(name = "bazel_skylib") single_version_override( module_name = "bazel_skylib", diff --git a/deps/test/ScalaBinary.scala b/deps/test/ScalaBinary.scala deleted file mode 100644 index 1cf084ee9..000000000 --- a/deps/test/ScalaBinary.scala +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package scalarules.test - -object ScalaBinary { - def main(args: Array[String]) { - HelloLib.printMessage("Hello"); - } -} diff --git a/deps/test/defs.bzl b/deps/test/defs.bzl index 5fe0187c9..cdc1aa8ee 100644 --- a/deps/test/defs.bzl +++ b/deps/test/defs.bzl @@ -1,47 +1,7 @@ -load("@bazel_skylib//lib:collections.bzl", "collections") -load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts", "unittest") -load("@rules_java//java/common:java_info.bzl", "JavaInfo") +"""Utilities required for dependency compatibility tests.""" + load("@rules_scala//scala:advanced_usage/scala.bzl", "make_scala_test") load("@rules_scala//scala/scalafmt:phase_scalafmt_ext.bzl", "ext_scalafmt") # From //test/scalafmt:phase_scalafmt_test.bzl scalafmt_scala_test = make_scala_test(ext_scalafmt) - -# From //test/proto:default_outputs_test.bzl -def _default_outputs_test(ctx): - env = analysistest.begin(ctx) - - target_under_test = analysistest.target_under_test(env) - actual_outs = [f.basename for f in target_under_test[DefaultInfo].files.to_list()] - - asserts.equals(env, sorted(ctx.attr.expected_outs), sorted(actual_outs)) - - return analysistest.end(env) - -default_outputs_test = analysistest.make( - _default_outputs_test, - attrs = { - "expected_outs": attr.string_list(), - }, -) - -# From -# //test/src/main/scala/scalarules/test/twitter_scrooge:twitter_scrooge_test.bzl -def _scrooge_transitive_outputs(ctx): - env = unittest.begin(ctx) - - asserts.equals( - env, - sorted(ctx.attr.expected_jars), - sorted(collections.uniq([out.class_jar.basename for out in ctx.attr.dep[JavaInfo].outputs.jars])), - ) - - return unittest.end(env) - -scrooge_transitive_outputs_test = unittest.make( - _scrooge_transitive_outputs, - attrs = { - "dep": attr.label(), - "expected_jars": attr.string_list(), - }, -) diff --git a/dt_patches/test_dt_patches/MODULE.bazel b/dt_patches/test_dt_patches/MODULE.bazel index b1a0d8adc..65688d179 100644 --- a/dt_patches/test_dt_patches/MODULE.bazel +++ b/dt_patches/test_dt_patches/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/dt_patches/test_dt_patches_user_srcjar/MODULE.bazel b/dt_patches/test_dt_patches_user_srcjar/MODULE.bazel index 42ce269ca..3e65f9330 100644 --- a/dt_patches/test_dt_patches_user_srcjar/MODULE.bazel +++ b/dt_patches/test_dt_patches_user_srcjar/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/examples/crossbuild/MODULE.bazel b/examples/crossbuild/MODULE.bazel index 4c9be3de3..832505b03 100644 --- a/examples/crossbuild/MODULE.bazel +++ b/examples/crossbuild/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/examples/overridden_artifacts/MODULE.bazel b/examples/overridden_artifacts/MODULE.bazel index 00e144144..b0c471633 100644 --- a/examples/overridden_artifacts/MODULE.bazel +++ b/examples/overridden_artifacts/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/examples/scala3/MODULE.bazel b/examples/scala3/MODULE.bazel index 57c5c9d01..fd11c30fc 100644 --- a/examples/scala3/MODULE.bazel +++ b/examples/scala3/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/examples/semanticdb/MODULE.bazel b/examples/semanticdb/MODULE.bazel index c325c300b..2327bd811 100644 --- a/examples/semanticdb/MODULE.bazel +++ b/examples/semanticdb/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/examples/testing/multi_frameworks_toolchain/MODULE.bazel b/examples/testing/multi_frameworks_toolchain/MODULE.bazel index 49526cefa..3a02671c6 100644 --- a/examples/testing/multi_frameworks_toolchain/MODULE.bazel +++ b/examples/testing/multi_frameworks_toolchain/MODULE.bazel @@ -12,7 +12,7 @@ local_path_override( path = "../../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../../deps/latest", diff --git a/examples/testing/scalatest_repositories/MODULE.bazel b/examples/testing/scalatest_repositories/MODULE.bazel index f6edd30fc..0cc31b5af 100644 --- a/examples/testing/scalatest_repositories/MODULE.bazel +++ b/examples/testing/scalatest_repositories/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../../deps/latest", diff --git a/examples/testing/specs2_junit_repositories/MODULE.bazel b/examples/testing/specs2_junit_repositories/MODULE.bazel index be4e490e2..6657ca2b4 100644 --- a/examples/testing/specs2_junit_repositories/MODULE.bazel +++ b/examples/testing/specs2_junit_repositories/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../../deps/latest", diff --git a/examples/twitter_scrooge/MODULE.bazel b/examples/twitter_scrooge/MODULE.bazel index 523aa795f..5dc0d9af7 100644 --- a/examples/twitter_scrooge/MODULE.bazel +++ b/examples/twitter_scrooge/MODULE.bazel @@ -7,7 +7,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/test/BUILD b/test/BUILD index 08220d003..ffa7a9cc3 100644 --- a/test/BUILD +++ b/test/BUILD @@ -1,7 +1,5 @@ load("@rules_java//java:defs.bzl", "java_binary", "java_library") -load("@rules_python//python:defs.bzl", "py_binary") load("@rules_scala_config//:config.bzl", "SCALA_VERSION") -load("@rules_shell//shell:sh_test.bzl", "sh_test") load( "//scala:scala.bzl", "scala_binary", @@ -18,7 +16,10 @@ load( load("//scala:scala_cross_version.bzl", "repositories") load(":check_statsfile.bzl", "check_statsfile") -package(default_testonly = 1) +package( + default_testonly = 1, + default_visibility = ["//test/sh_tests:__pkg__"], +) _JUNIT_DEPS = repositories( SCALA_VERSION, @@ -122,7 +123,7 @@ scala_test_suite( size = "small", # Not a macro, can pass test-specific attributes. srcs = ["ScalaTestData.scala"], data = ["//test/data:foo.txt"], - jvm_flags = ["-Dtext=$(location //test/data:foo.txt)"], + jvm_flags = ["-Dtext=$(rootpath //test/data:foo.txt)"], scalac_jvm_flags = [ "-Xms1G", "-Xmx4G", @@ -155,6 +156,14 @@ scala_doc( ], ) +scala_doc( + name = "ScalaDocTestLibsOnly", + deps = [ + ":HelloLib", + ":OtherLib", + ], +) + scala_library( name = "UnusedLib", srcs = ["UnusedLib.scala"], @@ -297,20 +306,6 @@ scala_library( ]), ) -genrule( - name = "MixJavaScalaLibTestOutputs", - outs = ["mix_java_scala_lib_test_rule_outputs.txt"], - cmd = "echo $(locations MixJavaScalaLib) > $@", - tools = [":MixJavaScalaLib"], -) - -sh_test( - name = "MixJavaScalaLibTest", - srcs = ["test_scala_library_outputs_mixed_java_scala_jars.sh"], - args = ["$(location MixJavaScalaLibTestOutputs) MixJavaScalaLib"], - data = ["MixJavaScalaLibTestOutputs"], -) - scala_binary( name = "MixJavaScalaBinary", srcs = ["src/main/scala/scalarules/test/MixJavaScalaLibBinary.scala"] + glob([ @@ -458,32 +453,6 @@ scala_specs2_junit_test( ], ) -# Make sure scala_binary works in test environment -[sh_test( - name = "Run" + "".join([binary[idx] if binary[idx].isalnum() else "_" for idx in range(len(binary))]), - srcs = ["test_binary.sh"], - args = ["$(location %s)" % binary], - data = [binary if (":" in binary) else (":%s" % binary)], -) for binary in [ - "JavaBinary", - "JavaBinary2", - "JavaOnlySources", - "MixJavaScalaLibBinary", - "MixJavaScalaSrcjarLibBinary", - "ScalaBinary", - "ScalaLibBinary", - "ResourcesStripScalaBinary", - "ScalaBinary_dependent_on_binary_with_java", - "//test/src/main/scala/scalarules/test/classpath_resources:classpath_resource", - "//test/src/main/scala/scalarules/test/twitter_scrooge:justscrooges", - "//test/src/main/scala/scalarules/test/twitter_scrooge:barethrifts", - "//test/src/main/scala/scalarules/test/twitter_scrooge:twodeep_binary", - "//test/src/main/scala/scalarules/test/twitter_scrooge:justscrooge2b_binary", - "//test/src/main/scala/scalarules/test/large_classpath:largeClasspath", - "//test:test_scala_proto_server", - "//test:scala_binary_jdk_11", -]] - # Make sure scala_binary respects runtime_jdk on bazel run scala_binary( name = "scala_binary_jdk_11", @@ -503,54 +472,12 @@ scala_junit_test( ], ) -# Generate a file containing the rootpaths of a Scala binary. -genrule( - name = "rootpath-script", - srcs = [":ScalaBinary"], - outs = ["rootpath-script.out"], - cmd = """ - rootpaths=($(rootpaths {})) - (IFS='\n'; echo "$${{rootpaths[*]}}") | sort > $@ - """.format(":ScalaBinary"), -) - -# Validate that the rootpaths point to both the binary -# and the JAR. -sh_test( - name = "ScalaBinaryRootpaths", - srcs = ["rootpaths_binary.sh"], - args = ["$(location :rootpath-script.out)"], - data = [":rootpath-script.out"], -) - -sh_test( - name = "test_binary_run_with_large_classpath", - srcs = ["test_binary_run_with_large_classpath.sh"], - args = ["$(location //test/src/main/scala/scalarules/test/large_classpath:largeClasspath)"], - data = ["//test/src/main/scala/scalarules/test/large_classpath:largeClasspath"], -) - -# Make sure scala_binary works in genrule environment -genrule( - name = "ScalaBinaryInGenrule", - outs = ["scala_binary_out.txt"], - cmd = "$(location :ScalaBinary) > $@", - tools = [":ScalaBinary"], -) - -sh_test( - name = "TestScalaBinaryInGenrule", - srcs = ["test_binary.sh"], - args = ["cat $(location :ScalaBinaryInGenrule)"], - data = [":ScalaBinaryInGenrule"], -) - scala_specs2_junit_test( name = "data_location_expansion", size = "small", srcs = ["src/main/scala/scalarules/test/location_expansion/LocationExpansionTest.scala"], data = ["@bazel_tools//src/main/protobuf:worker_protocol_java_proto"], - jvm_flags = ["-Dlocation.expanded='$(locations @bazel_tools//src/main/protobuf:worker_protocol_java_proto)'"], + jvm_flags = ["-Dlocation.expanded='$(rootpaths @bazel_tools//src/main/protobuf:worker_protocol_java_proto)'"], suffixes = ["Test"], ) @@ -646,24 +573,6 @@ scala_binary( ], ) -py_binary( - name = "jar_lister", - srcs = ["jar_lister.py"], -) - -sh_test( - name = "no_sig", - srcs = ["no_sigs.sh"], - args = [ - "$(location //test:jar_lister)", - "$(location //test:ScalaBinary_with_fake_deploy.jar)", - ], - data = [ - ":ScalaBinary_with_fake_deploy.jar", - ":jar_lister", - ], -) - scala_binary( name = "ScalaBinary_with_service_manifest_srcs", srcs = ["A.scala"], @@ -820,15 +729,3 @@ scala_junit_test( }, suffixes = ["Test"], ) - -py_binary( - name = "py_resource_binary", - srcs = ["py_resource.py"], - main = "py_resource.py", -) - -scala_test( - name = "ScalaTestResourcesFromLocalTargetTest", - srcs = ["ScalaTestResourcesFromLocalTargetTest.scala"], - resources = [":py_resource_binary"], -) diff --git a/test/jmh/BUILD b/test/jmh/BUILD index fca445c5c..2243cbb7f 100644 --- a/test/jmh/BUILD +++ b/test/jmh/BUILD @@ -1,5 +1,4 @@ load("@rules_java//java:defs.bzl", "java_library") -load("@rules_shell//shell:sh_test.bzl", "sh_test") load("//jmh:jmh.bzl", "scala_benchmark_jmh") load("//scala:scala.bzl", "scala_library", "scala_test") @@ -51,32 +50,6 @@ scala_benchmark_jmh( deps = [":add_numbers"], ) -scala_benchmark_jmh( - name = "test_jmh_jdk8", - srcs = ["TestJmhRuntimeJdk8.scala"], - runtime_jdk = select({ - "@bazel_tools//src/conditions:darwin": "@remote_jdk8_macos//:jdk", - "@bazel_tools//src/conditions:windows": "@remote_jdk8_windows//:jdk", - "//conditions:default": "@remote_jdk8_linux//:jdk", - }), -) - -scala_benchmark_jmh( - name = "test_jmh_jdk11", - srcs = ["TestJmhRuntimeJdk11.scala"], - runtime_jdk = "@rules_java//toolchains:remote_jdk11", -) - -[sh_test( - name = "Run" + "".join([binary[idx] if binary[idx].isalnum() else "_" for idx in range(len(binary))]), - srcs = ["test_binary.sh"], - args = ["$(location %s)" % binary], - data = [binary if (":" in binary) else (":%s" % binary)], -) for binary in [ - "//test/jmh:test_jmh_jdk8", - "//test/jmh:test_jmh_jdk11", -]] - scala_benchmark_jmh( name = "test_benchmark_testonly", testonly = True, diff --git a/test/jmh/runtime/BUILD b/test/jmh/runtime/BUILD new file mode 100644 index 000000000..8bd00b9d6 --- /dev/null +++ b/test/jmh/runtime/BUILD @@ -0,0 +1,28 @@ +load("@rules_shell//shell:sh_test.bzl", "sh_test") +load("//jmh:jmh.bzl", "scala_benchmark_jmh") + +scala_benchmark_jmh( + name = "test_jmh_jdk8", + srcs = ["TestJmhRuntimeJdk8.scala"], + runtime_jdk = select({ + "@bazel_tools//src/conditions:darwin": "@remote_jdk8_macos//:jdk", + "@bazel_tools//src/conditions:windows": "@remote_jdk8_windows//:jdk", + "//conditions:default": "@remote_jdk8_linux//:jdk", + }), +) + +scala_benchmark_jmh( + name = "test_jmh_jdk11", + srcs = ["TestJmhRuntimeJdk11.scala"], + runtime_jdk = "@rules_java//toolchains:remote_jdk11", +) + +[sh_test( + name = "Run" + "".join([binary[idx] if binary[idx].isalnum() else "_" for idx in range(len(binary))]), + srcs = ["test_binary.sh"], + args = ["$(rootpath %s)" % binary], + data = [binary if (":" in binary) else (":%s" % binary)], +) for binary in [ + ":test_jmh_jdk8", + ":test_jmh_jdk11", +]] diff --git a/test/jmh/TestJmhRuntimeJdk11.scala b/test/jmh/runtime/TestJmhRuntimeJdk11.scala similarity index 100% rename from test/jmh/TestJmhRuntimeJdk11.scala rename to test/jmh/runtime/TestJmhRuntimeJdk11.scala diff --git a/test/jmh/TestJmhRuntimeJdk8.scala b/test/jmh/runtime/TestJmhRuntimeJdk8.scala similarity index 100% rename from test/jmh/TestJmhRuntimeJdk8.scala rename to test/jmh/runtime/TestJmhRuntimeJdk8.scala diff --git a/test/jmh/test_binary.sh b/test/jmh/runtime/test_binary.sh similarity index 100% rename from test/jmh/test_binary.sh rename to test/jmh/runtime/test_binary.sh diff --git a/test/sh_tests/BUILD b/test/sh_tests/BUILD new file mode 100644 index 000000000..741ead320 --- /dev/null +++ b/test/sh_tests/BUILD @@ -0,0 +1,117 @@ +load("@rules_python//python:defs.bzl", "py_binary") +load("@rules_shell//shell:sh_test.bzl", "sh_test") +load("//scala:scala.bzl", "scala_test") + +package(default_testonly = 1) + +genrule( + name = "MixJavaScalaLibTestOutputs", + outs = ["mix_java_scala_lib_test_rule_outputs.txt"], + cmd = "echo $(rootpaths //test:MixJavaScalaLib) > $@", + tools = ["//test:MixJavaScalaLib"], +) + +sh_test( + name = "MixJavaScalaLibTest", + srcs = ["test_scala_library_outputs_mixed_java_scala_jars.sh"], + args = ["$(rootpath MixJavaScalaLibTestOutputs) MixJavaScalaLib"], + data = ["MixJavaScalaLibTestOutputs"], +) + +# Make sure scala_binary works in test environment +[sh_test( + name = "Run" + "".join([binary[idx] if binary[idx].isalnum() else "_" for idx in range(len(binary))]), + srcs = ["test_binary.sh"], + args = ["$(rootpath %s)" % binary], + data = [binary if (":" in binary) else (":%s" % binary)], +) for binary in [ + "//test:JavaBinary", + "//test:JavaBinary2", + "//test:JavaOnlySources", + "//test:MixJavaScalaLibBinary", + "//test:MixJavaScalaSrcjarLibBinary", + "//test:ScalaBinary", + "//test:ScalaLibBinary", + "//test:ResourcesStripScalaBinary", + "//test:ScalaBinary_dependent_on_binary_with_java", + "//test/src/main/scala/scalarules/test/classpath_resources:classpath_resource", + "//test/src/main/scala/scalarules/test/twitter_scrooge:justscrooges", + "//test/src/main/scala/scalarules/test/twitter_scrooge:barethrifts", + "//test/src/main/scala/scalarules/test/twitter_scrooge:twodeep_binary", + "//test/src/main/scala/scalarules/test/twitter_scrooge:justscrooge2b_binary", + "//test/src/main/scala/scalarules/test/large_classpath:largeClasspath", + "//test:test_scala_proto_server", + "//test:scala_binary_jdk_11", +]] + +# Generate a file containing the rootpaths of a Scala binary. +genrule( + name = "rootpath-script", + srcs = ["//test:ScalaBinary"], + outs = ["rootpath-script.out"], + cmd = """ + rootpaths=($(rootpaths {})) + (IFS='\n'; echo "$${{rootpaths[*]}}") | sort > $@ + """.format("//test:ScalaBinary"), +) + +# Validate that the rootpaths point to both the binary +# and the JAR. +sh_test( + name = "ScalaBinaryRootpaths", + srcs = ["rootpaths_binary.sh"], + args = ["$(rootpath :rootpath-script.out)"], + data = [":rootpath-script.out"], +) + +sh_test( + name = "test_binary_run_with_large_classpath", + srcs = ["test_binary_run_with_large_classpath.sh"], + args = ["$(rootpath //test/src/main/scala/scalarules/test/large_classpath:largeClasspath)"], + data = ["//test/src/main/scala/scalarules/test/large_classpath:largeClasspath"], +) + +# Make sure scala_binary works in genrule environment +genrule( + name = "ScalaBinaryInGenrule", + outs = ["scala_binary_out.txt"], + cmd = "$(execpath //test:ScalaBinary) > $@", + tools = ["//test:ScalaBinary"], +) + +sh_test( + name = "TestScalaBinaryInGenrule", + srcs = ["test_binary.sh"], + args = ["cat $(rootpath :ScalaBinaryInGenrule)"], + data = [":ScalaBinaryInGenrule"], +) + +py_binary( + name = "jar_lister", + srcs = ["jar_lister.py"], +) + +sh_test( + name = "no_sig", + srcs = ["no_sigs.sh"], + args = [ + "$(rootpath :jar_lister)", + "$(rootpath //test:ScalaBinary_with_fake_deploy.jar)", + ], + data = [ + ":jar_lister", + "//test:ScalaBinary_with_fake_deploy.jar", + ], +) + +py_binary( + name = "py_resource_binary", + srcs = ["py_resource.py"], + main = "py_resource.py", +) + +scala_test( + name = "ScalaTestResourcesFromLocalTargetTest", + srcs = ["ScalaTestResourcesFromLocalTargetTest.scala"], + resources = [":py_resource_binary"], +) diff --git a/test/ScalaTestResourcesFromLocalTargetTest.scala b/test/sh_tests/ScalaTestResourcesFromLocalTargetTest.scala similarity index 77% rename from test/ScalaTestResourcesFromLocalTargetTest.scala rename to test/sh_tests/ScalaTestResourcesFromLocalTargetTest.scala index f4b369ac4..075739c64 100644 --- a/test/ScalaTestResourcesFromLocalTargetTest.scala +++ b/test/sh_tests/ScalaTestResourcesFromLocalTargetTest.scala @@ -7,8 +7,8 @@ class ScalaTestResourcesFromLocalTargetTest extends AnyFlatSpec { "assert that local target is not placed in bazel-out, but rather next to the packaged code" in { val fileExt = if (isWindows) ".exe" else "" - assert(getClass.getResource("/bazel-out/darwin-fastbuild/bin/test/py_resource_binary" + fileExt) == null) - assert(getClass.getResource("/test/py_resource_binary"+ fileExt) != null) + assert(getClass.getResource("/bazel-out/darwin-fastbuild/bin/test/sh_tests/py_resource_binary" + fileExt) == null) + assert(getClass.getResource("/test/sh_tests/py_resource_binary"+ fileExt) != null) } def isWindows = System.getProperty("os.name").toLowerCase.contains("windows") diff --git a/test/jar_lister.py b/test/sh_tests/jar_lister.py similarity index 100% rename from test/jar_lister.py rename to test/sh_tests/jar_lister.py diff --git a/test/no_sigs.sh b/test/sh_tests/no_sigs.sh similarity index 100% rename from test/no_sigs.sh rename to test/sh_tests/no_sigs.sh diff --git a/test/py_resource.py b/test/sh_tests/py_resource.py similarity index 100% rename from test/py_resource.py rename to test/sh_tests/py_resource.py diff --git a/test/rootpaths_binary.sh b/test/sh_tests/rootpaths_binary.sh similarity index 100% rename from test/rootpaths_binary.sh rename to test/sh_tests/rootpaths_binary.sh diff --git a/test/test_binary.sh b/test/sh_tests/test_binary.sh similarity index 100% rename from test/test_binary.sh rename to test/sh_tests/test_binary.sh diff --git a/test/test_binary_run_with_large_classpath.sh b/test/sh_tests/test_binary_run_with_large_classpath.sh similarity index 100% rename from test/test_binary_run_with_large_classpath.sh rename to test/sh_tests/test_binary_run_with_large_classpath.sh diff --git a/test/test_scala_library_outputs_mixed_java_scala_jars.sh b/test/sh_tests/test_scala_library_outputs_mixed_java_scala_jars.sh similarity index 100% rename from test/test_scala_library_outputs_mixed_java_scala_jars.sh rename to test/sh_tests/test_scala_library_outputs_mixed_java_scala_jars.sh diff --git a/test/src/main/scala/scalarules/test/twitter_scrooge/BUILD b/test/src/main/scala/scalarules/test/twitter_scrooge/BUILD index 746741530..e6001ebd2 100644 --- a/test/src/main/scala/scalarules/test/twitter_scrooge/BUILD +++ b/test/src/main/scala/scalarules/test/twitter_scrooge/BUILD @@ -1,5 +1,4 @@ load("@rules_java//java:defs.bzl", "java_binary") -load("@rules_shell//shell:sh_test.bzl", "sh_test") load("//scala:scala.bzl", "scala_binary", "scala_library") load("//test/src/main/scala/scalarules/test/twitter_scrooge:twitter_scrooge_test.bzl", "twitter_scrooge_test_suite") load("//twitter_scrooge:twitter_scrooge.bzl", "scrooge_java_library", "scrooge_scala_library") @@ -319,61 +318,4 @@ scala_binary( deps = [":barethriftslib"], ) -sh_test( - name = "libthrift2_a_not_on_classpath", - srcs = ["string_in_file.sh"], - args = [ - "false", - "libthrift2_a", - "$(location :justscrooges)", - ], - data = [":justscrooges"], -) - -sh_test( - name = "java_jar_not_on_classpath", - srcs = ["string_in_file.sh"], - args = [ - "false", - "_java.jar", - "$(location :justscrooges)", - ], - data = [":justscrooges"], -) - -sh_test( - name = "java_jar_on_classpath_in_scrooges", - srcs = ["string_in_file.sh"], - args = [ - "true", - "_java.jar", - "$(location :justscrooges_java)", - ], - data = [":justscrooges_java"], -) - -sh_test( - name = "thrift999_in_namespace_in_java_jar", - srcs = ["string_in_filename_in_jar.sh"], - args = [ - "true", - "thrift/thrift_with_compiler_args/thrift5_scrooge_java.jar", - "thrift999", - "$(locations :justscrooges_java)", - ], - data = [":justscrooges_java"], -) - -sh_test( - name = "thrift5_not_in_namespace_in_java_jar", - srcs = ["string_in_filename_in_jar.sh"], - args = [ - "false", - "thrift/thrift_with_compiler_args/thrift5_scrooge_java.jar", - "thrift5", - "$(locations :justscrooges_java)", - ], - data = [":justscrooges_java"], -) - twitter_scrooge_test_suite() diff --git a/test/src/main/scala/scalarules/test/twitter_scrooge/strings/BUILD b/test/src/main/scala/scalarules/test/twitter_scrooge/strings/BUILD new file mode 100644 index 000000000..d616558e8 --- /dev/null +++ b/test/src/main/scala/scalarules/test/twitter_scrooge/strings/BUILD @@ -0,0 +1,64 @@ +load("@rules_shell//shell:sh_test.bzl", "sh_test") + +_PARENT = "//test/src/main/scala/scalarules/test/twitter_scrooge" + +_JUSTSCROOGES = _PARENT + ":justscrooges" + +_JUSTSCROOGES_JAVA = _PARENT + ":justscrooges_java" + +sh_test( + name = "libthrift2_a_not_on_classpath", + srcs = ["string_in_file.sh"], + args = [ + "false", + "libthrift2_a", + "$(rootpath %s)" % _JUSTSCROOGES, + ], + data = [_JUSTSCROOGES], +) + +sh_test( + name = "java_jar_not_on_classpath", + srcs = ["string_in_file.sh"], + args = [ + "false", + "_java.jar", + "$(rootpath %s)" % _JUSTSCROOGES, + ], + data = [_JUSTSCROOGES], +) + +sh_test( + name = "java_jar_on_classpath_in_scrooges", + srcs = ["string_in_file.sh"], + args = [ + "true", + "_java.jar", + "$(rootpath %s)" % _JUSTSCROOGES_JAVA, + ], + data = [_JUSTSCROOGES_JAVA], +) + +sh_test( + name = "thrift999_in_namespace_in_java_jar", + srcs = ["string_in_filename_in_jar.sh"], + args = [ + "true", + "thrift/thrift_with_compiler_args/thrift5_scrooge_java.jar", + "thrift999", + "$(rootpaths %s)" % _JUSTSCROOGES_JAVA, + ], + data = [_JUSTSCROOGES_JAVA], +) + +sh_test( + name = "thrift5_not_in_namespace_in_java_jar", + srcs = ["string_in_filename_in_jar.sh"], + args = [ + "false", + "thrift/thrift_with_compiler_args/thrift5_scrooge_java.jar", + "thrift5", + "$(rootpaths %s)" % _JUSTSCROOGES_JAVA, + ], + data = [_JUSTSCROOGES_JAVA], +) diff --git a/test/src/main/scala/scalarules/test/twitter_scrooge/string_in_file.sh b/test/src/main/scala/scalarules/test/twitter_scrooge/strings/string_in_file.sh similarity index 100% rename from test/src/main/scala/scalarules/test/twitter_scrooge/string_in_file.sh rename to test/src/main/scala/scalarules/test/twitter_scrooge/strings/string_in_file.sh diff --git a/test/src/main/scala/scalarules/test/twitter_scrooge/string_in_filename_in_jar.sh b/test/src/main/scala/scalarules/test/twitter_scrooge/strings/string_in_filename_in_jar.sh similarity index 100% rename from test/src/main/scala/scalarules/test/twitter_scrooge/string_in_filename_in_jar.sh rename to test/src/main/scala/scalarules/test/twitter_scrooge/strings/string_in_filename_in_jar.sh diff --git a/test_cross_build/MODULE.bazel b/test_cross_build/MODULE.bazel index e2c463a53..e3f8a74d7 100644 --- a/test_cross_build/MODULE.bazel +++ b/test_cross_build/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../deps/latest", diff --git a/test_dependency_versions.sh b/test_dependency_versions.sh index 072f8ddd8..76c20012d 100755 --- a/test_dependency_versions.sh +++ b/test_dependency_versions.sh @@ -41,10 +41,30 @@ teardown_suite() { # Explicitly disable this, since this test sets the Bazel version. export USE_BAZEL_VERSION="" +RULES_SCALA_TARGETS=( + "//test:HelloLibTest" + "//test:ScalaBinary" + "//test:ScalaDocTestLibsOnly" + "//test/jmh:jmh_command_line_parsing_test" + "//test/proto:standalone_scala_proto_outs_test" + "//test/src/main/scala/scalarules/test/twitter_scrooge:twitter_scrooge_tests" +) + +MULTI_FRAMEWORKS_TOOLCHAIN_TARGETS=( + "//example:scalatest_example" + "//example:specs2_example" +) + +ALL_TARGETS=( + "//..." + "${RULES_SCALA_TARGETS[@]/#/@rules_scala}" + "${MULTI_FRAMEWORKS_TOOLCHAIN_TARGETS[@]/#/@multi_frameworks_toolchain}" +) + do_build_and_test() { # These are the minimum versions as described in `README.md` and as set in the # top level `MODULE.bazel` file. Update both if/when the first test test - # fails. If another test fails, update the `README.md` informaton. + # fails. If another test fails, update the `README.md` information. local bazelversion="7.1.0" local skylib_version="1.6.0" local platforms_version="0.0.9" @@ -92,7 +112,6 @@ do_build_and_test() { done echo "$bazelversion" >.bazelversion - cp "${dir}/deps/test/BUILD.bazel.test" BUILD # Set up .bazelrc printf '%s\n' \ @@ -129,15 +148,14 @@ do_build_and_test() { fi # Set up the `protobuf` precompiled protocol compiler toolchain patch. - if [[ "${protobuf_version:0:3}" =~ ^(29|30)\. ]]; then + if [[ "${protobuf_version:0:3}" =~ ^(29|[3-9][0-9]+)\. ]]; then cp "${dir}/protoc/0001-protobuf-19679-rm-protoc-dep.patch" ./protobuf.patch else touch ./protobuf.patch fi - # Render the MODULE.bazel file - sed -e "s%\${bazelversion}%${bazelversion}%" \ - -e "s%\${skylib_version}%${skylib_version}%" \ + # Render the MODULE.bazel file and create an empty top level package. + sed -e "s%\${skylib_version}%${skylib_version}%" \ -e "s%\${platforms_version}%${platforms_version}%" \ -e "s%\${protobuf_version}%${protobuf_version}%" \ -e "s%\${rules_java_version}%${rules_java_version}%" \ @@ -145,26 +163,14 @@ do_build_and_test() { "${dir}/deps/test/MODULE.bazel.template" >MODULE.bazel # Copy files needed by the test targets - cp \ - "${dir}"/deps/test/*.{scala,bzl} \ - "${dir}"/examples/testing/multi_frameworks_toolchain/example/*.scala \ - "${dir}"/test/jmh/{AddNumbers.scala,JavaType.java,ScalaType.scala,TestBenchmark.scala,data.txt} \ - "${dir}"/test/proto/standalone.proto \ - "${dir}"/test/src/main/scala/scalarules/test/twitter_scrooge/thrift/thrift2/thrift3/Thrift3.thrift \ + cp "${dir}/deps/test/BUILD.bazel.test" BUILD + cp "${dir}"/deps/test/*.{scala,bzl} \ + "${dir}/examples/testing/multi_frameworks_toolchain/example/ScalaTestExampleTest.scala" \ . set -e - bazel build //... - bazel test //... - - # Windows fails with: - # FATAL: ExecuteProgram(C:\...\ScalafmtTest.format-test) failed: - # ERROR: src/main/native/windows/process.cc(202): - # CreateProcessW("C:\...\ScalafmtTest.format-test"): - # %1 is not a valid Win32 application. - if ! is_windows; then - bazel run //:ScalafmtTest.format-test - fi + bazel build "${ALL_TARGETS[@]}" + bazel test "${ALL_TARGETS[@]}" } test_minimum_supported_versions() { diff --git a/test_rules_scala.sh b/test_rules_scala.sh index 0b1ced9a4..7e856841e 100755 --- a/test_rules_scala.sh +++ b/test_rules_scala.sh @@ -26,7 +26,7 @@ $runner bazel test "${test_output_flag}" --extra_toolchains=//scala:minimal_dire $runner bazel build test_expect_failure/missing_direct_deps/internal_deps/... --strict_java_deps=warn --extra_toolchains=//test/toolchains:high_level_transitive_deps_strict_deps_warn $runner bazel build //test_expect_failure/proto_source_root/... --strict_proto_deps=off $runner bazel test "$test_output_flag" //test/... --extra_toolchains="//test_expect_failure/plus_one_deps:plus_one_deps" -$runner bazel build test:ScalaBinaryInGenrule --nolegacy_external_runfiles +$runner bazel build //test/sh_tests:ScalaBinaryInGenrule --nolegacy_external_runfiles $runner bazel build //test_statsfile:Simple_statsfile $runner bazel build //test_statsfile:SimpleNoStatsFile_statsfile --extra_toolchains="//test/toolchains:enable_stats_file_disabled_toolchain" . "${test_dir}"/test_compiler_sources_integrity.sh diff --git a/test_version/MODULE.bazel.template b/test_version/MODULE.bazel.template index 93ec00abf..d35c1e63f 100644 --- a/test_version/MODULE.bazel.template +++ b/test_version/MODULE.bazel.template @@ -8,7 +8,7 @@ local_path_override( path = "../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../deps/latest", diff --git a/third_party/test/proto/MODULE.bazel b/third_party/test/proto/MODULE.bazel index 59637ee4b..3c3332310 100644 --- a/third_party/test/proto/MODULE.bazel +++ b/third_party/test/proto/MODULE.bazel @@ -8,7 +8,7 @@ local_path_override( path = "../../..", ) -bazel_dep(name = "latest_dependencies") +bazel_dep(name = "latest_dependencies", dev_dependency = True) local_path_override( module_name = "latest_dependencies", path = "../../../deps/latest",