1*333d2b36SAndroid Build Coastguard Worker// Copyright (C) 2021 The Android Open Source Project 2*333d2b36SAndroid Build Coastguard Worker// 3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*333d2b36SAndroid Build Coastguard Worker// 7*333d2b36SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*333d2b36SAndroid Build Coastguard Worker// 9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*333d2b36SAndroid Build Coastguard Worker// limitations under the License. 14*333d2b36SAndroid Build Coastguard Worker 15*333d2b36SAndroid Build Coastguard Workerpackage sdk 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "testing" 19*333d2b36SAndroid Build Coastguard Worker 20*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 21*333d2b36SAndroid Build Coastguard Worker "android/soong/dexpreopt" 22*333d2b36SAndroid Build Coastguard Worker "android/soong/java" 23*333d2b36SAndroid Build Coastguard Worker) 24*333d2b36SAndroid Build Coastguard Worker 25*333d2b36SAndroid Build Coastguard Workerfunc testSnapshotWithSystemServerClasspathFragment(t *testing.T, sdk string, targetBuildRelease string, expectedSdkSnapshot string) { 26*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 27*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 28*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 29*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 30*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary"), 31*333d2b36SAndroid Build Coastguard Worker dexpreopt.FixtureSetApexSystemServerJars("myapex:mylib", "myapex:mysdklibrary"), 32*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyEnv(func(env map[string]string) { 33*333d2b36SAndroid Build Coastguard Worker if targetBuildRelease != "latest" { 34*333d2b36SAndroid Build Coastguard Worker env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = targetBuildRelease 35*333d2b36SAndroid Build Coastguard Worker } 36*333d2b36SAndroid Build Coastguard Worker }), 37*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 38*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"VanillaIceCream"} 39*333d2b36SAndroid Build Coastguard Worker }), 40*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 41*333d2b36SAndroid Build Coastguard Worker 42*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(sdk+` 43*333d2b36SAndroid Build Coastguard Worker apex { 44*333d2b36SAndroid Build Coastguard Worker name: "myapex", 45*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 46*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 47*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragments: ["mysystemserverclasspathfragment"], 48*333d2b36SAndroid Build Coastguard Worker } 49*333d2b36SAndroid Build Coastguard Worker 50*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragment { 51*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 52*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 53*333d2b36SAndroid Build Coastguard Worker contents: [ 54*333d2b36SAndroid Build Coastguard Worker "mylib", 55*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 56*333d2b36SAndroid Build Coastguard Worker ], 57*333d2b36SAndroid Build Coastguard Worker } 58*333d2b36SAndroid Build Coastguard Worker 59*333d2b36SAndroid Build Coastguard Worker java_library { 60*333d2b36SAndroid Build Coastguard Worker name: "mylib", 61*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 62*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 63*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 64*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 65*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 66*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 67*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mylib"], 68*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 69*333d2b36SAndroid Build Coastguard Worker profile: "art-profile", 70*333d2b36SAndroid Build Coastguard Worker }, 71*333d2b36SAndroid Build Coastguard Worker } 72*333d2b36SAndroid Build Coastguard Worker 73*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 74*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 75*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 76*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 77*333d2b36SAndroid Build Coastguard Worker shared_library: false, 78*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 79*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 80*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 81*333d2b36SAndroid Build Coastguard Worker profile: "art-profile", 82*333d2b36SAndroid Build Coastguard Worker }, 83*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 84*333d2b36SAndroid Build Coastguard Worker } 85*333d2b36SAndroid Build Coastguard Worker `), 86*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 87*333d2b36SAndroid Build Coastguard Worker 88*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 89*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(expectedSdkSnapshot), 90*333d2b36SAndroid Build Coastguard Worker ) 91*333d2b36SAndroid Build Coastguard Worker} 92*333d2b36SAndroid Build Coastguard Worker 93*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithPartialSystemServerClasspathFragment(t *testing.T) { 94*333d2b36SAndroid Build Coastguard Worker commonSdk := ` 95*333d2b36SAndroid Build Coastguard Worker apex { 96*333d2b36SAndroid Build Coastguard Worker name: "myapex", 97*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 98*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "Tiramisu", 99*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragments: ["mysystemserverclasspathfragment"], 100*333d2b36SAndroid Build Coastguard Worker } 101*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragment { 102*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 103*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 104*333d2b36SAndroid Build Coastguard Worker contents: [ 105*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 106*333d2b36SAndroid Build Coastguard Worker "mysdklibrary-future", 107*333d2b36SAndroid Build Coastguard Worker ], 108*333d2b36SAndroid Build Coastguard Worker } 109*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 110*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 111*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 112*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 113*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "33", // Tiramisu 114*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 115*333d2b36SAndroid Build Coastguard Worker } 116*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 117*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary-future", 118*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 119*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 120*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "34", // UpsideDownCake 121*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 122*333d2b36SAndroid Build Coastguard Worker } 123*333d2b36SAndroid Build Coastguard Worker sdk { 124*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 125*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 126*333d2b36SAndroid Build Coastguard Worker } 127*333d2b36SAndroid Build Coastguard Worker ` 128*333d2b36SAndroid Build Coastguard Worker 129*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 130*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 131*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 132*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 133*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "mysdklibrary-future"), 134*333d2b36SAndroid Build Coastguard Worker dexpreopt.FixtureSetApexSystemServerJars("myapex:mysdklibrary", "myapex:mysdklibrary-future"), 135*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyEnv(func(env map[string]string) { 136*333d2b36SAndroid Build Coastguard Worker // targeting Tiramisu here means that we won't export mysdklibrary-future 137*333d2b36SAndroid Build Coastguard Worker env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = "Tiramisu" 138*333d2b36SAndroid Build Coastguard Worker }), 139*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 140*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"UpsideDownCake"} 141*333d2b36SAndroid Build Coastguard Worker }), 142*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 143*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(commonSdk), 144*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 145*333d2b36SAndroid Build Coastguard Worker 146*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", checkAndroidBpContents( 147*333d2b36SAndroid Build Coastguard Worker `// This is auto-generated. DO NOT EDIT. 148*333d2b36SAndroid Build Coastguard Worker 149*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 150*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 151*333d2b36SAndroid Build Coastguard Worker prefer: false, 152*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 153*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 154*333d2b36SAndroid Build Coastguard Worker shared_library: true, 155*333d2b36SAndroid Build Coastguard Worker public: { 156*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 157*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 158*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 159*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 160*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 161*333d2b36SAndroid Build Coastguard Worker }, 162*333d2b36SAndroid Build Coastguard Worker system: { 163*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/system/mysdklibrary-stubs.jar"], 164*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/system/mysdklibrary_stub_sources"], 165*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/system/mysdklibrary.txt", 166*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/system/mysdklibrary-removed.txt", 167*333d2b36SAndroid Build Coastguard Worker sdk_version: "system_current", 168*333d2b36SAndroid Build Coastguard Worker }, 169*333d2b36SAndroid Build Coastguard Worker test: { 170*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/test/mysdklibrary-stubs.jar"], 171*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/test/mysdklibrary_stub_sources"], 172*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/test/mysdklibrary.txt", 173*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/test/mysdklibrary-removed.txt", 174*333d2b36SAndroid Build Coastguard Worker sdk_version: "test_current", 175*333d2b36SAndroid Build Coastguard Worker }, 176*333d2b36SAndroid Build Coastguard Worker} 177*333d2b36SAndroid Build Coastguard Worker 178*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment { 179*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 180*333d2b36SAndroid Build Coastguard Worker prefer: false, 181*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 182*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 183*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 184*333d2b36SAndroid Build Coastguard Worker} `)) 185*333d2b36SAndroid Build Coastguard Worker} 186*333d2b36SAndroid Build Coastguard Worker 187*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithEmptySystemServerClasspathFragment(t *testing.T) { 188*333d2b36SAndroid Build Coastguard Worker commonSdk := ` 189*333d2b36SAndroid Build Coastguard Worker apex { 190*333d2b36SAndroid Build Coastguard Worker name: "myapex", 191*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 192*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "Tiramisu", 193*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragments: ["mysystemserverclasspathfragment"], 194*333d2b36SAndroid Build Coastguard Worker } 195*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragment { 196*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 197*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 198*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 199*333d2b36SAndroid Build Coastguard Worker } 200*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 201*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 202*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 203*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 204*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "34", // UpsideDownCake 205*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 206*333d2b36SAndroid Build Coastguard Worker } 207*333d2b36SAndroid Build Coastguard Worker sdk { 208*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 209*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 210*333d2b36SAndroid Build Coastguard Worker } 211*333d2b36SAndroid Build Coastguard Worker ` 212*333d2b36SAndroid Build Coastguard Worker 213*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 214*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 215*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 216*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 217*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary"), 218*333d2b36SAndroid Build Coastguard Worker dexpreopt.FixtureSetApexSystemServerJars("myapex:mysdklibrary"), 219*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyEnv(func(env map[string]string) { 220*333d2b36SAndroid Build Coastguard Worker // targeting Tiramisu here means that we won't export mysdklibrary 221*333d2b36SAndroid Build Coastguard Worker env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = "Tiramisu" 222*333d2b36SAndroid Build Coastguard Worker }), 223*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 224*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"UpsideDownCake"} 225*333d2b36SAndroid Build Coastguard Worker }), 226*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 227*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(commonSdk), 228*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 229*333d2b36SAndroid Build Coastguard Worker 230*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", checkAndroidBpContents(`// This is auto-generated. DO NOT EDIT.`)) 231*333d2b36SAndroid Build Coastguard Worker} 232*333d2b36SAndroid Build Coastguard Worker 233*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithSystemServerClasspathFragment(t *testing.T) { 234*333d2b36SAndroid Build Coastguard Worker 235*333d2b36SAndroid Build Coastguard Worker commonSdk := ` 236*333d2b36SAndroid Build Coastguard Workersdk { 237*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 238*333d2b36SAndroid Build Coastguard Worker systemserverclasspath_fragments: ["mysystemserverclasspathfragment"], 239*333d2b36SAndroid Build Coastguard Worker java_sdk_libs: [ 240*333d2b36SAndroid Build Coastguard Worker // This is not strictly needed as it should be automatically added to the sdk_snapshot as 241*333d2b36SAndroid Build Coastguard Worker // a java_sdk_libs module because it is used in the mysystemserverclasspathfragment's 242*333d2b36SAndroid Build Coastguard Worker // contents property. However, it is specified here to ensure that duplicates are 243*333d2b36SAndroid Build Coastguard Worker // correctly deduped. 244*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 245*333d2b36SAndroid Build Coastguard Worker ], 246*333d2b36SAndroid Build Coastguard Worker} 247*333d2b36SAndroid Build Coastguard Worker ` 248*333d2b36SAndroid Build Coastguard Worker 249*333d2b36SAndroid Build Coastguard Worker expectedLatestSnapshot := ` 250*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 251*333d2b36SAndroid Build Coastguard Worker 252*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 253*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 254*333d2b36SAndroid Build Coastguard Worker contents: ["prebuilt_mysdklibrary"], 255*333d2b36SAndroid Build Coastguard Worker} 256*333d2b36SAndroid Build Coastguard Worker 257*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 258*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 259*333d2b36SAndroid Build Coastguard Worker prefer: false, 260*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 261*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 262*333d2b36SAndroid Build Coastguard Worker shared_library: false, 263*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 264*333d2b36SAndroid Build Coastguard Worker profile_guided: true, 265*333d2b36SAndroid Build Coastguard Worker }, 266*333d2b36SAndroid Build Coastguard Worker public: { 267*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 268*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 269*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 270*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 271*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 272*333d2b36SAndroid Build Coastguard Worker }, 273*333d2b36SAndroid Build Coastguard Worker} 274*333d2b36SAndroid Build Coastguard Worker 275*333d2b36SAndroid Build Coastguard Workerjava_import { 276*333d2b36SAndroid Build Coastguard Worker name: "mylib", 277*333d2b36SAndroid Build Coastguard Worker prefer: false, 278*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 279*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 280*333d2b36SAndroid Build Coastguard Worker jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"], 281*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 282*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mylib"], 283*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 284*333d2b36SAndroid Build Coastguard Worker profile_guided: true, 285*333d2b36SAndroid Build Coastguard Worker }, 286*333d2b36SAndroid Build Coastguard Worker} 287*333d2b36SAndroid Build Coastguard Worker 288*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment { 289*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 290*333d2b36SAndroid Build Coastguard Worker prefer: false, 291*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 292*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 293*333d2b36SAndroid Build Coastguard Worker contents: [ 294*333d2b36SAndroid Build Coastguard Worker "mylib", 295*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 296*333d2b36SAndroid Build Coastguard Worker ], 297*333d2b36SAndroid Build Coastguard Worker} 298*333d2b36SAndroid Build Coastguard Worker` 299*333d2b36SAndroid Build Coastguard Worker 300*333d2b36SAndroid Build Coastguard Worker t.Run("target-s", func(t *testing.T) { 301*333d2b36SAndroid Build Coastguard Worker testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "S", ` 302*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 303*333d2b36SAndroid Build Coastguard Worker 304*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 305*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 306*333d2b36SAndroid Build Coastguard Worker prefer: false, 307*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 308*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 309*333d2b36SAndroid Build Coastguard Worker shared_library: false, 310*333d2b36SAndroid Build Coastguard Worker public: { 311*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 312*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 313*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 314*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 315*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 316*333d2b36SAndroid Build Coastguard Worker }, 317*333d2b36SAndroid Build Coastguard Worker} 318*333d2b36SAndroid Build Coastguard Worker`) 319*333d2b36SAndroid Build Coastguard Worker }) 320*333d2b36SAndroid Build Coastguard Worker 321*333d2b36SAndroid Build Coastguard Worker t.Run("target-t", func(t *testing.T) { 322*333d2b36SAndroid Build Coastguard Worker testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "Tiramisu", ` 323*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 324*333d2b36SAndroid Build Coastguard Worker 325*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 326*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 327*333d2b36SAndroid Build Coastguard Worker prefer: false, 328*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 329*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 330*333d2b36SAndroid Build Coastguard Worker shared_library: false, 331*333d2b36SAndroid Build Coastguard Worker public: { 332*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 333*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 334*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 335*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 336*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 337*333d2b36SAndroid Build Coastguard Worker }, 338*333d2b36SAndroid Build Coastguard Worker} 339*333d2b36SAndroid Build Coastguard Worker 340*333d2b36SAndroid Build Coastguard Workerjava_import { 341*333d2b36SAndroid Build Coastguard Worker name: "mylib", 342*333d2b36SAndroid Build Coastguard Worker prefer: false, 343*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 344*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 345*333d2b36SAndroid Build Coastguard Worker jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"], 346*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 347*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mylib"], 348*333d2b36SAndroid Build Coastguard Worker} 349*333d2b36SAndroid Build Coastguard Worker 350*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment { 351*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 352*333d2b36SAndroid Build Coastguard Worker prefer: false, 353*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 354*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 355*333d2b36SAndroid Build Coastguard Worker contents: [ 356*333d2b36SAndroid Build Coastguard Worker "mylib", 357*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 358*333d2b36SAndroid Build Coastguard Worker ], 359*333d2b36SAndroid Build Coastguard Worker} 360*333d2b36SAndroid Build Coastguard Worker`) 361*333d2b36SAndroid Build Coastguard Worker }) 362*333d2b36SAndroid Build Coastguard Worker 363*333d2b36SAndroid Build Coastguard Worker t.Run("target-u", func(t *testing.T) { 364*333d2b36SAndroid Build Coastguard Worker testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "UpsideDownCake", ` 365*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 366*333d2b36SAndroid Build Coastguard Worker 367*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 368*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 369*333d2b36SAndroid Build Coastguard Worker prefer: false, 370*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 371*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 372*333d2b36SAndroid Build Coastguard Worker shared_library: false, 373*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 374*333d2b36SAndroid Build Coastguard Worker profile_guided: true, 375*333d2b36SAndroid Build Coastguard Worker }, 376*333d2b36SAndroid Build Coastguard Worker public: { 377*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 378*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 379*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 380*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 381*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 382*333d2b36SAndroid Build Coastguard Worker }, 383*333d2b36SAndroid Build Coastguard Worker} 384*333d2b36SAndroid Build Coastguard Worker 385*333d2b36SAndroid Build Coastguard Workerjava_import { 386*333d2b36SAndroid Build Coastguard Worker name: "mylib", 387*333d2b36SAndroid Build Coastguard Worker prefer: false, 388*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 389*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 390*333d2b36SAndroid Build Coastguard Worker jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"], 391*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 392*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mylib"], 393*333d2b36SAndroid Build Coastguard Worker dex_preopt: { 394*333d2b36SAndroid Build Coastguard Worker profile_guided: true, 395*333d2b36SAndroid Build Coastguard Worker }, 396*333d2b36SAndroid Build Coastguard Worker} 397*333d2b36SAndroid Build Coastguard Worker 398*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment { 399*333d2b36SAndroid Build Coastguard Worker name: "mysystemserverclasspathfragment", 400*333d2b36SAndroid Build Coastguard Worker prefer: false, 401*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 402*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 403*333d2b36SAndroid Build Coastguard Worker contents: [ 404*333d2b36SAndroid Build Coastguard Worker "mylib", 405*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 406*333d2b36SAndroid Build Coastguard Worker ], 407*333d2b36SAndroid Build Coastguard Worker} 408*333d2b36SAndroid Build Coastguard Worker`) 409*333d2b36SAndroid Build Coastguard Worker }) 410*333d2b36SAndroid Build Coastguard Worker 411*333d2b36SAndroid Build Coastguard Worker t.Run("added-directly", func(t *testing.T) { 412*333d2b36SAndroid Build Coastguard Worker testSnapshotWithSystemServerClasspathFragment(t, commonSdk, `latest`, expectedLatestSnapshot) 413*333d2b36SAndroid Build Coastguard Worker }) 414*333d2b36SAndroid Build Coastguard Worker 415*333d2b36SAndroid Build Coastguard Worker t.Run("added-via-apex", func(t *testing.T) { 416*333d2b36SAndroid Build Coastguard Worker testSnapshotWithSystemServerClasspathFragment(t, ` 417*333d2b36SAndroid Build Coastguard Worker sdk { 418*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 419*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 420*333d2b36SAndroid Build Coastguard Worker } 421*333d2b36SAndroid Build Coastguard Worker `, `latest`, expectedLatestSnapshot) 422*333d2b36SAndroid Build Coastguard Worker }) 423*333d2b36SAndroid Build Coastguard Worker} 424