1*333d2b36SAndroid Build Coastguard Worker// Copyright 2019 Google Inc. All rights reserved. 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 java 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "path/filepath" 19*333d2b36SAndroid Build Coastguard Worker "strings" 20*333d2b36SAndroid Build Coastguard Worker "testing" 21*333d2b36SAndroid Build Coastguard Worker 22*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint/proptools" 23*333d2b36SAndroid Build Coastguard Worker 24*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 25*333d2b36SAndroid Build Coastguard Worker "android/soong/java/config" 26*333d2b36SAndroid Build Coastguard Worker) 27*333d2b36SAndroid Build Coastguard Worker 28*333d2b36SAndroid Build Coastguard Workertype classpathTestCase struct { 29*333d2b36SAndroid Build Coastguard Worker name string 30*333d2b36SAndroid Build Coastguard Worker unbundled bool 31*333d2b36SAndroid Build Coastguard Worker moduleType string 32*333d2b36SAndroid Build Coastguard Worker host android.OsClass 33*333d2b36SAndroid Build Coastguard Worker properties string 34*333d2b36SAndroid Build Coastguard Worker 35*333d2b36SAndroid Build Coastguard Worker // for java 8 36*333d2b36SAndroid Build Coastguard Worker bootclasspath []string 37*333d2b36SAndroid Build Coastguard Worker java8classpath []string 38*333d2b36SAndroid Build Coastguard Worker 39*333d2b36SAndroid Build Coastguard Worker // for java 9 40*333d2b36SAndroid Build Coastguard Worker system string 41*333d2b36SAndroid Build Coastguard Worker java9classpath []string 42*333d2b36SAndroid Build Coastguard Worker 43*333d2b36SAndroid Build Coastguard Worker forces8 bool // if set, javac will always be called with java 8 arguments 44*333d2b36SAndroid Build Coastguard Worker 45*333d2b36SAndroid Build Coastguard Worker aidl string 46*333d2b36SAndroid Build Coastguard Worker 47*333d2b36SAndroid Build Coastguard Worker // Indicates how this test case is affected by the setting of Always_use_prebuilt_sdks. 48*333d2b36SAndroid Build Coastguard Worker // 49*333d2b36SAndroid Build Coastguard Worker // If this is nil then the test case is unaffected by the setting of Always_use_prebuilt_sdks. 50*333d2b36SAndroid Build Coastguard Worker // Otherwise, the test case can only be used when 51*333d2b36SAndroid Build Coastguard Worker // Always_use_prebuilt_sdks=*forAlwaysUsePrebuiltSdks. 52*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks *bool 53*333d2b36SAndroid Build Coastguard Worker} 54*333d2b36SAndroid Build Coastguard Worker 55*333d2b36SAndroid Build Coastguard Workerfunc TestClasspath(t *testing.T) { 56*333d2b36SAndroid Build Coastguard Worker const frameworkAidl = "-I" + defaultJavaDir + "/framework/aidl" 57*333d2b36SAndroid Build Coastguard Worker var classpathTestcases = []classpathTestCase{ 58*333d2b36SAndroid Build Coastguard Worker { 59*333d2b36SAndroid Build Coastguard Worker name: "default", 60*333d2b36SAndroid Build Coastguard Worker bootclasspath: config.StableCorePlatformBootclasspathLibraries, 61*333d2b36SAndroid Build Coastguard Worker system: config.StableCorePlatformSystemModules, 62*333d2b36SAndroid Build Coastguard Worker java8classpath: config.FrameworkLibraries, 63*333d2b36SAndroid Build Coastguard Worker java9classpath: config.FrameworkLibraries, 64*333d2b36SAndroid Build Coastguard Worker aidl: frameworkAidl, 65*333d2b36SAndroid Build Coastguard Worker }, 66*333d2b36SAndroid Build Coastguard Worker { 67*333d2b36SAndroid Build Coastguard Worker name: `sdk_version:"core_platform"`, 68*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version:"core_platform"`, 69*333d2b36SAndroid Build Coastguard Worker bootclasspath: config.StableCorePlatformBootclasspathLibraries, 70*333d2b36SAndroid Build Coastguard Worker system: config.StableCorePlatformSystemModules, 71*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 72*333d2b36SAndroid Build Coastguard Worker aidl: "", 73*333d2b36SAndroid Build Coastguard Worker }, 74*333d2b36SAndroid Build Coastguard Worker { 75*333d2b36SAndroid Build Coastguard Worker name: "blank sdk version", 76*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "",`, 77*333d2b36SAndroid Build Coastguard Worker bootclasspath: config.StableCorePlatformBootclasspathLibraries, 78*333d2b36SAndroid Build Coastguard Worker system: config.StableCorePlatformSystemModules, 79*333d2b36SAndroid Build Coastguard Worker java8classpath: config.FrameworkLibraries, 80*333d2b36SAndroid Build Coastguard Worker java9classpath: config.FrameworkLibraries, 81*333d2b36SAndroid Build Coastguard Worker aidl: frameworkAidl, 82*333d2b36SAndroid Build Coastguard Worker }, 83*333d2b36SAndroid Build Coastguard Worker { 84*333d2b36SAndroid Build Coastguard Worker 85*333d2b36SAndroid Build Coastguard Worker name: "sdk v29", 86*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "29",`, 87*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 88*333d2b36SAndroid Build Coastguard Worker forces8: true, 89*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/29/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 90*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/29/public/framework.aidl", 91*333d2b36SAndroid Build Coastguard Worker }, 92*333d2b36SAndroid Build Coastguard Worker { 93*333d2b36SAndroid Build Coastguard Worker 94*333d2b36SAndroid Build Coastguard Worker name: "sdk v30", 95*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "30",`, 96*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 97*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 98*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 99*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 100*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 101*333d2b36SAndroid Build Coastguard Worker }, 102*333d2b36SAndroid Build Coastguard Worker { 103*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 104*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 105*333d2b36SAndroid Build Coastguard Worker 106*333d2b36SAndroid Build Coastguard Worker name: "current", 107*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "current",`, 108*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"android_stubs_current", "core-lambda-stubs"}, 109*333d2b36SAndroid Build Coastguard Worker system: "core-public-stubs-system-modules", 110*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"android_stubs_current"}, 111*333d2b36SAndroid Build Coastguard Worker aidl: "-pout/soong/framework.aidl", 112*333d2b36SAndroid Build Coastguard Worker }, 113*333d2b36SAndroid Build Coastguard Worker { 114*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 115*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 116*333d2b36SAndroid Build Coastguard Worker 117*333d2b36SAndroid Build Coastguard Worker name: "current", 118*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "current",`, 119*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 120*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_current_system_modules", 121*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 122*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 123*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 124*333d2b36SAndroid Build Coastguard Worker }, 125*333d2b36SAndroid Build Coastguard Worker { 126*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 127*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 128*333d2b36SAndroid Build Coastguard Worker 129*333d2b36SAndroid Build Coastguard Worker name: "system_current", 130*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_current",`, 131*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"android_system_stubs_current", "core-lambda-stubs"}, 132*333d2b36SAndroid Build Coastguard Worker system: "core-public-stubs-system-modules", 133*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"android_system_stubs_current"}, 134*333d2b36SAndroid Build Coastguard Worker aidl: "-pout/soong/framework.aidl", 135*333d2b36SAndroid Build Coastguard Worker }, 136*333d2b36SAndroid Build Coastguard Worker { 137*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 138*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 139*333d2b36SAndroid Build Coastguard Worker 140*333d2b36SAndroid Build Coastguard Worker name: "system_current", 141*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_current",`, 142*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 143*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_current_system_modules", 144*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/system/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 145*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/system/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 146*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 147*333d2b36SAndroid Build Coastguard Worker }, 148*333d2b36SAndroid Build Coastguard Worker { 149*333d2b36SAndroid Build Coastguard Worker name: "system_29", 150*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_29",`, 151*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 152*333d2b36SAndroid Build Coastguard Worker forces8: true, 153*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/29/system/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 154*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/29/public/framework.aidl", 155*333d2b36SAndroid Build Coastguard Worker }, 156*333d2b36SAndroid Build Coastguard Worker { 157*333d2b36SAndroid Build Coastguard Worker name: "system_30", 158*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_30",`, 159*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 160*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 161*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/system/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 162*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/system/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 163*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 164*333d2b36SAndroid Build Coastguard Worker }, 165*333d2b36SAndroid Build Coastguard Worker { 166*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 167*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 168*333d2b36SAndroid Build Coastguard Worker 169*333d2b36SAndroid Build Coastguard Worker name: "test_current", 170*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "test_current",`, 171*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"android_test_stubs_current", "core-lambda-stubs"}, 172*333d2b36SAndroid Build Coastguard Worker system: "core-public-stubs-system-modules", 173*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"android_test_stubs_current"}, 174*333d2b36SAndroid Build Coastguard Worker aidl: "-pout/soong/framework.aidl", 175*333d2b36SAndroid Build Coastguard Worker }, 176*333d2b36SAndroid Build Coastguard Worker { 177*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 178*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 179*333d2b36SAndroid Build Coastguard Worker 180*333d2b36SAndroid Build Coastguard Worker name: "test_current", 181*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "test_current",`, 182*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 183*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_current_system_modules", 184*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/test/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 185*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/test/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 186*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 187*333d2b36SAndroid Build Coastguard Worker }, 188*333d2b36SAndroid Build Coastguard Worker { 189*333d2b36SAndroid Build Coastguard Worker name: "test_30", 190*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "test_30",`, 191*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 192*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 193*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/test/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 194*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/test/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 195*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 196*333d2b36SAndroid Build Coastguard Worker }, 197*333d2b36SAndroid Build Coastguard Worker { 198*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 199*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 200*333d2b36SAndroid Build Coastguard Worker 201*333d2b36SAndroid Build Coastguard Worker name: "core_current", 202*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "core_current",`, 203*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"core.current.stubs", "core-lambda-stubs"}, 204*333d2b36SAndroid Build Coastguard Worker system: "core-public-stubs-system-modules", 205*333d2b36SAndroid Build Coastguard Worker }, 206*333d2b36SAndroid Build Coastguard Worker { 207*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 208*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 209*333d2b36SAndroid Build Coastguard Worker 210*333d2b36SAndroid Build Coastguard Worker name: "core_current", 211*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "core_current",`, 212*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 213*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_current_system_modules", 214*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/core/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 215*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/core/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 216*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 217*333d2b36SAndroid Build Coastguard Worker }, 218*333d2b36SAndroid Build Coastguard Worker { 219*333d2b36SAndroid Build Coastguard Worker 220*333d2b36SAndroid Build Coastguard Worker name: "nostdlib", 221*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "none", system_modules: "none"`, 222*333d2b36SAndroid Build Coastguard Worker system: "none", 223*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 224*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 225*333d2b36SAndroid Build Coastguard Worker }, 226*333d2b36SAndroid Build Coastguard Worker { 227*333d2b36SAndroid Build Coastguard Worker 228*333d2b36SAndroid Build Coastguard Worker name: "nostdlib system_modules", 229*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "none", system_modules: "stable-core-platform-api-stubs-system-modules"`, 230*333d2b36SAndroid Build Coastguard Worker system: "stable-core-platform-api-stubs-system-modules", 231*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"stable-core-platform-api-stubs-system-modules-lib"}, 232*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 233*333d2b36SAndroid Build Coastguard Worker }, 234*333d2b36SAndroid Build Coastguard Worker { 235*333d2b36SAndroid Build Coastguard Worker 236*333d2b36SAndroid Build Coastguard Worker name: "host default", 237*333d2b36SAndroid Build Coastguard Worker moduleType: "java_library_host", 238*333d2b36SAndroid Build Coastguard Worker properties: ``, 239*333d2b36SAndroid Build Coastguard Worker host: android.Host, 240*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"jdk8/jre/lib/jce.jar", "jdk8/jre/lib/rt.jar"}, 241*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 242*333d2b36SAndroid Build Coastguard Worker }, 243*333d2b36SAndroid Build Coastguard Worker { 244*333d2b36SAndroid Build Coastguard Worker 245*333d2b36SAndroid Build Coastguard Worker name: "host supported default", 246*333d2b36SAndroid Build Coastguard Worker host: android.Host, 247*333d2b36SAndroid Build Coastguard Worker properties: `host_supported: true,`, 248*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 249*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"jdk8/jre/lib/jce.jar", "jdk8/jre/lib/rt.jar"}, 250*333d2b36SAndroid Build Coastguard Worker }, 251*333d2b36SAndroid Build Coastguard Worker { 252*333d2b36SAndroid Build Coastguard Worker name: "host supported nostdlib", 253*333d2b36SAndroid Build Coastguard Worker host: android.Host, 254*333d2b36SAndroid Build Coastguard Worker properties: `host_supported: true, sdk_version: "none", system_modules: "none"`, 255*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{}, 256*333d2b36SAndroid Build Coastguard Worker }, 257*333d2b36SAndroid Build Coastguard Worker { 258*333d2b36SAndroid Build Coastguard Worker 259*333d2b36SAndroid Build Coastguard Worker name: "unbundled sdk v29", 260*333d2b36SAndroid Build Coastguard Worker unbundled: true, 261*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "29",`, 262*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 263*333d2b36SAndroid Build Coastguard Worker forces8: true, 264*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/29/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 265*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/29/public/framework.aidl", 266*333d2b36SAndroid Build Coastguard Worker }, 267*333d2b36SAndroid Build Coastguard Worker { 268*333d2b36SAndroid Build Coastguard Worker 269*333d2b36SAndroid Build Coastguard Worker name: "unbundled sdk v30", 270*333d2b36SAndroid Build Coastguard Worker unbundled: true, 271*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "30",`, 272*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 273*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 274*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 275*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 276*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 277*333d2b36SAndroid Build Coastguard Worker }, 278*333d2b36SAndroid Build Coastguard Worker { 279*333d2b36SAndroid Build Coastguard Worker 280*333d2b36SAndroid Build Coastguard Worker name: "unbundled current", 281*333d2b36SAndroid Build Coastguard Worker unbundled: true, 282*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "current",`, 283*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 284*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_current_system_modules", 285*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 286*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/public/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 287*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 288*333d2b36SAndroid Build Coastguard Worker }, 289*333d2b36SAndroid Build Coastguard Worker { 290*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 291*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 292*333d2b36SAndroid Build Coastguard Worker 293*333d2b36SAndroid Build Coastguard Worker name: "module_current", 294*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "module_current",`, 295*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"android_module_lib_stubs_current", "core-lambda-stubs"}, 296*333d2b36SAndroid Build Coastguard Worker system: "core-module-lib-stubs-system-modules", 297*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"android_module_lib_stubs_current"}, 298*333d2b36SAndroid Build Coastguard Worker aidl: "-pout/soong/framework_non_updatable.aidl", 299*333d2b36SAndroid Build Coastguard Worker }, 300*333d2b36SAndroid Build Coastguard Worker { 301*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 302*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 303*333d2b36SAndroid Build Coastguard Worker 304*333d2b36SAndroid Build Coastguard Worker name: "module_current", 305*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "module_current",`, 306*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 307*333d2b36SAndroid Build Coastguard Worker system: "sdk_module-lib_current_system_modules", 308*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 309*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 310*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 311*333d2b36SAndroid Build Coastguard Worker }, 312*333d2b36SAndroid Build Coastguard Worker { 313*333d2b36SAndroid Build Coastguard Worker name: "module_30", 314*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "module_30",`, 315*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 316*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 317*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 318*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 319*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 320*333d2b36SAndroid Build Coastguard Worker }, 321*333d2b36SAndroid Build Coastguard Worker { 322*333d2b36SAndroid Build Coastguard Worker name: "module_31", 323*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "module_31",`, 324*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 325*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_31_system_modules", 326*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/31/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 327*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/31/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 328*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/31/public/framework.aidl", 329*333d2b36SAndroid Build Coastguard Worker }, 330*333d2b36SAndroid Build Coastguard Worker { 331*333d2b36SAndroid Build Coastguard Worker name: "module_32", 332*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "module_32",`, 333*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 334*333d2b36SAndroid Build Coastguard Worker system: "sdk_module-lib_32_system_modules", 335*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/32/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 336*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/32/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 337*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/32/public/framework.aidl", 338*333d2b36SAndroid Build Coastguard Worker }, 339*333d2b36SAndroid Build Coastguard Worker { 340*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=false (the default). 341*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(false), 342*333d2b36SAndroid Build Coastguard Worker 343*333d2b36SAndroid Build Coastguard Worker name: "system_server_current", 344*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_server_current",`, 345*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{"android_system_server_stubs_current", "core-lambda-stubs"}, 346*333d2b36SAndroid Build Coastguard Worker system: "core-module-lib-stubs-system-modules", 347*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"android_system_server_stubs_current"}, 348*333d2b36SAndroid Build Coastguard Worker aidl: "-pout/soong/framework.aidl", 349*333d2b36SAndroid Build Coastguard Worker }, 350*333d2b36SAndroid Build Coastguard Worker { 351*333d2b36SAndroid Build Coastguard Worker // Test case only applies when Always_use_prebuilt_sdks=true. 352*333d2b36SAndroid Build Coastguard Worker forAlwaysUsePrebuiltSdks: proptools.BoolPtr(true), 353*333d2b36SAndroid Build Coastguard Worker 354*333d2b36SAndroid Build Coastguard Worker name: "system_server_current", 355*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_server_current",`, 356*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 357*333d2b36SAndroid Build Coastguard Worker system: "sdk_module-lib_current_system_modules", 358*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/current/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 359*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/current/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 360*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/current/public/framework.aidl", 361*333d2b36SAndroid Build Coastguard Worker }, 362*333d2b36SAndroid Build Coastguard Worker { 363*333d2b36SAndroid Build Coastguard Worker name: "system_server_30", 364*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_server_30",`, 365*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 366*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_30_system_modules", 367*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/30/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 368*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/30/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 369*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/30/public/framework.aidl", 370*333d2b36SAndroid Build Coastguard Worker }, 371*333d2b36SAndroid Build Coastguard Worker { 372*333d2b36SAndroid Build Coastguard Worker name: "system_server_31", 373*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_server_31",`, 374*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 375*333d2b36SAndroid Build Coastguard Worker system: "sdk_public_31_system_modules", 376*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/31/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 377*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/31/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 378*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/31/public/framework.aidl", 379*333d2b36SAndroid Build Coastguard Worker }, 380*333d2b36SAndroid Build Coastguard Worker { 381*333d2b36SAndroid Build Coastguard Worker name: "system_server_32", 382*333d2b36SAndroid Build Coastguard Worker properties: `sdk_version: "system_server_32",`, 383*333d2b36SAndroid Build Coastguard Worker bootclasspath: []string{`""`}, 384*333d2b36SAndroid Build Coastguard Worker system: "sdk_module-lib_32_system_modules", 385*333d2b36SAndroid Build Coastguard Worker java8classpath: []string{"prebuilts/sdk/32/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 386*333d2b36SAndroid Build Coastguard Worker java9classpath: []string{"prebuilts/sdk/32/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"}, 387*333d2b36SAndroid Build Coastguard Worker aidl: "-pprebuilts/sdk/32/public/framework.aidl", 388*333d2b36SAndroid Build Coastguard Worker }, 389*333d2b36SAndroid Build Coastguard Worker } 390*333d2b36SAndroid Build Coastguard Worker 391*333d2b36SAndroid Build Coastguard Worker t.Parallel() 392*333d2b36SAndroid Build Coastguard Worker t.Run("basic", func(t *testing.T) { 393*333d2b36SAndroid Build Coastguard Worker t.Parallel() 394*333d2b36SAndroid Build Coastguard Worker testClasspathTestCases(t, classpathTestcases, false, false) 395*333d2b36SAndroid Build Coastguard Worker }) 396*333d2b36SAndroid Build Coastguard Worker 397*333d2b36SAndroid Build Coastguard Worker t.Run("Always_use_prebuilt_sdks=true", func(t *testing.T) { 398*333d2b36SAndroid Build Coastguard Worker testClasspathTestCases(t, classpathTestcases, true, false) 399*333d2b36SAndroid Build Coastguard Worker }) 400*333d2b36SAndroid Build Coastguard Worker 401*333d2b36SAndroid Build Coastguard Worker t.Run("UseTransitiveJarsInClasspath", func(t *testing.T) { 402*333d2b36SAndroid Build Coastguard Worker testClasspathTestCases(t, classpathTestcases, false, true) 403*333d2b36SAndroid Build Coastguard Worker }) 404*333d2b36SAndroid Build Coastguard Worker} 405*333d2b36SAndroid Build Coastguard Worker 406*333d2b36SAndroid Build Coastguard Workerfunc testClasspathTestCases(t *testing.T, classpathTestcases []classpathTestCase, alwaysUsePrebuiltSdks, useTransitiveJarsInClasspath bool) { 407*333d2b36SAndroid Build Coastguard Worker for _, testcase := range classpathTestcases { 408*333d2b36SAndroid Build Coastguard Worker if testcase.forAlwaysUsePrebuiltSdks != nil && *testcase.forAlwaysUsePrebuiltSdks != alwaysUsePrebuiltSdks { 409*333d2b36SAndroid Build Coastguard Worker continue 410*333d2b36SAndroid Build Coastguard Worker } 411*333d2b36SAndroid Build Coastguard Worker 412*333d2b36SAndroid Build Coastguard Worker t.Run(testcase.name, func(t *testing.T) { 413*333d2b36SAndroid Build Coastguard Worker t.Parallel() 414*333d2b36SAndroid Build Coastguard Worker moduleType := "java_library" 415*333d2b36SAndroid Build Coastguard Worker if testcase.moduleType != "" { 416*333d2b36SAndroid Build Coastguard Worker moduleType = testcase.moduleType 417*333d2b36SAndroid Build Coastguard Worker } 418*333d2b36SAndroid Build Coastguard Worker 419*333d2b36SAndroid Build Coastguard Worker props := ` 420*333d2b36SAndroid Build Coastguard Worker name: "foo", 421*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 422*333d2b36SAndroid Build Coastguard Worker target: { 423*333d2b36SAndroid Build Coastguard Worker android: { 424*333d2b36SAndroid Build Coastguard Worker srcs: ["bar-doc/IFoo.aidl"], 425*333d2b36SAndroid Build Coastguard Worker }, 426*333d2b36SAndroid Build Coastguard Worker }, 427*333d2b36SAndroid Build Coastguard Worker ` 428*333d2b36SAndroid Build Coastguard Worker bp := moduleType + " {" + props + testcase.properties + ` 429*333d2b36SAndroid Build Coastguard Worker }` 430*333d2b36SAndroid Build Coastguard Worker bpJava8 := moduleType + " {" + props + `java_version: "1.8", 431*333d2b36SAndroid Build Coastguard Worker ` + testcase.properties + ` 432*333d2b36SAndroid Build Coastguard Worker }` 433*333d2b36SAndroid Build Coastguard Worker 434*333d2b36SAndroid Build Coastguard Worker variant := func(result *android.TestResult) string { 435*333d2b36SAndroid Build Coastguard Worker if testcase.host == android.Host { 436*333d2b36SAndroid Build Coastguard Worker return result.Config.BuildOS.String() + "_common" 437*333d2b36SAndroid Build Coastguard Worker } 438*333d2b36SAndroid Build Coastguard Worker return "android_common" 439*333d2b36SAndroid Build Coastguard Worker } 440*333d2b36SAndroid Build Coastguard Worker 441*333d2b36SAndroid Build Coastguard Worker convertModulesToPaths := func(cp []string) []string { 442*333d2b36SAndroid Build Coastguard Worker ret := make([]string, len(cp)) 443*333d2b36SAndroid Build Coastguard Worker for i, e := range cp { 444*333d2b36SAndroid Build Coastguard Worker switch { 445*333d2b36SAndroid Build Coastguard Worker case e == `""`, strings.HasSuffix(e, ".jar"): 446*333d2b36SAndroid Build Coastguard Worker ret[i] = e 447*333d2b36SAndroid Build Coastguard Worker case useTransitiveJarsInClasspath: 448*333d2b36SAndroid Build Coastguard Worker ret[i] = filepath.Join("out", "soong", ".intermediates", defaultJavaDir, e, "android_common", "turbine", e+".jar") 449*333d2b36SAndroid Build Coastguard Worker default: 450*333d2b36SAndroid Build Coastguard Worker ret[i] = filepath.Join("out", "soong", ".intermediates", defaultJavaDir, e, "android_common", "turbine-combined", e+".jar") 451*333d2b36SAndroid Build Coastguard Worker } 452*333d2b36SAndroid Build Coastguard Worker } 453*333d2b36SAndroid Build Coastguard Worker return ret 454*333d2b36SAndroid Build Coastguard Worker } 455*333d2b36SAndroid Build Coastguard Worker 456*333d2b36SAndroid Build Coastguard Worker bootclasspath := convertModulesToPaths(testcase.bootclasspath) 457*333d2b36SAndroid Build Coastguard Worker java8classpath := convertModulesToPaths(testcase.java8classpath) 458*333d2b36SAndroid Build Coastguard Worker java9classpath := convertModulesToPaths(testcase.java9classpath) 459*333d2b36SAndroid Build Coastguard Worker 460*333d2b36SAndroid Build Coastguard Worker bc := "" 461*333d2b36SAndroid Build Coastguard Worker var bcDeps []string 462*333d2b36SAndroid Build Coastguard Worker if len(bootclasspath) > 0 { 463*333d2b36SAndroid Build Coastguard Worker bc = "-bootclasspath " + strings.Join(bootclasspath, ":") 464*333d2b36SAndroid Build Coastguard Worker if bootclasspath[0] != `""` { 465*333d2b36SAndroid Build Coastguard Worker bcDeps = bootclasspath 466*333d2b36SAndroid Build Coastguard Worker } 467*333d2b36SAndroid Build Coastguard Worker } 468*333d2b36SAndroid Build Coastguard Worker 469*333d2b36SAndroid Build Coastguard Worker j8c := "" 470*333d2b36SAndroid Build Coastguard Worker if len(java8classpath) > 0 { 471*333d2b36SAndroid Build Coastguard Worker j8c = "-classpath " + strings.Join(java8classpath, ":") 472*333d2b36SAndroid Build Coastguard Worker } 473*333d2b36SAndroid Build Coastguard Worker 474*333d2b36SAndroid Build Coastguard Worker j9c := "" 475*333d2b36SAndroid Build Coastguard Worker if len(java9classpath) > 0 { 476*333d2b36SAndroid Build Coastguard Worker j9c = "-classpath " + strings.Join(java9classpath, ":") 477*333d2b36SAndroid Build Coastguard Worker } 478*333d2b36SAndroid Build Coastguard Worker 479*333d2b36SAndroid Build Coastguard Worker system := "" 480*333d2b36SAndroid Build Coastguard Worker var systemDeps []string 481*333d2b36SAndroid Build Coastguard Worker if testcase.system == "none" { 482*333d2b36SAndroid Build Coastguard Worker system = "--system=none" 483*333d2b36SAndroid Build Coastguard Worker } else if testcase.system != "" { 484*333d2b36SAndroid Build Coastguard Worker dir := "" 485*333d2b36SAndroid Build Coastguard Worker // If the system modules name starts with sdk_ then it is a prebuilt module and so comes 486*333d2b36SAndroid Build Coastguard Worker // from the prebuilt directory. 487*333d2b36SAndroid Build Coastguard Worker if strings.HasPrefix(testcase.system, "sdk_") { 488*333d2b36SAndroid Build Coastguard Worker dir = "prebuilts/sdk" 489*333d2b36SAndroid Build Coastguard Worker } else { 490*333d2b36SAndroid Build Coastguard Worker dir = defaultJavaDir 491*333d2b36SAndroid Build Coastguard Worker } 492*333d2b36SAndroid Build Coastguard Worker system = "--system=" + filepath.Join("out", "soong", ".intermediates", dir, testcase.system, "android_common", "system") 493*333d2b36SAndroid Build Coastguard Worker // The module-relative parts of these paths are hardcoded in system_modules.go: 494*333d2b36SAndroid Build Coastguard Worker systemDeps = []string{ 495*333d2b36SAndroid Build Coastguard Worker filepath.Join("out", "soong", ".intermediates", dir, testcase.system, "android_common", "system", "lib", "modules"), 496*333d2b36SAndroid Build Coastguard Worker filepath.Join("out", "soong", ".intermediates", dir, testcase.system, "android_common", "system", "lib", "jrt-fs.jar"), 497*333d2b36SAndroid Build Coastguard Worker filepath.Join("out", "soong", ".intermediates", dir, testcase.system, "android_common", "system", "release"), 498*333d2b36SAndroid Build Coastguard Worker } 499*333d2b36SAndroid Build Coastguard Worker } 500*333d2b36SAndroid Build Coastguard Worker 501*333d2b36SAndroid Build Coastguard Worker checkClasspath := func(t *testing.T, result *android.TestResult, isJava8 bool) { 502*333d2b36SAndroid Build Coastguard Worker foo := result.ModuleForTests("foo", variant(result)) 503*333d2b36SAndroid Build Coastguard Worker javac := foo.Rule("javac") 504*333d2b36SAndroid Build Coastguard Worker var deps []string 505*333d2b36SAndroid Build Coastguard Worker 506*333d2b36SAndroid Build Coastguard Worker aidl := foo.MaybeRule("aidl") 507*333d2b36SAndroid Build Coastguard Worker if aidl.Rule != nil { 508*333d2b36SAndroid Build Coastguard Worker deps = append(deps, android.PathRelativeToTop(aidl.Output)) 509*333d2b36SAndroid Build Coastguard Worker } 510*333d2b36SAndroid Build Coastguard Worker 511*333d2b36SAndroid Build Coastguard Worker got := javac.Args["bootClasspath"] 512*333d2b36SAndroid Build Coastguard Worker expected := "" 513*333d2b36SAndroid Build Coastguard Worker if isJava8 || testcase.forces8 { 514*333d2b36SAndroid Build Coastguard Worker expected = bc 515*333d2b36SAndroid Build Coastguard Worker deps = append(deps, bcDeps...) 516*333d2b36SAndroid Build Coastguard Worker } else { 517*333d2b36SAndroid Build Coastguard Worker expected = system 518*333d2b36SAndroid Build Coastguard Worker deps = append(deps, systemDeps...) 519*333d2b36SAndroid Build Coastguard Worker } 520*333d2b36SAndroid Build Coastguard Worker if got != expected { 521*333d2b36SAndroid Build Coastguard Worker t.Errorf("bootclasspath expected %q != got %q", expected, got) 522*333d2b36SAndroid Build Coastguard Worker } 523*333d2b36SAndroid Build Coastguard Worker 524*333d2b36SAndroid Build Coastguard Worker if isJava8 || testcase.forces8 { 525*333d2b36SAndroid Build Coastguard Worker expected = j8c 526*333d2b36SAndroid Build Coastguard Worker deps = append(deps, java8classpath...) 527*333d2b36SAndroid Build Coastguard Worker } else { 528*333d2b36SAndroid Build Coastguard Worker expected = j9c 529*333d2b36SAndroid Build Coastguard Worker deps = append(deps, java9classpath...) 530*333d2b36SAndroid Build Coastguard Worker } 531*333d2b36SAndroid Build Coastguard Worker got = javac.Args["classpath"] 532*333d2b36SAndroid Build Coastguard Worker if got != expected { 533*333d2b36SAndroid Build Coastguard Worker t.Errorf("classpath expected %q != got %q", expected, got) 534*333d2b36SAndroid Build Coastguard Worker } 535*333d2b36SAndroid Build Coastguard Worker 536*333d2b36SAndroid Build Coastguard Worker android.AssertPathsRelativeToTopEquals(t, "implicits", deps, javac.Implicits) 537*333d2b36SAndroid Build Coastguard Worker } 538*333d2b36SAndroid Build Coastguard Worker 539*333d2b36SAndroid Build Coastguard Worker preparer := android.NullFixturePreparer 540*333d2b36SAndroid Build Coastguard Worker if alwaysUsePrebuiltSdks { 541*333d2b36SAndroid Build Coastguard Worker preparer = android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 542*333d2b36SAndroid Build Coastguard Worker variables.Always_use_prebuilt_sdks = proptools.BoolPtr(true) 543*333d2b36SAndroid Build Coastguard Worker }) 544*333d2b36SAndroid Build Coastguard Worker } 545*333d2b36SAndroid Build Coastguard Worker if useTransitiveJarsInClasspath { 546*333d2b36SAndroid Build Coastguard Worker preparer = PrepareForTestWithTransitiveClasspathEnabled 547*333d2b36SAndroid Build Coastguard Worker } 548*333d2b36SAndroid Build Coastguard Worker 549*333d2b36SAndroid Build Coastguard Worker fixtureFactory := android.GroupFixturePreparers( 550*333d2b36SAndroid Build Coastguard Worker prepareForJavaTest, 551*333d2b36SAndroid Build Coastguard Worker FixtureWithPrebuiltApis(map[string][]string{ 552*333d2b36SAndroid Build Coastguard Worker "29": {}, 553*333d2b36SAndroid Build Coastguard Worker "30": {}, 554*333d2b36SAndroid Build Coastguard Worker "31": {}, 555*333d2b36SAndroid Build Coastguard Worker "32": {}, 556*333d2b36SAndroid Build Coastguard Worker "current": {}, 557*333d2b36SAndroid Build Coastguard Worker }), 558*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 559*333d2b36SAndroid Build Coastguard Worker if testcase.unbundled { 560*333d2b36SAndroid Build Coastguard Worker variables.Unbundled_build = proptools.BoolPtr(true) 561*333d2b36SAndroid Build Coastguard Worker variables.Always_use_prebuilt_sdks = proptools.BoolPtr(true) 562*333d2b36SAndroid Build Coastguard Worker } 563*333d2b36SAndroid Build Coastguard Worker }), 564*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyEnv(func(env map[string]string) { 565*333d2b36SAndroid Build Coastguard Worker if env["ANDROID_JAVA8_HOME"] == "" { 566*333d2b36SAndroid Build Coastguard Worker env["ANDROID_JAVA8_HOME"] = "jdk8" 567*333d2b36SAndroid Build Coastguard Worker } 568*333d2b36SAndroid Build Coastguard Worker }), 569*333d2b36SAndroid Build Coastguard Worker preparer, 570*333d2b36SAndroid Build Coastguard Worker ) 571*333d2b36SAndroid Build Coastguard Worker 572*333d2b36SAndroid Build Coastguard Worker // Test with legacy javac -source 1.8 -target 1.8 573*333d2b36SAndroid Build Coastguard Worker t.Run("Java language level 8", func(t *testing.T) { 574*333d2b36SAndroid Build Coastguard Worker result := fixtureFactory.RunTestWithBp(t, bpJava8) 575*333d2b36SAndroid Build Coastguard Worker 576*333d2b36SAndroid Build Coastguard Worker checkClasspath(t, result, true /* isJava8 */) 577*333d2b36SAndroid Build Coastguard Worker 578*333d2b36SAndroid Build Coastguard Worker if testcase.host != android.Host { 579*333d2b36SAndroid Build Coastguard Worker aidl := result.ModuleForTests("foo", variant(result)).Rule("aidl") 580*333d2b36SAndroid Build Coastguard Worker 581*333d2b36SAndroid Build Coastguard Worker android.AssertStringDoesContain(t, "aidl command", aidl.RuleParams.Command, testcase.aidl+" -I.") 582*333d2b36SAndroid Build Coastguard Worker } 583*333d2b36SAndroid Build Coastguard Worker }) 584*333d2b36SAndroid Build Coastguard Worker 585*333d2b36SAndroid Build Coastguard Worker // Test with default javac -source 9 -target 9 586*333d2b36SAndroid Build Coastguard Worker t.Run("Java language level 9", func(t *testing.T) { 587*333d2b36SAndroid Build Coastguard Worker result := fixtureFactory.RunTestWithBp(t, bp) 588*333d2b36SAndroid Build Coastguard Worker 589*333d2b36SAndroid Build Coastguard Worker checkClasspath(t, result, false /* isJava8 */) 590*333d2b36SAndroid Build Coastguard Worker 591*333d2b36SAndroid Build Coastguard Worker if testcase.host != android.Host { 592*333d2b36SAndroid Build Coastguard Worker aidl := result.ModuleForTests("foo", variant(result)).Rule("aidl") 593*333d2b36SAndroid Build Coastguard Worker 594*333d2b36SAndroid Build Coastguard Worker android.AssertStringDoesContain(t, "aidl command", aidl.RuleParams.Command, testcase.aidl+" -I.") 595*333d2b36SAndroid Build Coastguard Worker } 596*333d2b36SAndroid Build Coastguard Worker }) 597*333d2b36SAndroid Build Coastguard Worker 598*333d2b36SAndroid Build Coastguard Worker prepareWithPlatformVersionRel := android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 599*333d2b36SAndroid Build Coastguard Worker variables.Platform_sdk_codename = proptools.StringPtr("REL") 600*333d2b36SAndroid Build Coastguard Worker variables.Platform_sdk_final = proptools.BoolPtr(true) 601*333d2b36SAndroid Build Coastguard Worker }) 602*333d2b36SAndroid Build Coastguard Worker 603*333d2b36SAndroid Build Coastguard Worker // Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 8 -target 8 604*333d2b36SAndroid Build Coastguard Worker t.Run("REL + Java language level 8", func(t *testing.T) { 605*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 606*333d2b36SAndroid Build Coastguard Worker fixtureFactory, prepareWithPlatformVersionRel).RunTestWithBp(t, bpJava8) 607*333d2b36SAndroid Build Coastguard Worker 608*333d2b36SAndroid Build Coastguard Worker checkClasspath(t, result, true /* isJava8 */) 609*333d2b36SAndroid Build Coastguard Worker }) 610*333d2b36SAndroid Build Coastguard Worker 611*333d2b36SAndroid Build Coastguard Worker // Test again with PLATFORM_VERSION_CODENAME=REL, javac -source 9 -target 9 612*333d2b36SAndroid Build Coastguard Worker t.Run("REL + Java language level 9", func(t *testing.T) { 613*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 614*333d2b36SAndroid Build Coastguard Worker fixtureFactory, prepareWithPlatformVersionRel).RunTestWithBp(t, bp) 615*333d2b36SAndroid Build Coastguard Worker 616*333d2b36SAndroid Build Coastguard Worker checkClasspath(t, result, false /* isJava8 */) 617*333d2b36SAndroid Build Coastguard Worker }) 618*333d2b36SAndroid Build Coastguard Worker }) 619*333d2b36SAndroid Build Coastguard Worker } 620*333d2b36SAndroid Build Coastguard Worker} 621