Merge "Convert TestClasspath to test fixtures"
This commit is contained in:
@@ -245,7 +245,14 @@ func moduleToPath(name string) string {
|
|||||||
// defaultModuleToPath constructs a path to the turbine generate jar for a default test module that
|
// defaultModuleToPath constructs a path to the turbine generate jar for a default test module that
|
||||||
// is defined in PrepareForIntegrationTestWithJava
|
// is defined in PrepareForIntegrationTestWithJava
|
||||||
func defaultModuleToPath(name string) string {
|
func defaultModuleToPath(name string) string {
|
||||||
return filepath.Join(buildDir, ".intermediates", defaultJavaDir, name, "android_common", "turbine-combined", name+".jar")
|
switch {
|
||||||
|
case name == `""`:
|
||||||
|
return name
|
||||||
|
case strings.HasSuffix(name, ".jar"):
|
||||||
|
return name
|
||||||
|
default:
|
||||||
|
return filepath.Join(buildDir, ".intermediates", defaultJavaDir, name, "android_common", "turbine-combined", name+".jar")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaLinkType(t *testing.T) {
|
func TestJavaLinkType(t *testing.T) {
|
||||||
|
@@ -27,6 +27,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestClasspath(t *testing.T) {
|
func TestClasspath(t *testing.T) {
|
||||||
|
const frameworkAidl = "-I" + defaultJavaDir + "/framework/aidl"
|
||||||
var classpathTestcases = []struct {
|
var classpathTestcases = []struct {
|
||||||
name string
|
name string
|
||||||
unbundled bool
|
unbundled bool
|
||||||
@@ -52,7 +53,7 @@ func TestClasspath(t *testing.T) {
|
|||||||
system: config.StableCorePlatformSystemModules,
|
system: config.StableCorePlatformSystemModules,
|
||||||
java8classpath: config.FrameworkLibraries,
|
java8classpath: config.FrameworkLibraries,
|
||||||
java9classpath: config.FrameworkLibraries,
|
java9classpath: config.FrameworkLibraries,
|
||||||
aidl: "-Iframework/aidl",
|
aidl: frameworkAidl,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `sdk_version:"core_platform"`,
|
name: `sdk_version:"core_platform"`,
|
||||||
@@ -69,7 +70,7 @@ func TestClasspath(t *testing.T) {
|
|||||||
system: config.StableCorePlatformSystemModules,
|
system: config.StableCorePlatformSystemModules,
|
||||||
java8classpath: config.FrameworkLibraries,
|
java8classpath: config.FrameworkLibraries,
|
||||||
java9classpath: config.FrameworkLibraries,
|
java9classpath: config.FrameworkLibraries,
|
||||||
aidl: "-Iframework/aidl",
|
aidl: frameworkAidl,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -263,7 +264,7 @@ func TestClasspath(t *testing.T) {
|
|||||||
convertModulesToPaths := func(cp []string) []string {
|
convertModulesToPaths := func(cp []string) []string {
|
||||||
ret := make([]string, len(cp))
|
ret := make([]string, len(cp))
|
||||||
for i, e := range cp {
|
for i, e := range cp {
|
||||||
ret[i] = moduleToPath(e)
|
ret[i] = defaultModuleToPath(e)
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
@@ -299,6 +300,8 @@ func TestClasspath(t *testing.T) {
|
|||||||
dir := ""
|
dir := ""
|
||||||
if strings.HasPrefix(testcase.system, "sdk_public_") {
|
if strings.HasPrefix(testcase.system, "sdk_public_") {
|
||||||
dir = "prebuilts/sdk"
|
dir = "prebuilts/sdk"
|
||||||
|
} else {
|
||||||
|
dir = defaultJavaDir
|
||||||
}
|
}
|
||||||
system = "--system=" + filepath.Join(buildDir, ".intermediates", dir, testcase.system, "android_common", "system")
|
system = "--system=" + filepath.Join(buildDir, ".intermediates", dir, testcase.system, "android_common", "system")
|
||||||
// The module-relative parts of these paths are hardcoded in system_modules.go:
|
// The module-relative parts of these paths are hardcoded in system_modules.go:
|
||||||
@@ -309,8 +312,8 @@ func TestClasspath(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
checkClasspath := func(t *testing.T, ctx *android.TestContext, isJava8 bool) {
|
checkClasspath := func(t *testing.T, result *android.TestResult, isJava8 bool) {
|
||||||
foo := ctx.ModuleForTests("foo", variant)
|
foo := result.ModuleForTests("foo", variant)
|
||||||
javac := foo.Rule("javac")
|
javac := foo.Rule("javac")
|
||||||
var deps []string
|
var deps []string
|
||||||
|
|
||||||
@@ -349,78 +352,63 @@ func TestClasspath(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fixtureFactory := javaFixtureFactory.Extend(
|
||||||
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||||
|
if testcase.unbundled {
|
||||||
|
variables.Unbundled_build = proptools.BoolPtr(true)
|
||||||
|
variables.Always_use_prebuilt_sdks = proptools.BoolPtr(true)
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
android.FixtureModifyEnv(func(env map[string]string) {
|
||||||
|
if env["ANDROID_JAVA8_HOME"] == "" {
|
||||||
|
env["ANDROID_JAVA8_HOME"] = "jdk8"
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
// Test with legacy javac -source 1.8 -target 1.8
|
// Test with legacy javac -source 1.8 -target 1.8
|
||||||
t.Run("Java language level 8", func(t *testing.T) {
|
t.Run("Java language level 8", func(t *testing.T) {
|
||||||
config := testConfig(nil, bpJava8, nil)
|
result := fixtureFactory.RunTestWithBp(t, bpJava8)
|
||||||
if testcase.unbundled {
|
|
||||||
config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true)
|
|
||||||
config.TestProductVariables.Always_use_prebuilt_sdks = proptools.BoolPtr(true)
|
|
||||||
}
|
|
||||||
ctx := testContext(config)
|
|
||||||
run(t, ctx, config)
|
|
||||||
|
|
||||||
checkClasspath(t, ctx, true /* isJava8 */)
|
checkClasspath(t, result, true /* isJava8 */)
|
||||||
|
|
||||||
if testcase.host != android.Host {
|
if testcase.host != android.Host {
|
||||||
aidl := ctx.ModuleForTests("foo", variant).Rule("aidl")
|
aidl := result.ModuleForTests("foo", variant).Rule("aidl")
|
||||||
|
|
||||||
if g, w := aidl.RuleParams.Command, testcase.aidl+" -I."; !strings.Contains(g, w) {
|
android.AssertStringDoesContain(t, "aidl command", aidl.RuleParams.Command, testcase.aidl+" -I.")
|
||||||
t.Errorf("want aidl command to contain %q, got %q", w, g)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// Test with default javac -source 9 -target 9
|
// Test with default javac -source 9 -target 9
|
||||||
t.Run("Java language level 9", func(t *testing.T) {
|
t.Run("Java language level 9", func(t *testing.T) {
|
||||||
config := testConfig(nil, bp, nil)
|
result := fixtureFactory.RunTestWithBp(t, bp)
|
||||||
if testcase.unbundled {
|
|
||||||
config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true)
|
|
||||||
config.TestProductVariables.Always_use_prebuilt_sdks = proptools.BoolPtr(true)
|
|
||||||
}
|
|
||||||
ctx := testContext(config)
|
|
||||||
run(t, ctx, config)
|
|
||||||
|
|
||||||
checkClasspath(t, ctx, false /* isJava8 */)
|
checkClasspath(t, result, false /* isJava8 */)
|
||||||
|
|
||||||
if testcase.host != android.Host {
|
if testcase.host != android.Host {
|
||||||
aidl := ctx.ModuleForTests("foo", variant).Rule("aidl")
|
aidl := result.ModuleForTests("foo", variant).Rule("aidl")
|
||||||
|
|
||||||
if g, w := aidl.RuleParams.Command, testcase.aidl+" -I."; !strings.Contains(g, w) {
|
android.AssertStringDoesContain(t, "aidl command", aidl.RuleParams.Command, testcase.aidl+" -I.")
|
||||||
t.Errorf("want aidl command to contain %q, got %q", w, g)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
prepareWithPlatformVersionRel := android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||||
|
variables.Platform_sdk_codename = proptools.StringPtr("REL")
|
||||||
|
variables.Platform_sdk_final = proptools.BoolPtr(true)
|
||||||
|
})
|
||||||
|
|
||||||
// Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 8 -target 8
|
// Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 8 -target 8
|
||||||
t.Run("REL + Java language level 8", func(t *testing.T) {
|
t.Run("REL + Java language level 8", func(t *testing.T) {
|
||||||
config := testConfig(nil, bpJava8, nil)
|
result := fixtureFactory.Extend(prepareWithPlatformVersionRel).RunTestWithBp(t, bpJava8)
|
||||||
config.TestProductVariables.Platform_sdk_codename = proptools.StringPtr("REL")
|
|
||||||
config.TestProductVariables.Platform_sdk_final = proptools.BoolPtr(true)
|
|
||||||
|
|
||||||
if testcase.unbundled {
|
checkClasspath(t, result, true /* isJava8 */)
|
||||||
config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true)
|
|
||||||
config.TestProductVariables.Always_use_prebuilt_sdks = proptools.BoolPtr(true)
|
|
||||||
}
|
|
||||||
ctx := testContext(config)
|
|
||||||
run(t, ctx, config)
|
|
||||||
|
|
||||||
checkClasspath(t, ctx, true /* isJava8 */)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 9 -target 9
|
// Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 9 -target 9
|
||||||
t.Run("REL + Java language level 9", func(t *testing.T) {
|
t.Run("REL + Java language level 9", func(t *testing.T) {
|
||||||
config := testConfig(nil, bp, nil)
|
result := fixtureFactory.Extend(prepareWithPlatformVersionRel).RunTestWithBp(t, bp)
|
||||||
config.TestProductVariables.Platform_sdk_codename = proptools.StringPtr("REL")
|
|
||||||
config.TestProductVariables.Platform_sdk_final = proptools.BoolPtr(true)
|
|
||||||
|
|
||||||
if testcase.unbundled {
|
checkClasspath(t, result, false /* isJava8 */)
|
||||||
config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true)
|
|
||||||
config.TestProductVariables.Always_use_prebuilt_sdks = proptools.BoolPtr(true)
|
|
||||||
}
|
|
||||||
ctx := testContext(config)
|
|
||||||
run(t, ctx, config)
|
|
||||||
|
|
||||||
checkClasspath(t, ctx, false /* isJava8 */)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user