diff options
Diffstat (limited to 'java/java_test.go')
-rw-r--r-- | java/java_test.go | 91 |
1 files changed, 72 insertions, 19 deletions
diff --git a/java/java_test.go b/java/java_test.go index 052345871..ed70b7092 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -20,6 +20,7 @@ import ( "path/filepath" "reflect" "regexp" + "runtime" "strconv" "strings" "testing" @@ -462,6 +463,38 @@ func TestBinary(t *testing.T) { } } +func TestTest(t *testing.T) { + ctx, _ := testJava(t, ` + java_test_host { + name: "foo", + srcs: ["a.java"], + jni_libs: ["libjni"], + } + + cc_library_shared { + name: "libjni", + host_supported: true, + device_supported: false, + stl: "none", + } + `) + + buildOS := android.BuildOs.String() + + foo := ctx.ModuleForTests("foo", buildOS+"_common").Module().(*TestHost) + + expected := "lib64/libjni.so" + if runtime.GOOS == "darwin" { + expected = "lib64/libjni.dylib" + } + + fooTestData := foo.data + if len(fooTestData) != 1 || fooTestData[0].Rel() != expected { + t.Errorf(`expected foo test data relative path [%q], got %q`, + expected, fooTestData.Strings()) + } +} + func TestHostBinaryNoJavaDebugInfoOverride(t *testing.T) { bp := ` java_library { @@ -1614,31 +1647,51 @@ func TestJavaSdkLibrary_StubOrImplOnlyLibs(t *testing.T) { java_sdk_library { name: "sdklib", srcs: ["a.java"], - impl_only_libs: ["foo"], - stub_only_libs: ["bar"], - } - java_library { - name: "foo", - srcs: ["a.java"], - sdk_version: "current", + libs: ["lib"], + static_libs: ["static-lib"], + impl_only_libs: ["impl-only-lib"], + stub_only_libs: ["stub-only-lib"], + stub_only_static_libs: ["stub-only-static-lib"], } - java_library { - name: "bar", + java_defaults { + name: "defaults", srcs: ["a.java"], sdk_version: "current", } + java_library { name: "lib", defaults: ["defaults"] } + java_library { name: "static-lib", defaults: ["defaults"] } + java_library { name: "impl-only-lib", defaults: ["defaults"] } + java_library { name: "stub-only-lib", defaults: ["defaults"] } + java_library { name: "stub-only-static-lib", defaults: ["defaults"] } `) - - for _, implName := range []string{"sdklib", "sdklib.impl"} { - implJavacCp := result.ModuleForTests(implName, "android_common").Rule("javac").Args["classpath"] - if !strings.Contains(implJavacCp, "/foo.jar") || strings.Contains(implJavacCp, "/bar.jar") { - t.Errorf("%v javac classpath %v does not contain foo and not bar", implName, implJavacCp) - } + var expectations = []struct { + lib string + on_impl_classpath bool + on_stub_classpath bool + in_impl_combined bool + in_stub_combined bool + }{ + {lib: "lib", on_impl_classpath: true}, + {lib: "static-lib", in_impl_combined: true}, + {lib: "impl-only-lib", on_impl_classpath: true}, + {lib: "stub-only-lib", on_stub_classpath: true}, + {lib: "stub-only-static-lib", in_stub_combined: true}, } - stubName := apiScopePublic.stubsLibraryModuleName("sdklib") - stubsJavacCp := result.ModuleForTests(stubName, "android_common").Rule("javac").Args["classpath"] - if strings.Contains(stubsJavacCp, "/foo.jar") || !strings.Contains(stubsJavacCp, "/bar.jar") { - t.Errorf("stubs javac classpath %v does not contain bar and not foo", stubsJavacCp) + verify := func(sdklib, dep string, cp, combined bool) { + sdklibCp := result.ModuleForTests(sdklib, "android_common").Rule("javac").Args["classpath"] + expected := cp || combined // Every combined jar is also on the classpath. + android.AssertStringContainsEquals(t, "bad classpath for "+sdklib, sdklibCp, "/"+dep+".jar", expected) + + combineJarInputs := result.ModuleForTests(sdklib, "android_common").Rule("combineJar").Inputs.Strings() + depPath := filepath.Join("out", "soong", ".intermediates", dep, "android_common", "turbine-combined", dep+".jar") + android.AssertStringListContainsEquals(t, "bad combined inputs for "+sdklib, combineJarInputs, depPath, combined) + } + for _, expectation := range expectations { + verify("sdklib", expectation.lib, expectation.on_impl_classpath, expectation.in_impl_combined) + verify("sdklib.impl", expectation.lib, expectation.on_impl_classpath, expectation.in_impl_combined) + + stubName := apiScopePublic.stubsLibraryModuleName("sdklib") + verify(stubName, expectation.lib, expectation.on_stub_classpath, expectation.in_stub_combined) } } |