1package apex 2 3import ( 4 "testing" 5 6 "github.com/google/blueprint/proptools" 7 8 "android/soong/android" 9) 10 11func TestVndkApexForVndkLite(t *testing.T) { 12 ctx := testApex(t, ` 13 apex_vndk { 14 name: "com.android.vndk.current", 15 key: "com.android.vndk.current.key", 16 updatable: false, 17 } 18 19 apex_key { 20 name: "com.android.vndk.current.key", 21 public_key: "testkey.avbpubkey", 22 private_key: "testkey.pem", 23 } 24 25 cc_library { 26 name: "libvndk", 27 srcs: ["mylib.cpp"], 28 vendor_available: true, 29 product_available: true, 30 vndk: { 31 enabled: true, 32 }, 33 system_shared_libs: [], 34 stl: "none", 35 apex_available: [ "com.android.vndk.current" ], 36 } 37 38 cc_library { 39 name: "libvndksp", 40 srcs: ["mylib.cpp"], 41 vendor_available: true, 42 product_available: true, 43 vndk: { 44 enabled: true, 45 support_system_process: true, 46 }, 47 system_shared_libs: [], 48 stl: "none", 49 apex_available: [ "com.android.vndk.current" ], 50 } 51 `+vndkLibrariesTxtFiles("current"), 52 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 53 variables.DeviceVndkVersion = proptools.StringPtr("") 54 }), 55 ) 56 // VNDK-Lite contains only core variants of VNDK-Sp libraries 57 ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ 58 "lib/libvndksp.so", 59 "lib/libc++.so", 60 "lib64/libvndksp.so", 61 "lib64/libc++.so", 62 "etc/llndk.libraries.29.txt", 63 "etc/vndkcore.libraries.29.txt", 64 "etc/vndksp.libraries.29.txt", 65 "etc/vndkprivate.libraries.29.txt", 66 "etc/vndkproduct.libraries.29.txt", 67 }) 68} 69 70func TestVndkApexUsesVendorVariant(t *testing.T) { 71 bp := ` 72 apex_vndk { 73 name: "com.android.vndk.current", 74 key: "mykey", 75 updatable: false, 76 } 77 apex_key { 78 name: "mykey", 79 } 80 cc_library { 81 name: "libfoo", 82 vendor_available: true, 83 product_available: true, 84 vndk: { 85 enabled: true, 86 }, 87 system_shared_libs: [], 88 stl: "none", 89 notice: "custom_notice", 90 } 91 ` + vndkLibrariesTxtFiles("current") 92 93 ensureFileSrc := func(t *testing.T, files []fileInApex, path, src string) { 94 t.Helper() 95 for _, f := range files { 96 if f.path == path { 97 ensureContains(t, f.src, src) 98 return 99 } 100 } 101 t.Errorf("expected path %q not found", path) 102 } 103 104 t.Run("VNDK lib doesn't have an apex variant", func(t *testing.T) { 105 ctx := testApex(t, bp) 106 107 // libfoo doesn't have apex variants 108 for _, variant := range ctx.ModuleVariantsForTests("libfoo") { 109 ensureNotContains(t, variant, "_myapex") 110 } 111 112 // VNDK APEX doesn't create apex variant 113 files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") 114 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") 115 }) 116 117 t.Run("VNDK APEX gathers only vendor variants even if product variants are available", func(t *testing.T) { 118 ctx := testApex(t, bp, 119 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 120 // Now product variant is available 121 variables.ProductVndkVersion = proptools.StringPtr("current") 122 }), 123 ) 124 125 files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") 126 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") 127 }) 128 129 t.Run("VNDK APEX supports coverage variants", func(t *testing.T) { 130 ctx := testApex(t, bp, 131 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 132 variables.GcovCoverage = proptools.BoolPtr(true) 133 variables.Native_coverage = proptools.BoolPtr(true) 134 }), 135 ) 136 137 files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") 138 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") 139 140 files = getFiles(t, ctx, "com.android.vndk.current", "android_common_cov_image") 141 ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared_cov/libfoo.so") 142 }) 143} 144