aboutsummaryrefslogtreecommitdiffstats
path: root/java/app_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'java/app_test.go')
-rw-r--r--java/app_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/java/app_test.go b/java/app_test.go
index 7a617713..6770119e 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -16,8 +16,10 @@ package java
import (
"android/soong/android"
+ "fmt"
"reflect"
"sort"
+ "strings"
"testing"
)
@@ -240,3 +242,96 @@ func TestEnforceRRO(t *testing.T) {
})
}
}
+
+func TestAppSdkVersion(t *testing.T) {
+ testCases := []struct {
+ name string
+ sdkVersion string
+ platformSdkInt int
+ platformSdkCodename string
+ platformSdkFinal bool
+ expectedMinSdkVersion string
+ }{
+ {
+ name: "current final SDK",
+ sdkVersion: "current",
+ platformSdkInt: 27,
+ platformSdkCodename: "REL",
+ platformSdkFinal: true,
+ expectedMinSdkVersion: "27",
+ },
+ {
+ name: "current non-final SDK",
+ sdkVersion: "current",
+ platformSdkInt: 27,
+ platformSdkCodename: "OMR1",
+ platformSdkFinal: false,
+ expectedMinSdkVersion: "OMR1",
+ },
+ {
+ name: "default final SDK",
+ sdkVersion: "",
+ platformSdkInt: 27,
+ platformSdkCodename: "REL",
+ platformSdkFinal: true,
+ expectedMinSdkVersion: "27",
+ },
+ {
+ name: "default non-final SDK",
+ sdkVersion: "",
+ platformSdkInt: 27,
+ platformSdkCodename: "OMR1",
+ platformSdkFinal: false,
+ expectedMinSdkVersion: "OMR1",
+ },
+ {
+ name: "14",
+ sdkVersion: "14",
+ expectedMinSdkVersion: "14",
+ },
+ }
+
+ for _, moduleType := range []string{"android_app", "android_library"} {
+ for _, test := range testCases {
+ t.Run(moduleType+" "+test.name, func(t *testing.T) {
+ bp := fmt.Sprintf(`%s {
+ name: "foo",
+ srcs: ["a.java"],
+ sdk_version: "%s",
+ }`, moduleType, test.sdkVersion)
+
+ config := testConfig(nil)
+ config.TestProductVariables.Platform_sdk_version = &test.platformSdkInt
+ config.TestProductVariables.Platform_sdk_codename = &test.platformSdkCodename
+ config.TestProductVariables.Platform_sdk_final = &test.platformSdkFinal
+
+ ctx := testAppContext(config, bp, nil)
+
+ run(t, ctx, config)
+
+ foo := ctx.ModuleForTests("foo", "android_common")
+ link := foo.Output("package-res.apk")
+ linkFlags := strings.Split(link.Args["flags"], " ")
+ min := android.IndexList("--min-sdk-version", linkFlags)
+ target := android.IndexList("--target-sdk-version", linkFlags)
+
+ if min == -1 || target == -1 || min == len(linkFlags)-1 || target == len(linkFlags)-1 {
+ t.Fatalf("missing --min-sdk-version or --target-sdk-version in link flags: %q", linkFlags)
+ }
+
+ gotMinSdkVersion := linkFlags[min+1]
+ gotTargetSdkVersion := linkFlags[target+1]
+
+ if gotMinSdkVersion != test.expectedMinSdkVersion {
+ t.Errorf("incorrect --min-sdk-version, expected %q got %q",
+ test.expectedMinSdkVersion, gotMinSdkVersion)
+ }
+
+ if gotTargetSdkVersion != test.expectedMinSdkVersion {
+ t.Errorf("incorrect --target-sdk-version, expected %q got %q",
+ test.expectedMinSdkVersion, gotTargetSdkVersion)
+ }
+ })
+ }
+ }
+}