Track the current java_sdk_library(_import) deps
Adds some tests to track the current dependencies between java_sdk_library, java_sdk_library_import and their child modules in various configurations. This is in preparation for a series of changes that will update the dependencies to ensure that the java_sdk_library always depends on the source modules that it creates and java_sdk_library_import always depends on the prebuilt modules that it creates. Comments in the tests highlight the parts that will be affected by the follow up changes. Bug: 159902351 Test: m nothing Change-Id: I8eea3ac80061f5cbbc9dec201750c4b59e224b4b
This commit is contained in:
parent
5e291c238f
commit
ca8d9a5018
1 changed files with 121 additions and 0 deletions
|
@ -25,6 +25,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/google/blueprint"
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
|
@ -171,6 +172,20 @@ func moduleToPath(name string) string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkModuleDependencies(t *testing.T, ctx *android.TestContext, name, variant string, expected []string) {
|
||||||
|
t.Helper()
|
||||||
|
module := ctx.ModuleForTests(name, variant).Module()
|
||||||
|
deps := []string{}
|
||||||
|
ctx.VisitDirectDeps(module, func(m blueprint.Module) {
|
||||||
|
deps = append(deps, m.Name())
|
||||||
|
})
|
||||||
|
sort.Strings(deps)
|
||||||
|
|
||||||
|
if actual := deps; !reflect.DeepEqual(expected, actual) {
|
||||||
|
t.Errorf("expected %#q, found %#q", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestJavaLinkType(t *testing.T) {
|
func TestJavaLinkType(t *testing.T) {
|
||||||
testJava(t, `
|
testJava(t, `
|
||||||
java_library {
|
java_library {
|
||||||
|
@ -630,6 +645,90 @@ func TestJavaSdkLibraryImport(t *testing.T) {
|
||||||
t.Errorf("foo classpath %v does not contain %q", javac.Args["classpath"], sdklibStubsJar.String())
|
t.Errorf("foo classpath %v does not contain %q", javac.Args["classpath"], sdklibStubsJar.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "sdklib", "android_common", []string{
|
||||||
|
`prebuilt_sdklib.stubs`,
|
||||||
|
`prebuilt_sdklib.stubs.source.test`,
|
||||||
|
`prebuilt_sdklib.stubs.system`,
|
||||||
|
`prebuilt_sdklib.stubs.test`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJavaSdkLibraryImport_WithSource(t *testing.T) {
|
||||||
|
ctx, _ := testJava(t, `
|
||||||
|
java_sdk_library {
|
||||||
|
name: "sdklib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "none",
|
||||||
|
system_modules: "none",
|
||||||
|
public: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library_import {
|
||||||
|
name: "sdklib",
|
||||||
|
public: {
|
||||||
|
jars: ["a.jar"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "sdklib", "android_common", []string{
|
||||||
|
`dex2oatd`,
|
||||||
|
`prebuilt_sdklib`,
|
||||||
|
`sdklib.impl`,
|
||||||
|
`sdklib.stubs`,
|
||||||
|
`sdklib.stubs.source`,
|
||||||
|
`sdklib.xml`,
|
||||||
|
})
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "prebuilt_sdklib", "android_common", []string{
|
||||||
|
`sdklib.impl`,
|
||||||
|
// This should be prebuilt_sdklib.stubs but is set to sdklib.stubs because the
|
||||||
|
// dependency is added after prebuilts may have been renamed and so has to use
|
||||||
|
// the renamed name.
|
||||||
|
`sdklib.stubs`,
|
||||||
|
`sdklib.xml`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJavaSdkLibraryImport_Preferred(t *testing.T) {
|
||||||
|
ctx, _ := testJava(t, `
|
||||||
|
java_sdk_library {
|
||||||
|
name: "sdklib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "none",
|
||||||
|
system_modules: "none",
|
||||||
|
public: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library_import {
|
||||||
|
name: "sdklib",
|
||||||
|
prefer: true,
|
||||||
|
public: {
|
||||||
|
jars: ["a.jar"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "sdklib", "android_common", []string{
|
||||||
|
`dex2oatd`,
|
||||||
|
`prebuilt_sdklib`,
|
||||||
|
// This should be sdklib.stubs but is switched to the prebuilt because it is preferred.
|
||||||
|
`prebuilt_sdklib.stubs`,
|
||||||
|
`sdklib.impl`,
|
||||||
|
`sdklib.stubs.source`,
|
||||||
|
`sdklib.xml`,
|
||||||
|
})
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "prebuilt_sdklib", "android_common", []string{
|
||||||
|
`prebuilt_sdklib.stubs`,
|
||||||
|
`sdklib.impl`,
|
||||||
|
`sdklib.xml`,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDefaults(t *testing.T) {
|
func TestDefaults(t *testing.T) {
|
||||||
|
@ -1379,6 +1478,28 @@ func TestJavaSdkLibrary_AccessOutputFiles_MissingScope(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJavaSdkLibrary_Deps(t *testing.T) {
|
||||||
|
ctx, _ := testJava(t, `
|
||||||
|
java_sdk_library {
|
||||||
|
name: "sdklib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "none",
|
||||||
|
system_modules: "none",
|
||||||
|
public: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
checkModuleDependencies(t, ctx, "sdklib", "android_common", []string{
|
||||||
|
`dex2oatd`,
|
||||||
|
`sdklib.impl`,
|
||||||
|
`sdklib.stubs`,
|
||||||
|
`sdklib.stubs.source`,
|
||||||
|
`sdklib.xml`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestJavaSdkLibraryImport_AccessOutputFiles(t *testing.T) {
|
func TestJavaSdkLibraryImport_AccessOutputFiles(t *testing.T) {
|
||||||
testJava(t, `
|
testJava(t, `
|
||||||
java_sdk_library_import {
|
java_sdk_library_import {
|
||||||
|
|
Loading…
Reference in a new issue