diff options
Diffstat (limited to 'java/java_test.go')
-rw-r--r-- | java/java_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/java/java_test.go b/java/java_test.go index b819447c..82eff1e9 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -22,6 +22,7 @@ import ( "os" "path/filepath" "reflect" + "strconv" "strings" "testing" ) @@ -669,6 +670,71 @@ func TestKotlin(t *testing.T) { } } +func TestTurbine(t *testing.T) { + ctx := testJava(t, ` + java_library { + name: "foo", + srcs: ["a.java"], + } + + java_library { + name: "bar", + srcs: ["b.java"], + static_libs: ["foo"], + } + + java_library { + name: "baz", + srcs: ["c.java"], + libs: ["bar"], + sdk_version: "14", + } + `) + + fooTurbine := ctx.ModuleForTests("foo", "android_common").Rule("turbine") + barTurbine := ctx.ModuleForTests("bar", "android_common").Rule("turbine") + barJavac := ctx.ModuleForTests("bar", "android_common").Rule("javac") + barTurbineCombined := ctx.ModuleForTests("bar", "android_common").Description("for turbine") + bazJavac := ctx.ModuleForTests("baz", "android_common").Rule("javac") + + if len(fooTurbine.Inputs) != 1 || fooTurbine.Inputs[0].String() != "a.java" { + t.Errorf(`foo inputs %v != ["a.java"]`, fooTurbine.Inputs) + } + + fooHeaderJar := filepath.Join(buildDir, ".intermediates", "foo", "android_common", "turbine-combined", "foo.jar") + if !strings.Contains(barTurbine.Args["classpath"], fooHeaderJar) { + t.Errorf("bar turbine classpath %v does not contain %q", barTurbine.Args["classpath"], fooHeaderJar) + } + if !strings.Contains(barJavac.Args["classpath"], fooHeaderJar) { + t.Errorf("bar javac classpath %v does not contain %q", barJavac.Args["classpath"], fooHeaderJar) + } + if len(barTurbineCombined.Inputs) != 2 || barTurbineCombined.Inputs[1].String() != fooHeaderJar { + t.Errorf("bar turbine combineJar inputs %v does not contain %q", barTurbineCombined.Inputs, fooHeaderJar) + } + if !strings.Contains(bazJavac.Args["classpath"], "prebuilts/sdk/14/android.jar") { + t.Errorf("baz javac classpath %v does not contain %q", bazJavac.Args["classpath"], + "prebuilts/sdk/14/android.jar") + } +} + +func TestSharding(t *testing.T) { + ctx := testJava(t, ` + java_library { + name: "bar", + srcs: ["a.java","b.java","c.java"], + javac_shard_size: 1 + } + `) + + barHeaderJar := filepath.Join(buildDir, ".intermediates", "bar", "android_common", "turbine-combined", "bar.jar") + for i := 0; i < 3; i++ { + barJavac := ctx.ModuleForTests("bar", "android_common").Description("javac" + strconv.Itoa(i)) + if !strings.Contains(barJavac.Args["classpath"], barHeaderJar) { + t.Errorf("bar javac classpath %v does not contain %q", barJavac.Args["classpath"], barHeaderJar) + } + } +} + func fail(t *testing.T, errs []error) { if len(errs) > 0 { for _, err := range errs { |