Skip to content

Commit d7eed19

Browse files
committed
[FAIL] use bazel-integration-testing framework to test toolchain
Could not understand how to load current repo as external repo within the test
1 parent 8fdbf2c commit d7eed19

File tree

6 files changed

+116
-21
lines changed

6 files changed

+116
-21
lines changed

WORKSPACE

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,16 @@ filegroup(
8383

8484
load("//scala:scala.bzl", "register_scala_toolchains")
8585
register_scala_toolchains()
86+
87+
88+
build_bazel_integration_test_version="55a6a70dbcc2cc7699ee715746fb1452788f8d3c" # update this as needed
89+
90+
http_archive(
91+
name = "build_bazel_integration_test",
92+
url = "https://github.com/bazelbuild/bazel-integration-testing/archive/%s.zip"%build_bazel_integration_test_version,
93+
type = "zip",
94+
strip_prefix= "bazel-integration-testing-%s" % build_bazel_integration_test_version
95+
)
96+
97+
load("@build_bazel_integration_test//tools:bazel_java_integration_test.bzl","bazel_java_integration_test_deps")
98+
bazel_java_integration_test_deps()

test/toolchain/BUILD

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
load("//specs2:specs2_junit.bzl","specs2_junit_dependencies")
2+
load("//scala:scala.bzl","scala_library")
3+
load("@build_bazel_integration_test//tools:bazel_java_integration_test.bzl","bazel_java_integration_test")
4+
5+
scala_library(
6+
name = "toolchain",
7+
srcs = ["ScalaToolchainTest.scala"],
8+
deps = ["@build_bazel_integration_test//java/build/bazel/tests/integration:integration", "//external:io_bazel_rules_scala/dependency/junit/junit", "@com_google_guava_guava_21_0//jar"] + specs2_junit_dependencies(),
9+
testonly = 1
10+
)
11+
12+
bazel_java_integration_test(
13+
name = "ScalaToolchainTestRunner",
14+
srcs = [],
15+
test_class = "scala.test.toolchain.ScalaToolchainTest",
16+
runtime_deps = [":toolchain"],
17+
)
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package scala.test.toolchain
2+
3+
import build.bazel.tests.integration.BazelBaseTestCase
4+
import org.specs2.mutable.{Before, SpecificationWithJUnit}
5+
import org.specs2.specification.{BeforeAll, Scope}
6+
import scala.collection.JavaConverters._
7+
8+
//noinspection TypeAnnotation
9+
class ScalaToolchainTest extends SpecificationWithJUnit with BeforeAll {
10+
11+
trait ctx extends Scope with Before {
12+
val bazelDriver = new BazelBaseTestCase {
13+
def writeFile(path: String, content: String) = scratchFile(path, content)
14+
15+
def runBazel(args: String*) = bazel(args.asJava)
16+
17+
def writeWorkspaceFile(workspaceName: String, repositories: List[String], toolchains: List[String]) = {
18+
val toolchainList = toolchains.map(toolchain => s""""$toolchain"""").mkString(",\n")
19+
// TODO: how to load current code as "local repository" inside the test?? what is the path
20+
val localRepositories = repositories.map(repoName =>
21+
s"""
22+
|local_repository(
23+
| name = "$repoName",
24+
| path = "./external/$repoName"
25+
|)
26+
""".stripMargin).mkString("\n")
27+
scratchFile("./WORKSPACE", s"workspace(name = '$workspaceName')",
28+
s"""
29+
|register_toolchains(
30+
|$toolchainList
31+
|)
32+
|
33+
|$localRepositories
34+
|
35+
|load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
36+
|scala_repositories()
37+
""".stripMargin)
38+
}
39+
}
40+
41+
override def before = {bazelDriver.setUp()}
42+
}
43+
44+
"scala_library" should {
45+
"test that build passes when loading default toolchain" in new ctx {
46+
bazelDriver.writeFile("HelloWorld.scala",
47+
"""package test_expect_failure.scalacopts_from_toolchain
48+
|
49+
|class HelloWorld(name:String){
50+
| def talk():String = {
51+
| val notUsed = "No one uses me!..."
52+
| s"hello $name"
53+
| }
54+
|}""".stripMargin)
55+
bazelDriver.writeFile("BUILD",
56+
"""load("@io_bazel_rules_scala//scala:scala_toolchain.bzl", "scala_toolchain")
57+
|load("@io_bazel_rules_scala//scala:scala.bzl", "scala_library")
58+
|
59+
|scala_toolchain(
60+
| name = "failing_scala_toolchain",
61+
| scalacopts = ["-Ywarn-unused","-Xfatal-warnings"]
62+
|)
63+
|
64+
|scala_library(
65+
| name = "hello_world",
66+
| srcs = ["HelloWorld.scala"],
67+
|)
68+
|
69+
""".
70+
stripMargin)
71+
bazelDriver.writeWorkspaceFile(
72+
workspaceName = "rules_scala_toolchain_test",
73+
repositories = List("io_bazel_rules_scala"),
74+
toolchains = List("@io_bazel_rules_scala//scala:scala_toolchain"))
75+
val cmd = bazelDriver.runBazel("build", "//:hello_world")
76+
val exitCode: Int = cmd.run()
77+
val stderr = cmd.getErrorLines.asScala.mkString("\n")
78+
println(stderr)
79+
val stdout = cmd.getOutputLines.asScala.mkString("\n")
80+
println(stdout)
81+
exitCode ==== 0
82+
}
83+
}
84+
85+
override def beforeAll(): Unit = BazelBaseTestCase.setUpClass()
86+
}

test_expect_failure/scalacopts_from_toolchain/BUILD

Lines changed: 0 additions & 12 deletions
This file was deleted.

test_expect_failure/scalacopts_from_toolchain/HelloWorld.scala

Lines changed: 0 additions & 8 deletions
This file was deleted.

test_run.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -780,4 +780,3 @@ $runner bazel run test:test_scala_proto_server
780780
$runner test_scala_library_expect_failure_on_missing_direct_deps_warn_mode_java
781781
$runner test_scala_library_expect_better_failure_message_on_missing_transitive_dependency_labels_from_other_jvm_rules
782782
$runner test_scala_library_expect_failure_on_missing_direct_deps_warn_mode2
783-
$runner test_scalaopts_from_scala_toolchain

0 commit comments

Comments
 (0)