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 sdk 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "log" 19*333d2b36SAndroid Build Coastguard Worker "os" 20*333d2b36SAndroid Build Coastguard Worker "runtime" 21*333d2b36SAndroid Build Coastguard Worker "testing" 22*333d2b36SAndroid Build Coastguard Worker 23*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 24*333d2b36SAndroid Build Coastguard Worker "android/soong/java" 25*333d2b36SAndroid Build Coastguard Worker 26*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint/proptools" 27*333d2b36SAndroid Build Coastguard Worker) 28*333d2b36SAndroid Build Coastguard Worker 29*333d2b36SAndroid Build Coastguard Worker// Needed in an _test.go file in this package to ensure tests run correctly, particularly in IDE. 30*333d2b36SAndroid Build Coastguard Workerfunc TestMain(m *testing.M) { 31*333d2b36SAndroid Build Coastguard Worker if runtime.GOOS != "linux" { 32*333d2b36SAndroid Build Coastguard Worker // b/145598135 - Generating host snapshots for anything other than linux is not supported. 33*333d2b36SAndroid Build Coastguard Worker log.Printf("Skipping as sdk snapshot generation is only supported on linux not %s", runtime.GOOS) 34*333d2b36SAndroid Build Coastguard Worker os.Exit(0) 35*333d2b36SAndroid Build Coastguard Worker } 36*333d2b36SAndroid Build Coastguard Worker 37*333d2b36SAndroid Build Coastguard Worker os.Exit(m.Run()) 38*333d2b36SAndroid Build Coastguard Worker} 39*333d2b36SAndroid Build Coastguard Worker 40*333d2b36SAndroid Build Coastguard Worker// Ensure that prebuilt modules have the same effective visibility as the source 41*333d2b36SAndroid Build Coastguard Worker// modules. 42*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotVisibility(t *testing.T) { 43*333d2b36SAndroid Build Coastguard Worker packageBp := ` 44*333d2b36SAndroid Build Coastguard Worker package { 45*333d2b36SAndroid Build Coastguard Worker default_visibility: ["//other/foo"], 46*333d2b36SAndroid Build Coastguard Worker } 47*333d2b36SAndroid Build Coastguard Worker 48*333d2b36SAndroid Build Coastguard Worker sdk { 49*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 50*333d2b36SAndroid Build Coastguard Worker visibility: [ 51*333d2b36SAndroid Build Coastguard Worker "//other/foo", 52*333d2b36SAndroid Build Coastguard Worker // This short form will be replaced with //package:__subpackages__ in the 53*333d2b36SAndroid Build Coastguard Worker // generated sdk_snapshot. 54*333d2b36SAndroid Build Coastguard Worker ":__subpackages__", 55*333d2b36SAndroid Build Coastguard Worker ], 56*333d2b36SAndroid Build Coastguard Worker java_header_libs: [ 57*333d2b36SAndroid Build Coastguard Worker "myjavalib", 58*333d2b36SAndroid Build Coastguard Worker "mypublicjavalib", 59*333d2b36SAndroid Build Coastguard Worker "mydefaultedjavalib", 60*333d2b36SAndroid Build Coastguard Worker "myprivatejavalib", 61*333d2b36SAndroid Build Coastguard Worker ], 62*333d2b36SAndroid Build Coastguard Worker } 63*333d2b36SAndroid Build Coastguard Worker 64*333d2b36SAndroid Build Coastguard Worker java_library { 65*333d2b36SAndroid Build Coastguard Worker name: "myjavalib", 66*333d2b36SAndroid Build Coastguard Worker // Uses package default visibility 67*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 68*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 69*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 70*333d2b36SAndroid Build Coastguard Worker } 71*333d2b36SAndroid Build Coastguard Worker 72*333d2b36SAndroid Build Coastguard Worker java_defaults { 73*333d2b36SAndroid Build Coastguard Worker name: "java-defaults", 74*333d2b36SAndroid Build Coastguard Worker visibility: ["//other/bar"], 75*333d2b36SAndroid Build Coastguard Worker } 76*333d2b36SAndroid Build Coastguard Worker 77*333d2b36SAndroid Build Coastguard Worker java_library { 78*333d2b36SAndroid Build Coastguard Worker name: "mypublicjavalib", 79*333d2b36SAndroid Build Coastguard Worker defaults: ["java-defaults"], 80*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 81*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 82*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 83*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 84*333d2b36SAndroid Build Coastguard Worker } 85*333d2b36SAndroid Build Coastguard Worker 86*333d2b36SAndroid Build Coastguard Worker java_defaults { 87*333d2b36SAndroid Build Coastguard Worker name: "myjavadefaults", 88*333d2b36SAndroid Build Coastguard Worker visibility: ["//other/bar"], 89*333d2b36SAndroid Build Coastguard Worker } 90*333d2b36SAndroid Build Coastguard Worker 91*333d2b36SAndroid Build Coastguard Worker java_library { 92*333d2b36SAndroid Build Coastguard Worker name: "mydefaultedjavalib", 93*333d2b36SAndroid Build Coastguard Worker defaults: ["myjavadefaults"], 94*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 95*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 96*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 97*333d2b36SAndroid Build Coastguard Worker } 98*333d2b36SAndroid Build Coastguard Worker 99*333d2b36SAndroid Build Coastguard Worker java_library { 100*333d2b36SAndroid Build Coastguard Worker name: "myprivatejavalib", 101*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 102*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:private"], 103*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 104*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 105*333d2b36SAndroid Build Coastguard Worker } 106*333d2b36SAndroid Build Coastguard Worker ` 107*333d2b36SAndroid Build Coastguard Worker 108*333d2b36SAndroid Build Coastguard Worker result := testSdkWithFs(t, ``, 109*333d2b36SAndroid Build Coastguard Worker map[string][]byte{ 110*333d2b36SAndroid Build Coastguard Worker "package/Test.java": nil, 111*333d2b36SAndroid Build Coastguard Worker "package/Android.bp": []byte(packageBp), 112*333d2b36SAndroid Build Coastguard Worker }) 113*333d2b36SAndroid Build Coastguard Worker 114*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "package", 115*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 116*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 117*333d2b36SAndroid Build Coastguard Worker 118*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 119*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 120*333d2b36SAndroid Build Coastguard Worker contents: [ 121*333d2b36SAndroid Build Coastguard Worker "prebuilt_myjavalib", 122*333d2b36SAndroid Build Coastguard Worker "prebuilt_mypublicjavalib", 123*333d2b36SAndroid Build Coastguard Worker "prebuilt_mydefaultedjavalib", 124*333d2b36SAndroid Build Coastguard Worker "prebuilt_myprivatejavalib", 125*333d2b36SAndroid Build Coastguard Worker ], 126*333d2b36SAndroid Build Coastguard Worker} 127*333d2b36SAndroid Build Coastguard Worker 128*333d2b36SAndroid Build Coastguard Workerjava_import { 129*333d2b36SAndroid Build Coastguard Worker name: "myjavalib", 130*333d2b36SAndroid Build Coastguard Worker prefer: false, 131*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 132*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 133*333d2b36SAndroid Build Coastguard Worker jars: ["java/myjavalib.jar"], 134*333d2b36SAndroid Build Coastguard Worker} 135*333d2b36SAndroid Build Coastguard Worker 136*333d2b36SAndroid Build Coastguard Workerjava_import { 137*333d2b36SAndroid Build Coastguard Worker name: "mypublicjavalib", 138*333d2b36SAndroid Build Coastguard Worker prefer: false, 139*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 140*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 141*333d2b36SAndroid Build Coastguard Worker jars: ["java/mypublicjavalib.jar"], 142*333d2b36SAndroid Build Coastguard Worker} 143*333d2b36SAndroid Build Coastguard Worker 144*333d2b36SAndroid Build Coastguard Workerjava_import { 145*333d2b36SAndroid Build Coastguard Worker name: "mydefaultedjavalib", 146*333d2b36SAndroid Build Coastguard Worker prefer: false, 147*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 148*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 149*333d2b36SAndroid Build Coastguard Worker jars: ["java/mydefaultedjavalib.jar"], 150*333d2b36SAndroid Build Coastguard Worker} 151*333d2b36SAndroid Build Coastguard Worker 152*333d2b36SAndroid Build Coastguard Workerjava_import { 153*333d2b36SAndroid Build Coastguard Worker name: "myprivatejavalib", 154*333d2b36SAndroid Build Coastguard Worker prefer: false, 155*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 156*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 157*333d2b36SAndroid Build Coastguard Worker jars: ["java/myprivatejavalib.jar"], 158*333d2b36SAndroid Build Coastguard Worker} 159*333d2b36SAndroid Build Coastguard Worker`)) 160*333d2b36SAndroid Build Coastguard Worker} 161*333d2b36SAndroid Build Coastguard Worker 162*333d2b36SAndroid Build Coastguard Workerfunc TestSdkInstall(t *testing.T) { 163*333d2b36SAndroid Build Coastguard Worker sdk := ` 164*333d2b36SAndroid Build Coastguard Worker sdk { 165*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 166*333d2b36SAndroid Build Coastguard Worker } 167*333d2b36SAndroid Build Coastguard Worker ` 168*333d2b36SAndroid Build Coastguard Worker result := testSdkWithFs(t, sdk, nil) 169*333d2b36SAndroid Build Coastguard Worker 170*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 171*333d2b36SAndroid Build Coastguard Worker checkAllOtherCopyRules(` 172*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/mysdk-current.info -> mysdk-current.info 173*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/mysdk-current.zip -> mysdk-current.zip 174*333d2b36SAndroid Build Coastguard Worker`)) 175*333d2b36SAndroid Build Coastguard Worker} 176*333d2b36SAndroid Build Coastguard Worker 177*333d2b36SAndroid Build Coastguard Workertype EmbeddedPropertiesStruct struct { 178*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common string `android:"arch_variant"` 179*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different string `android:"arch_variant"` 180*333d2b36SAndroid Build Coastguard Worker} 181*333d2b36SAndroid Build Coastguard Worker 182*333d2b36SAndroid Build Coastguard Workertype testPropertiesStruct struct { 183*333d2b36SAndroid Build Coastguard Worker name string 184*333d2b36SAndroid Build Coastguard Worker private string 185*333d2b36SAndroid Build Coastguard Worker Public_Ignore string `sdk:"ignore"` 186*333d2b36SAndroid Build Coastguard Worker Public_Keep string `sdk:"keep"` 187*333d2b36SAndroid Build Coastguard Worker S_Common string 188*333d2b36SAndroid Build Coastguard Worker S_Different string `android:"arch_variant"` 189*333d2b36SAndroid Build Coastguard Worker A_Common []string 190*333d2b36SAndroid Build Coastguard Worker A_Different []string `android:"arch_variant"` 191*333d2b36SAndroid Build Coastguard Worker F_Common *bool 192*333d2b36SAndroid Build Coastguard Worker F_Different *bool `android:"arch_variant"` 193*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct 194*333d2b36SAndroid Build Coastguard Worker} 195*333d2b36SAndroid Build Coastguard Worker 196*333d2b36SAndroid Build Coastguard Workerfunc (p *testPropertiesStruct) optimizableProperties() interface{} { 197*333d2b36SAndroid Build Coastguard Worker return p 198*333d2b36SAndroid Build Coastguard Worker} 199*333d2b36SAndroid Build Coastguard Worker 200*333d2b36SAndroid Build Coastguard Workerfunc (p *testPropertiesStruct) String() string { 201*333d2b36SAndroid Build Coastguard Worker return p.name 202*333d2b36SAndroid Build Coastguard Worker} 203*333d2b36SAndroid Build Coastguard Worker 204*333d2b36SAndroid Build Coastguard Workervar _ propertiesContainer = (*testPropertiesStruct)(nil) 205*333d2b36SAndroid Build Coastguard Worker 206*333d2b36SAndroid Build Coastguard Workerfunc TestCommonValueOptimization(t *testing.T) { 207*333d2b36SAndroid Build Coastguard Worker common := &testPropertiesStruct{name: "common"} 208*333d2b36SAndroid Build Coastguard Worker structs := []propertiesContainer{ 209*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 210*333d2b36SAndroid Build Coastguard Worker name: "struct-0", 211*333d2b36SAndroid Build Coastguard Worker private: "common", 212*333d2b36SAndroid Build Coastguard Worker Public_Ignore: "common", 213*333d2b36SAndroid Build Coastguard Worker Public_Keep: "keep", 214*333d2b36SAndroid Build Coastguard Worker S_Common: "common", 215*333d2b36SAndroid Build Coastguard Worker S_Different: "upper", 216*333d2b36SAndroid Build Coastguard Worker A_Common: []string{"first", "second"}, 217*333d2b36SAndroid Build Coastguard Worker A_Different: []string{"alpha", "beta"}, 218*333d2b36SAndroid Build Coastguard Worker F_Common: proptools.BoolPtr(false), 219*333d2b36SAndroid Build Coastguard Worker F_Different: proptools.BoolPtr(false), 220*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct: EmbeddedPropertiesStruct{ 221*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common: "embedded_common", 222*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different: "embedded_upper", 223*333d2b36SAndroid Build Coastguard Worker }, 224*333d2b36SAndroid Build Coastguard Worker }, 225*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 226*333d2b36SAndroid Build Coastguard Worker name: "struct-1", 227*333d2b36SAndroid Build Coastguard Worker private: "common", 228*333d2b36SAndroid Build Coastguard Worker Public_Ignore: "common", 229*333d2b36SAndroid Build Coastguard Worker Public_Keep: "keep", 230*333d2b36SAndroid Build Coastguard Worker S_Common: "common", 231*333d2b36SAndroid Build Coastguard Worker S_Different: "lower", 232*333d2b36SAndroid Build Coastguard Worker A_Common: []string{"first", "second"}, 233*333d2b36SAndroid Build Coastguard Worker A_Different: []string{"alpha", "delta"}, 234*333d2b36SAndroid Build Coastguard Worker F_Common: proptools.BoolPtr(false), 235*333d2b36SAndroid Build Coastguard Worker F_Different: proptools.BoolPtr(true), 236*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct: EmbeddedPropertiesStruct{ 237*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common: "embedded_common", 238*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different: "embedded_lower", 239*333d2b36SAndroid Build Coastguard Worker }, 240*333d2b36SAndroid Build Coastguard Worker }, 241*333d2b36SAndroid Build Coastguard Worker } 242*333d2b36SAndroid Build Coastguard Worker 243*333d2b36SAndroid Build Coastguard Worker extractor := newCommonValueExtractor(common) 244*333d2b36SAndroid Build Coastguard Worker 245*333d2b36SAndroid Build Coastguard Worker err := extractor.extractCommonProperties(common, structs) 246*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "unexpected error", nil, err) 247*333d2b36SAndroid Build Coastguard Worker 248*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "common properties not correct", 249*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 250*333d2b36SAndroid Build Coastguard Worker name: "common", 251*333d2b36SAndroid Build Coastguard Worker private: "", 252*333d2b36SAndroid Build Coastguard Worker Public_Ignore: "", 253*333d2b36SAndroid Build Coastguard Worker Public_Keep: "keep", 254*333d2b36SAndroid Build Coastguard Worker S_Common: "common", 255*333d2b36SAndroid Build Coastguard Worker S_Different: "", 256*333d2b36SAndroid Build Coastguard Worker A_Common: []string{"first", "second"}, 257*333d2b36SAndroid Build Coastguard Worker A_Different: []string(nil), 258*333d2b36SAndroid Build Coastguard Worker F_Common: proptools.BoolPtr(false), 259*333d2b36SAndroid Build Coastguard Worker F_Different: nil, 260*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct: EmbeddedPropertiesStruct{ 261*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common: "embedded_common", 262*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different: "", 263*333d2b36SAndroid Build Coastguard Worker }, 264*333d2b36SAndroid Build Coastguard Worker }, 265*333d2b36SAndroid Build Coastguard Worker common) 266*333d2b36SAndroid Build Coastguard Worker 267*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "updated properties[0] not correct", 268*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 269*333d2b36SAndroid Build Coastguard Worker name: "struct-0", 270*333d2b36SAndroid Build Coastguard Worker private: "common", 271*333d2b36SAndroid Build Coastguard Worker Public_Ignore: "common", 272*333d2b36SAndroid Build Coastguard Worker Public_Keep: "keep", 273*333d2b36SAndroid Build Coastguard Worker S_Common: "", 274*333d2b36SAndroid Build Coastguard Worker S_Different: "upper", 275*333d2b36SAndroid Build Coastguard Worker A_Common: nil, 276*333d2b36SAndroid Build Coastguard Worker A_Different: []string{"alpha", "beta"}, 277*333d2b36SAndroid Build Coastguard Worker F_Common: nil, 278*333d2b36SAndroid Build Coastguard Worker F_Different: proptools.BoolPtr(false), 279*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct: EmbeddedPropertiesStruct{ 280*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common: "", 281*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different: "embedded_upper", 282*333d2b36SAndroid Build Coastguard Worker }, 283*333d2b36SAndroid Build Coastguard Worker }, 284*333d2b36SAndroid Build Coastguard Worker structs[0]) 285*333d2b36SAndroid Build Coastguard Worker 286*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "updated properties[1] not correct", 287*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 288*333d2b36SAndroid Build Coastguard Worker name: "struct-1", 289*333d2b36SAndroid Build Coastguard Worker private: "common", 290*333d2b36SAndroid Build Coastguard Worker Public_Ignore: "common", 291*333d2b36SAndroid Build Coastguard Worker Public_Keep: "keep", 292*333d2b36SAndroid Build Coastguard Worker S_Common: "", 293*333d2b36SAndroid Build Coastguard Worker S_Different: "lower", 294*333d2b36SAndroid Build Coastguard Worker A_Common: nil, 295*333d2b36SAndroid Build Coastguard Worker A_Different: []string{"alpha", "delta"}, 296*333d2b36SAndroid Build Coastguard Worker F_Common: nil, 297*333d2b36SAndroid Build Coastguard Worker F_Different: proptools.BoolPtr(true), 298*333d2b36SAndroid Build Coastguard Worker EmbeddedPropertiesStruct: EmbeddedPropertiesStruct{ 299*333d2b36SAndroid Build Coastguard Worker S_Embedded_Common: "", 300*333d2b36SAndroid Build Coastguard Worker S_Embedded_Different: "embedded_lower", 301*333d2b36SAndroid Build Coastguard Worker }, 302*333d2b36SAndroid Build Coastguard Worker }, 303*333d2b36SAndroid Build Coastguard Worker structs[1]) 304*333d2b36SAndroid Build Coastguard Worker} 305*333d2b36SAndroid Build Coastguard Worker 306*333d2b36SAndroid Build Coastguard Workerfunc TestCommonValueOptimization_InvalidArchSpecificVariants(t *testing.T) { 307*333d2b36SAndroid Build Coastguard Worker common := &testPropertiesStruct{name: "common"} 308*333d2b36SAndroid Build Coastguard Worker structs := []propertiesContainer{ 309*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 310*333d2b36SAndroid Build Coastguard Worker name: "struct-0", 311*333d2b36SAndroid Build Coastguard Worker S_Common: "should-be-but-is-not-common0", 312*333d2b36SAndroid Build Coastguard Worker }, 313*333d2b36SAndroid Build Coastguard Worker &testPropertiesStruct{ 314*333d2b36SAndroid Build Coastguard Worker name: "struct-1", 315*333d2b36SAndroid Build Coastguard Worker S_Common: "should-be-but-is-not-common1", 316*333d2b36SAndroid Build Coastguard Worker }, 317*333d2b36SAndroid Build Coastguard Worker } 318*333d2b36SAndroid Build Coastguard Worker 319*333d2b36SAndroid Build Coastguard Worker extractor := newCommonValueExtractor(common) 320*333d2b36SAndroid Build Coastguard Worker 321*333d2b36SAndroid Build Coastguard Worker err := extractor.extractCommonProperties(common, structs) 322*333d2b36SAndroid Build Coastguard Worker android.AssertErrorMessageEquals(t, "unexpected error", `field "S_Common" is not tagged as "arch_variant" but has arch specific properties: 323*333d2b36SAndroid Build Coastguard Worker "struct-0" has value "should-be-but-is-not-common0" 324*333d2b36SAndroid Build Coastguard Worker "struct-1" has value "should-be-but-is-not-common1"`, err) 325*333d2b36SAndroid Build Coastguard Worker} 326*333d2b36SAndroid Build Coastguard Worker 327*333d2b36SAndroid Build Coastguard Worker// Ensure that sdk snapshot related environment variables work correctly. 328*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshot_EnvConfiguration(t *testing.T) { 329*333d2b36SAndroid Build Coastguard Worker bp := ` 330*333d2b36SAndroid Build Coastguard Worker sdk { 331*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 332*333d2b36SAndroid Build Coastguard Worker java_header_libs: ["myjavalib"], 333*333d2b36SAndroid Build Coastguard Worker } 334*333d2b36SAndroid Build Coastguard Worker 335*333d2b36SAndroid Build Coastguard Worker java_library { 336*333d2b36SAndroid Build Coastguard Worker name: "myjavalib", 337*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 338*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 339*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 340*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 341*333d2b36SAndroid Build Coastguard Worker host_supported: true, 342*333d2b36SAndroid Build Coastguard Worker } 343*333d2b36SAndroid Build Coastguard Worker ` 344*333d2b36SAndroid Build Coastguard Worker preparer := android.GroupFixturePreparers( 345*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 346*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(bp), 347*333d2b36SAndroid Build Coastguard Worker ) 348*333d2b36SAndroid Build Coastguard Worker 349*333d2b36SAndroid Build Coastguard Worker checkZipFile := func(t *testing.T, result *android.TestResult, expected string) { 350*333d2b36SAndroid Build Coastguard Worker zipRule := result.ModuleForTests("mysdk", "common_os").Rule("SnapshotZipFiles") 351*333d2b36SAndroid Build Coastguard Worker android.AssertStringEquals(t, "snapshot zip file", expected, zipRule.Output.String()) 352*333d2b36SAndroid Build Coastguard Worker } 353*333d2b36SAndroid Build Coastguard Worker 354*333d2b36SAndroid Build Coastguard Worker t.Run("no env variables", func(t *testing.T) { 355*333d2b36SAndroid Build Coastguard Worker result := preparer.RunTest(t) 356*333d2b36SAndroid Build Coastguard Worker 357*333d2b36SAndroid Build Coastguard Worker checkZipFile(t, result, "out/soong/.intermediates/mysdk/common_os/mysdk-current.zip") 358*333d2b36SAndroid Build Coastguard Worker 359*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 360*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 361*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 362*333d2b36SAndroid Build Coastguard Worker 363*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 364*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 365*333d2b36SAndroid Build Coastguard Worker contents: ["prebuilt_myjavalib"], 366*333d2b36SAndroid Build Coastguard Worker} 367*333d2b36SAndroid Build Coastguard Worker 368*333d2b36SAndroid Build Coastguard Workerjava_import { 369*333d2b36SAndroid Build Coastguard Worker name: "myjavalib", 370*333d2b36SAndroid Build Coastguard Worker prefer: false, 371*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 372*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 373*333d2b36SAndroid Build Coastguard Worker jars: ["java/myjavalib.jar"], 374*333d2b36SAndroid Build Coastguard Worker} 375*333d2b36SAndroid Build Coastguard Worker `), 376*333d2b36SAndroid Build Coastguard Worker ) 377*333d2b36SAndroid Build Coastguard Worker }) 378*333d2b36SAndroid Build Coastguard Worker 379*333d2b36SAndroid Build Coastguard Worker t.Run("SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE=S", func(t *testing.T) { 380*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 381*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 382*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 383*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 384*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary"), 385*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 386*333d2b36SAndroid Build Coastguard Worker sdk { 387*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 388*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 389*333d2b36SAndroid Build Coastguard Worker } 390*333d2b36SAndroid Build Coastguard Worker 391*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 392*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 393*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 394*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 395*333d2b36SAndroid Build Coastguard Worker hidden_api: { 396*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 397*333d2b36SAndroid Build Coastguard Worker }, 398*333d2b36SAndroid Build Coastguard Worker } 399*333d2b36SAndroid Build Coastguard Worker 400*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 401*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 402*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 403*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 404*333d2b36SAndroid Build Coastguard Worker sdk_version: "S", 405*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 406*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 407*333d2b36SAndroid Build Coastguard Worker } 408*333d2b36SAndroid Build Coastguard Worker `), 409*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeEnv(map[string]string{ 410*333d2b36SAndroid Build Coastguard Worker "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S", 411*333d2b36SAndroid Build Coastguard Worker }), 412*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"), 413*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 414*333d2b36SAndroid Build Coastguard Worker 415*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 416*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 417*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 418*333d2b36SAndroid Build Coastguard Worker 419*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 420*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 421*333d2b36SAndroid Build Coastguard Worker contents: ["prebuilt_mysdklibrary"], 422*333d2b36SAndroid Build Coastguard Worker} 423*333d2b36SAndroid Build Coastguard Worker 424*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 425*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 426*333d2b36SAndroid Build Coastguard Worker prefer: false, 427*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 428*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 429*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 430*333d2b36SAndroid Build Coastguard Worker hidden_api: { 431*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 432*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 433*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 434*333d2b36SAndroid Build Coastguard Worker stub_flags: "hiddenapi/stub-flags.csv", 435*333d2b36SAndroid Build Coastguard Worker all_flags: "hiddenapi/all-flags.csv", 436*333d2b36SAndroid Build Coastguard Worker }, 437*333d2b36SAndroid Build Coastguard Worker} 438*333d2b36SAndroid Build Coastguard Worker 439*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 440*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 441*333d2b36SAndroid Build Coastguard Worker prefer: false, 442*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 443*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 444*333d2b36SAndroid Build Coastguard Worker shared_library: true, 445*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 446*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 447*333d2b36SAndroid Build Coastguard Worker public: { 448*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 449*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 450*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 451*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 452*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 453*333d2b36SAndroid Build Coastguard Worker }, 454*333d2b36SAndroid Build Coastguard Worker} 455*333d2b36SAndroid Build Coastguard Worker`), 456*333d2b36SAndroid Build Coastguard Worker 457*333d2b36SAndroid Build Coastguard Worker checkAllCopyRules(` 458*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 459*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 460*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv 461*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv 462*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv 463*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 464*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 465*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 466*333d2b36SAndroid Build Coastguard Worker`), 467*333d2b36SAndroid Build Coastguard Worker ) 468*333d2b36SAndroid Build Coastguard Worker }) 469*333d2b36SAndroid Build Coastguard Worker 470*333d2b36SAndroid Build Coastguard Worker t.Run("test replacing exportable module", func(t *testing.T) { 471*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 472*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 473*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 474*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 475*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "anothersdklibrary"), 476*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 477*333d2b36SAndroid Build Coastguard Worker sdk { 478*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 479*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 480*333d2b36SAndroid Build Coastguard Worker } 481*333d2b36SAndroid Build Coastguard Worker 482*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 483*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 484*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 485*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 486*333d2b36SAndroid Build Coastguard Worker hidden_api: { 487*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 488*333d2b36SAndroid Build Coastguard Worker }, 489*333d2b36SAndroid Build Coastguard Worker core_platform_api: { 490*333d2b36SAndroid Build Coastguard Worker stub_libs: [ 491*333d2b36SAndroid Build Coastguard Worker "anothersdklibrary.stubs.exportable", 492*333d2b36SAndroid Build Coastguard Worker ], 493*333d2b36SAndroid Build Coastguard Worker }, 494*333d2b36SAndroid Build Coastguard Worker api: { 495*333d2b36SAndroid Build Coastguard Worker stub_libs: [ 496*333d2b36SAndroid Build Coastguard Worker "anothersdklibrary", 497*333d2b36SAndroid Build Coastguard Worker ], 498*333d2b36SAndroid Build Coastguard Worker }, 499*333d2b36SAndroid Build Coastguard Worker } 500*333d2b36SAndroid Build Coastguard Worker 501*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 502*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 503*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 504*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 505*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "S", 506*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 507*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 508*333d2b36SAndroid Build Coastguard Worker } 509*333d2b36SAndroid Build Coastguard Worker 510*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 511*333d2b36SAndroid Build Coastguard Worker name: "anothersdklibrary", 512*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 513*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 514*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "S", 515*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 516*333d2b36SAndroid Build Coastguard Worker system: {enabled: true}, 517*333d2b36SAndroid Build Coastguard Worker module_lib: {enabled: true}, 518*333d2b36SAndroid Build Coastguard Worker } 519*333d2b36SAndroid Build Coastguard Worker `), 520*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeEnv(map[string]string{ 521*333d2b36SAndroid Build Coastguard Worker "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S", 522*333d2b36SAndroid Build Coastguard Worker }), 523*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 524*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"UpsideDownCake", "Tiramisu", "S-V2"} 525*333d2b36SAndroid Build Coastguard Worker }), 526*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"), 527*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 528*333d2b36SAndroid Build Coastguard Worker 529*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 530*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 531*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 532*333d2b36SAndroid Build Coastguard Worker 533*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 534*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 535*333d2b36SAndroid Build Coastguard Worker prefer: false, 536*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 537*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 538*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 539*333d2b36SAndroid Build Coastguard Worker api: { 540*333d2b36SAndroid Build Coastguard Worker stub_libs: ["anothersdklibrary"], 541*333d2b36SAndroid Build Coastguard Worker }, 542*333d2b36SAndroid Build Coastguard Worker core_platform_api: { 543*333d2b36SAndroid Build Coastguard Worker stub_libs: ["anothersdklibrary.stubs"], 544*333d2b36SAndroid Build Coastguard Worker }, 545*333d2b36SAndroid Build Coastguard Worker hidden_api: { 546*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 547*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 548*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 549*333d2b36SAndroid Build Coastguard Worker stub_flags: "hiddenapi/stub-flags.csv", 550*333d2b36SAndroid Build Coastguard Worker all_flags: "hiddenapi/all-flags.csv", 551*333d2b36SAndroid Build Coastguard Worker }, 552*333d2b36SAndroid Build Coastguard Worker} 553*333d2b36SAndroid Build Coastguard Worker 554*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 555*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 556*333d2b36SAndroid Build Coastguard Worker prefer: false, 557*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 558*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 559*333d2b36SAndroid Build Coastguard Worker shared_library: true, 560*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 561*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 562*333d2b36SAndroid Build Coastguard Worker public: { 563*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 564*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 565*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 566*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 567*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 568*333d2b36SAndroid Build Coastguard Worker }, 569*333d2b36SAndroid Build Coastguard Worker} 570*333d2b36SAndroid Build Coastguard Worker 571*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 572*333d2b36SAndroid Build Coastguard Worker name: "anothersdklibrary", 573*333d2b36SAndroid Build Coastguard Worker prefer: false, 574*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 575*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 576*333d2b36SAndroid Build Coastguard Worker shared_library: true, 577*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 578*333d2b36SAndroid Build Coastguard Worker public: { 579*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/anothersdklibrary-stubs.jar"], 580*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/anothersdklibrary_stub_sources"], 581*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/anothersdklibrary.txt", 582*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/anothersdklibrary-removed.txt", 583*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 584*333d2b36SAndroid Build Coastguard Worker }, 585*333d2b36SAndroid Build Coastguard Worker system: { 586*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/system/anothersdklibrary-stubs.jar"], 587*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/system/anothersdklibrary_stub_sources"], 588*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/system/anothersdklibrary.txt", 589*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/system/anothersdklibrary-removed.txt", 590*333d2b36SAndroid Build Coastguard Worker sdk_version: "system_current", 591*333d2b36SAndroid Build Coastguard Worker }, 592*333d2b36SAndroid Build Coastguard Worker module_lib: { 593*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/module-lib/anothersdklibrary-stubs.jar"], 594*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/module-lib/anothersdklibrary_stub_sources"], 595*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/module-lib/anothersdklibrary.txt", 596*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/module-lib/anothersdklibrary-removed.txt", 597*333d2b36SAndroid Build Coastguard Worker sdk_version: "module_current", 598*333d2b36SAndroid Build Coastguard Worker }, 599*333d2b36SAndroid Build Coastguard Worker} 600*333d2b36SAndroid Build Coastguard Worker`), 601*333d2b36SAndroid Build Coastguard Worker ) 602*333d2b36SAndroid Build Coastguard Worker }) 603*333d2b36SAndroid Build Coastguard Worker 604*333d2b36SAndroid Build Coastguard Worker} 605