blob: 894aece9df98307de8563cb7665b0034aa0fac6b [file] [log] [blame]
Jooyung Hana57af4a2020-01-23 05:36:59 +00001package apex
2
3import (
4 "testing"
5
6 "github.com/google/blueprint/proptools"
7
8 "android/soong/android"
9)
10
11func TestVndkApexUsesVendorVariant(t *testing.T) {
12 bp := `
13 apex_vndk {
Colin Cross2807f002021-03-02 10:15:29 -080014 name: "com.android.vndk.current",
Jooyung Hana57af4a2020-01-23 05:36:59 +000015 key: "mykey",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +000016 updatable: false,
Jooyung Hana57af4a2020-01-23 05:36:59 +000017 }
18 apex_key {
19 name: "mykey",
20 }
21 cc_library {
22 name: "libfoo",
23 vendor_available: true,
Justin Yun63e9ec72020-10-29 16:49:43 +090024 product_available: true,
Jooyung Hana57af4a2020-01-23 05:36:59 +000025 vndk: {
26 enabled: true,
27 },
28 system_shared_libs: [],
29 stl: "none",
Jooyung Hana57af4a2020-01-23 05:36:59 +000030 }
31 ` + vndkLibrariesTxtFiles("current")
32
33 ensureFileSrc := func(t *testing.T, files []fileInApex, path, src string) {
34 t.Helper()
35 for _, f := range files {
36 if f.path == path {
37 ensureContains(t, f.src, src)
38 return
39 }
40 }
Colin Cross2807f002021-03-02 10:15:29 -080041 t.Errorf("expected path %q not found", path)
Jooyung Hana57af4a2020-01-23 05:36:59 +000042 }
43
44 t.Run("VNDK lib doesn't have an apex variant", func(t *testing.T) {
Colin Cross1c460562021-02-16 17:55:47 -080045 ctx := testApex(t, bp)
Jooyung Hana57af4a2020-01-23 05:36:59 +000046
47 // libfoo doesn't have apex variants
48 for _, variant := range ctx.ModuleVariantsForTests("libfoo") {
49 ensureNotContains(t, variant, "_myapex")
50 }
51
52 // VNDK APEX doesn't create apex variant
Jooyung Hana0503a52023-08-23 13:12:50 +090053 files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
Jiyong Parkf58c46e2021-04-01 21:35:20 +090054 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
Jooyung Hana57af4a2020-01-23 05:36:59 +000055 })
56
57 t.Run("VNDK APEX gathers only vendor variants even if product variants are available", func(t *testing.T) {
Justin Yunaf1fde42023-09-27 16:22:10 +090058 ctx := testApex(t, bp)
Jooyung Hana57af4a2020-01-23 05:36:59 +000059
Jooyung Hana0503a52023-08-23 13:12:50 +090060 files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
Jiyong Parkf58c46e2021-04-01 21:35:20 +090061 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
Jooyung Hana57af4a2020-01-23 05:36:59 +000062 })
63
64 t.Run("VNDK APEX supports coverage variants", func(t *testing.T) {
Paul Duffin0a49fdc2021-03-08 11:28:25 +000065 ctx := testApex(t, bp,
66 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
67 variables.GcovCoverage = proptools.BoolPtr(true)
68 variables.Native_coverage = proptools.BoolPtr(true)
69 }),
70 )
Jooyung Hana57af4a2020-01-23 05:36:59 +000071
Jooyung Hana0503a52023-08-23 13:12:50 +090072 files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
Jiyong Parkf58c46e2021-04-01 21:35:20 +090073 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
Jooyung Hana57af4a2020-01-23 05:36:59 +000074
Jooyung Hana0503a52023-08-23 13:12:50 +090075 files = getFiles(t, ctx, "com.android.vndk.current", "android_common_cov")
Jiyong Parkf58c46e2021-04-01 21:35:20 +090076 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared_cov/libfoo.so")
Jooyung Hana57af4a2020-01-23 05:36:59 +000077 })
78}