Add a rule about platform_apis

As sdk_check.mk checks, soong starts to check every app.
If sdk_version is empty, platform_apis must be true.
If sdk_version is not empty, platform_apis must be false.

Test: soong test
Test: m
Bug: 132780927
Change-Id: I7ba702d616404d155f8ac40cd008828663ad1488
This commit is contained in:
Jeongik Cha
2019-07-11 15:54:27 +09:00
parent c89fe6253f
commit 538c0d0c29
5 changed files with 133 additions and 11 deletions

View File

@@ -72,6 +72,7 @@ func TestApp(t *testing.T) {
ctx := testApp(t, moduleType+` {
name: "foo",
srcs: ["a.java"],
sdk_version: "current"
}
`)
@@ -117,6 +118,7 @@ func TestAppSplits(t *testing.T) {
name: "foo",
srcs: ["a.java"],
package_splits: ["v4", "v7,hdpi"],
sdk_version: "current"
}`)
foo := ctx.ModuleForTests("foo", "android_common")
@@ -139,6 +141,40 @@ func TestAppSplits(t *testing.T) {
}
}
func TestPlatformAPIs(t *testing.T) {
testJava(t, `
android_app {
name: "foo",
srcs: ["a.java"],
platform_apis: true,
}
`)
testJava(t, `
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`)
testJavaError(t, "platform_apis must be true when sdk_version is empty.", `
android_app {
name: "bar",
srcs: ["b.java"],
}
`)
testJavaError(t, "platform_apis must be false when sdk_version is not empty.", `
android_app {
name: "bar",
srcs: ["b.java"],
sdk_version: "system_current",
platform_apis: true,
}
`)
}
func TestResourceDirs(t *testing.T) {
testCases := []struct {
name string
@@ -169,6 +205,7 @@ func TestResourceDirs(t *testing.T) {
bp := `
android_app {
name: "foo",
sdk_version: "current",
%s
}
`
@@ -349,12 +386,14 @@ func TestAndroidResources(t *testing.T) {
bp := `
android_app {
name: "foo",
sdk_version: "current",
resource_dirs: ["foo/res"],
static_libs: ["lib", "lib3"],
}
android_app {
name: "bar",
sdk_version: "current",
resource_dirs: ["bar/res"],
}
@@ -461,6 +500,7 @@ func TestAppSdkVersion(t *testing.T) {
platformSdkCodename string
platformSdkFinal bool
expectedMinSdkVersion string
platformApis bool
}{
{
name: "current final SDK",
@@ -481,6 +521,7 @@ func TestAppSdkVersion(t *testing.T) {
{
name: "default final SDK",
sdkVersion: "",
platformApis: true,
platformSdkInt: 27,
platformSdkCodename: "REL",
platformSdkFinal: true,
@@ -489,6 +530,7 @@ func TestAppSdkVersion(t *testing.T) {
{
name: "default non-final SDK",
sdkVersion: "",
platformApis: true,
platformSdkInt: 27,
platformSdkCodename: "OMR1",
platformSdkFinal: false,
@@ -504,11 +546,16 @@ func TestAppSdkVersion(t *testing.T) {
for _, moduleType := range []string{"android_app", "android_library"} {
for _, test := range testCases {
t.Run(moduleType+" "+test.name, func(t *testing.T) {
platformApiProp := ""
if test.platformApis {
platformApiProp = "platform_apis: true,"
}
bp := fmt.Sprintf(`%s {
name: "foo",
srcs: ["a.java"],
sdk_version: "%s",
}`, moduleType, test.sdkVersion)
%s
}`, moduleType, test.sdkVersion, platformApiProp)
config := testConfig(nil)
config.TestProductVariables.Platform_sdk_version = &test.platformSdkInt
@@ -630,18 +677,21 @@ func TestJNIPackaging(t *testing.T) {
android_app {
name: "app",
jni_libs: ["libjni"],
sdk_version: "current",
}
android_app {
name: "app_noembed",
jni_libs: ["libjni"],
use_embedded_native_libs: false,
sdk_version: "current",
}
android_app {
name: "app_embed",
jni_libs: ["libjni"],
use_embedded_native_libs: true,
sdk_version: "current",
}
android_test {
@@ -715,6 +765,7 @@ func TestCertificates(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`,
certificateOverride: "",
@@ -726,7 +777,8 @@ func TestCertificates(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
certificate: ":new_certificate"
certificate: ":new_certificate",
sdk_version: "current",
}
android_app_certificate {
@@ -743,7 +795,8 @@ func TestCertificates(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
certificate: "expiredkey"
certificate: "expiredkey",
sdk_version: "current",
}
`,
certificateOverride: "",
@@ -755,7 +808,8 @@ func TestCertificates(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
certificate: "expiredkey"
certificate: "expiredkey",
sdk_version: "current",
}
android_app_certificate {
@@ -801,6 +855,7 @@ func TestPackageNameOverride(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`,
packageNameOverride: "",
@@ -815,6 +870,7 @@ func TestPackageNameOverride(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`,
packageNameOverride: "foo:bar",
@@ -856,11 +912,13 @@ func TestInstrumentationTargetOverridden(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
android_test {
name: "bar",
instrumentation_for: "foo",
sdk_version: "current",
}
`
config := testConfig(nil)
@@ -885,6 +943,7 @@ func TestOverrideAndroidApp(t *testing.T) {
srcs: ["a.java"],
certificate: "expiredkey",
overrides: ["qux"],
sdk_version: "current",
}
override_android_app {
@@ -984,6 +1043,7 @@ func TestOverrideAndroidAppDependency(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
override_android_app {
@@ -1253,18 +1313,21 @@ func TestUsesLibraries(t *testing.T) {
name: "foo",
srcs: ["a.java"],
api_packages: ["foo"],
sdk_version: "current",
}
java_sdk_library {
name: "bar",
srcs: ["a.java"],
api_packages: ["bar"],
sdk_version: "current",
}
android_app {
name: "app",
srcs: ["a.java"],
uses_libs: ["foo"],
sdk_version: "current",
optional_uses_libs: [
"bar",
"baz",
@@ -1339,6 +1402,7 @@ func TestCodelessApp(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`,
noCode: false,
@@ -1348,6 +1412,7 @@ func TestCodelessApp(t *testing.T) {
bp: `
android_app {
name: "foo",
sdk_version: "current",
}
`,
noCode: true,
@@ -1358,11 +1423,13 @@ func TestCodelessApp(t *testing.T) {
android_app {
name: "foo",
static_libs: ["lib"],
sdk_version: "current",
}
java_library {
name: "lib",
srcs: ["a.java"],
sdk_version: "current",
}
`,
noCode: false,
@@ -1373,10 +1440,12 @@ func TestCodelessApp(t *testing.T) {
android_app {
name: "foo",
static_libs: ["lib"],
sdk_version: "current",
}
java_library {
name: "lib",
sdk_version: "current",
}
`,
// TODO(jungjw): this should probably be true
@@ -1406,6 +1475,7 @@ func TestEmbedNotice(t *testing.T) {
jni_libs: ["libjni"],
notice: "APP_NOTICE",
embed_notices: true,
sdk_version: "current",
}
// No embed_notice flag
@@ -1414,6 +1484,7 @@ func TestEmbedNotice(t *testing.T) {
srcs: ["a.java"],
jni_libs: ["libjni"],
notice: "APP_NOTICE",
sdk_version: "current",
}
// No NOTICE files
@@ -1421,6 +1492,7 @@ func TestEmbedNotice(t *testing.T) {
name: "baz",
srcs: ["a.java"],
embed_notices: true,
sdk_version: "current",
}
cc_library {
@@ -1435,6 +1507,7 @@ func TestEmbedNotice(t *testing.T) {
srcs: [
":gen",
],
sdk_version: "current",
}
genrule {
@@ -1510,6 +1583,7 @@ func TestUncompressDex(t *testing.T) {
android_app {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
`,
uncompressedPlatform: true,
@@ -1522,6 +1596,7 @@ func TestUncompressDex(t *testing.T) {
name: "foo",
use_embedded_dex: true,
srcs: ["a.java"],
sdk_version: "current",
}
`,
uncompressedPlatform: true,
@@ -1534,6 +1609,7 @@ func TestUncompressDex(t *testing.T) {
name: "foo",
privileged: true,
srcs: ["a.java"],
sdk_version: "current",
}
`,
uncompressedPlatform: true,