1*333d2b36SAndroid Build Coastguard Worker// Copyright 2024 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 apex 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/aconfig/codegen" 21*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 22*333d2b36SAndroid Build Coastguard Worker "android/soong/cc" 23*333d2b36SAndroid Build Coastguard Worker "android/soong/genrule" 24*333d2b36SAndroid Build Coastguard Worker "android/soong/java" 25*333d2b36SAndroid Build Coastguard Worker "android/soong/rust" 26*333d2b36SAndroid Build Coastguard Worker 27*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint/proptools" 28*333d2b36SAndroid Build Coastguard Worker) 29*333d2b36SAndroid Build Coastguard Worker 30*333d2b36SAndroid Build Coastguard Workervar withAconfigValidationError = android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 31*333d2b36SAndroid Build Coastguard Worker variables.AconfigContainerValidation = "error" 32*333d2b36SAndroid Build Coastguard Worker variables.BuildId = proptools.StringPtr("TEST.BUILD_ID") 33*333d2b36SAndroid Build Coastguard Worker}) 34*333d2b36SAndroid Build Coastguard Worker 35*333d2b36SAndroid Build Coastguard Workerfunc TestValidationAcrossContainersExportedPass(t *testing.T) { 36*333d2b36SAndroid Build Coastguard Worker t.Parallel() 37*333d2b36SAndroid Build Coastguard Worker testCases := []struct { 38*333d2b36SAndroid Build Coastguard Worker name string 39*333d2b36SAndroid Build Coastguard Worker bp string 40*333d2b36SAndroid Build Coastguard Worker }{ 41*333d2b36SAndroid Build Coastguard Worker { 42*333d2b36SAndroid Build Coastguard Worker name: "Java lib passes for exported containers cross", 43*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 44*333d2b36SAndroid Build Coastguard Worker apex { 45*333d2b36SAndroid Build Coastguard Worker name: "myapex", 46*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 47*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 48*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 49*333d2b36SAndroid Build Coastguard Worker java_libs: [ 50*333d2b36SAndroid Build Coastguard Worker "my_java_library_foo", 51*333d2b36SAndroid Build Coastguard Worker ], 52*333d2b36SAndroid Build Coastguard Worker updatable: false, 53*333d2b36SAndroid Build Coastguard Worker } 54*333d2b36SAndroid Build Coastguard Worker java_library { 55*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_foo", 56*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 57*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 58*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 59*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_aconfig_library_foo"], 60*333d2b36SAndroid Build Coastguard Worker apex_available: [ 61*333d2b36SAndroid Build Coastguard Worker "myapex", 62*333d2b36SAndroid Build Coastguard Worker ], 63*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 64*333d2b36SAndroid Build Coastguard Worker } 65*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 66*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 67*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 68*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 69*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 70*333d2b36SAndroid Build Coastguard Worker exportable: true, 71*333d2b36SAndroid Build Coastguard Worker } 72*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 73*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_foo", 74*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 75*333d2b36SAndroid Build Coastguard Worker mode: "exported", 76*333d2b36SAndroid Build Coastguard Worker apex_available: [ 77*333d2b36SAndroid Build Coastguard Worker "myapex", 78*333d2b36SAndroid Build Coastguard Worker ], 79*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 80*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 81*333d2b36SAndroid Build Coastguard Worker }`, 82*333d2b36SAndroid Build Coastguard Worker }, 83*333d2b36SAndroid Build Coastguard Worker { 84*333d2b36SAndroid Build Coastguard Worker name: "Android app passes for exported containers cross", 85*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 86*333d2b36SAndroid Build Coastguard Worker apex { 87*333d2b36SAndroid Build Coastguard Worker name: "myapex", 88*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 89*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 90*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 91*333d2b36SAndroid Build Coastguard Worker apps: [ 92*333d2b36SAndroid Build Coastguard Worker "my_android_app_foo", 93*333d2b36SAndroid Build Coastguard Worker ], 94*333d2b36SAndroid Build Coastguard Worker updatable: false, 95*333d2b36SAndroid Build Coastguard Worker } 96*333d2b36SAndroid Build Coastguard Worker android_app { 97*333d2b36SAndroid Build Coastguard Worker name: "my_android_app_foo", 98*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/MyClass.java"], 99*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 100*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 101*333d2b36SAndroid Build Coastguard Worker stl: "none", 102*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_library_bar"], 103*333d2b36SAndroid Build Coastguard Worker apex_available: [ "myapex" ], 104*333d2b36SAndroid Build Coastguard Worker } 105*333d2b36SAndroid Build Coastguard Worker java_library { 106*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_bar", 107*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 108*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 109*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 110*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_aconfig_library_bar"], 111*333d2b36SAndroid Build Coastguard Worker apex_available: [ 112*333d2b36SAndroid Build Coastguard Worker "myapex", 113*333d2b36SAndroid Build Coastguard Worker ], 114*333d2b36SAndroid Build Coastguard Worker } 115*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 116*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_bar", 117*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 118*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 119*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 120*333d2b36SAndroid Build Coastguard Worker exportable: true, 121*333d2b36SAndroid Build Coastguard Worker } 122*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 123*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_bar", 124*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_bar", 125*333d2b36SAndroid Build Coastguard Worker mode: "exported", 126*333d2b36SAndroid Build Coastguard Worker apex_available: [ 127*333d2b36SAndroid Build Coastguard Worker "myapex", 128*333d2b36SAndroid Build Coastguard Worker ], 129*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 130*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 131*333d2b36SAndroid Build Coastguard Worker }`, 132*333d2b36SAndroid Build Coastguard Worker }, 133*333d2b36SAndroid Build Coastguard Worker { 134*333d2b36SAndroid Build Coastguard Worker name: "Cc lib passes for exported containers cross", 135*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 136*333d2b36SAndroid Build Coastguard Worker apex { 137*333d2b36SAndroid Build Coastguard Worker name: "myapex", 138*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 139*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 140*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 141*333d2b36SAndroid Build Coastguard Worker native_shared_libs: [ 142*333d2b36SAndroid Build Coastguard Worker "my_cc_library_bar", 143*333d2b36SAndroid Build Coastguard Worker ], 144*333d2b36SAndroid Build Coastguard Worker binaries: [ 145*333d2b36SAndroid Build Coastguard Worker "my_cc_binary_baz", 146*333d2b36SAndroid Build Coastguard Worker ], 147*333d2b36SAndroid Build Coastguard Worker updatable: false, 148*333d2b36SAndroid Build Coastguard Worker } 149*333d2b36SAndroid Build Coastguard Worker cc_library { 150*333d2b36SAndroid Build Coastguard Worker name: "my_cc_library_bar", 151*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.cc"], 152*333d2b36SAndroid Build Coastguard Worker static_libs: [ 153*333d2b36SAndroid Build Coastguard Worker "my_cc_aconfig_library_bar", 154*333d2b36SAndroid Build Coastguard Worker "my_cc_aconfig_library_baz", 155*333d2b36SAndroid Build Coastguard Worker ], 156*333d2b36SAndroid Build Coastguard Worker apex_available: [ 157*333d2b36SAndroid Build Coastguard Worker "myapex", 158*333d2b36SAndroid Build Coastguard Worker ], 159*333d2b36SAndroid Build Coastguard Worker } 160*333d2b36SAndroid Build Coastguard Worker cc_binary { 161*333d2b36SAndroid Build Coastguard Worker name: "my_cc_binary_baz", 162*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.cc"], 163*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_cc_aconfig_library_baz"], 164*333d2b36SAndroid Build Coastguard Worker apex_available: [ 165*333d2b36SAndroid Build Coastguard Worker "myapex", 166*333d2b36SAndroid Build Coastguard Worker ], 167*333d2b36SAndroid Build Coastguard Worker } 168*333d2b36SAndroid Build Coastguard Worker cc_library { 169*333d2b36SAndroid Build Coastguard Worker name: "server_configurable_flags", 170*333d2b36SAndroid Build Coastguard Worker srcs: ["server_configurable_flags.cc"], 171*333d2b36SAndroid Build Coastguard Worker } 172*333d2b36SAndroid Build Coastguard Worker cc_library { 173*333d2b36SAndroid Build Coastguard Worker name: "libbase", 174*333d2b36SAndroid Build Coastguard Worker srcs: ["libbase.cc"], 175*333d2b36SAndroid Build Coastguard Worker apex_available: [ 176*333d2b36SAndroid Build Coastguard Worker "myapex", 177*333d2b36SAndroid Build Coastguard Worker ], 178*333d2b36SAndroid Build Coastguard Worker } 179*333d2b36SAndroid Build Coastguard Worker cc_library { 180*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api_cc", 181*333d2b36SAndroid Build Coastguard Worker srcs: ["libaconfig_storage_read_api_cc.cc"], 182*333d2b36SAndroid Build Coastguard Worker } 183*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 184*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_bar", 185*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 186*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 187*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 188*333d2b36SAndroid Build Coastguard Worker exportable: true, 189*333d2b36SAndroid Build Coastguard Worker } 190*333d2b36SAndroid Build Coastguard Worker cc_aconfig_library { 191*333d2b36SAndroid Build Coastguard Worker name: "my_cc_aconfig_library_bar", 192*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_bar", 193*333d2b36SAndroid Build Coastguard Worker apex_available: [ 194*333d2b36SAndroid Build Coastguard Worker "myapex", 195*333d2b36SAndroid Build Coastguard Worker ], 196*333d2b36SAndroid Build Coastguard Worker mode: "exported", 197*333d2b36SAndroid Build Coastguard Worker } 198*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 199*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_baz", 200*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 201*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 202*333d2b36SAndroid Build Coastguard Worker srcs: ["baz.aconfig"], 203*333d2b36SAndroid Build Coastguard Worker exportable: true, 204*333d2b36SAndroid Build Coastguard Worker } 205*333d2b36SAndroid Build Coastguard Worker cc_aconfig_library { 206*333d2b36SAndroid Build Coastguard Worker name: "my_cc_aconfig_library_baz", 207*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_baz", 208*333d2b36SAndroid Build Coastguard Worker apex_available: [ 209*333d2b36SAndroid Build Coastguard Worker "myapex", 210*333d2b36SAndroid Build Coastguard Worker ], 211*333d2b36SAndroid Build Coastguard Worker mode: "exported", 212*333d2b36SAndroid Build Coastguard Worker }`, 213*333d2b36SAndroid Build Coastguard Worker }, 214*333d2b36SAndroid Build Coastguard Worker { 215*333d2b36SAndroid Build Coastguard Worker name: "Rust lib passes for exported containers cross", 216*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 217*333d2b36SAndroid Build Coastguard Worker apex { 218*333d2b36SAndroid Build Coastguard Worker name: "myapex", 219*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 220*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 221*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 222*333d2b36SAndroid Build Coastguard Worker native_shared_libs: ["libmy_rust_library"], 223*333d2b36SAndroid Build Coastguard Worker binaries: ["my_rust_binary"], 224*333d2b36SAndroid Build Coastguard Worker updatable: false, 225*333d2b36SAndroid Build Coastguard Worker } 226*333d2b36SAndroid Build Coastguard Worker rust_library { 227*333d2b36SAndroid Build Coastguard Worker name: "libflags_rust", // test mock 228*333d2b36SAndroid Build Coastguard Worker crate_name: "flags_rust", 229*333d2b36SAndroid Build Coastguard Worker srcs: ["lib.rs"], 230*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 231*333d2b36SAndroid Build Coastguard Worker } 232*333d2b36SAndroid Build Coastguard Worker rust_library { 233*333d2b36SAndroid Build Coastguard Worker name: "liblazy_static", // test mock 234*333d2b36SAndroid Build Coastguard Worker crate_name: "lazy_static", 235*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 236*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 237*333d2b36SAndroid Build Coastguard Worker } 238*333d2b36SAndroid Build Coastguard Worker rust_library { 239*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api", // test mock 240*333d2b36SAndroid Build Coastguard Worker crate_name: "aconfig_storage_read_api", 241*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 242*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 243*333d2b36SAndroid Build Coastguard Worker } 244*333d2b36SAndroid Build Coastguard Worker rust_library { 245*333d2b36SAndroid Build Coastguard Worker name: "liblogger", // test mock 246*333d2b36SAndroid Build Coastguard Worker crate_name: "logger", 247*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 248*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 249*333d2b36SAndroid Build Coastguard Worker } 250*333d2b36SAndroid Build Coastguard Worker rust_library { 251*333d2b36SAndroid Build Coastguard Worker name: "liblog_rust", // test mock 252*333d2b36SAndroid Build Coastguard Worker crate_name: "log_rust", 253*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 254*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 255*333d2b36SAndroid Build Coastguard Worker } 256*333d2b36SAndroid Build Coastguard Worker rust_ffi_shared { 257*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_library", 258*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 259*333d2b36SAndroid Build Coastguard Worker rustlibs: ["libmy_rust_aconfig_library_foo"], 260*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_library", 261*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 262*333d2b36SAndroid Build Coastguard Worker } 263*333d2b36SAndroid Build Coastguard Worker rust_binary { 264*333d2b36SAndroid Build Coastguard Worker name: "my_rust_binary", 265*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.rs"], 266*333d2b36SAndroid Build Coastguard Worker rustlibs: ["libmy_rust_aconfig_library_bar"], 267*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 268*333d2b36SAndroid Build Coastguard Worker } 269*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 270*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 271*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 272*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 273*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 274*333d2b36SAndroid Build Coastguard Worker } 275*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 276*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_bar", 277*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 278*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 279*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 280*333d2b36SAndroid Build Coastguard Worker } 281*333d2b36SAndroid Build Coastguard Worker rust_aconfig_library { 282*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_aconfig_library_foo", 283*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 284*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_aconfig_library_foo", 285*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 286*333d2b36SAndroid Build Coastguard Worker mode: "exported", 287*333d2b36SAndroid Build Coastguard Worker } 288*333d2b36SAndroid Build Coastguard Worker rust_aconfig_library { 289*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_aconfig_library_bar", 290*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_bar", 291*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_aconfig_library_bar", 292*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 293*333d2b36SAndroid Build Coastguard Worker mode: "exported", 294*333d2b36SAndroid Build Coastguard Worker }`, 295*333d2b36SAndroid Build Coastguard Worker }, 296*333d2b36SAndroid Build Coastguard Worker } 297*333d2b36SAndroid Build Coastguard Worker for _, test := range testCases { 298*333d2b36SAndroid Build Coastguard Worker t.Run(test.name, func(t *testing.T) { 299*333d2b36SAndroid Build Coastguard Worker t.Parallel() 300*333d2b36SAndroid Build Coastguard Worker android.GroupFixturePreparers( 301*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 302*333d2b36SAndroid Build Coastguard Worker cc.PrepareForTestWithCcBuildComponents, 303*333d2b36SAndroid Build Coastguard Worker rust.PrepareForTestWithRustDefaultModules, 304*333d2b36SAndroid Build Coastguard Worker codegen.PrepareForTestWithAconfigBuildComponents, 305*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithApexBuildComponents, 306*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMyapex, 307*333d2b36SAndroid Build Coastguard Worker withAconfigValidationError, 308*333d2b36SAndroid Build Coastguard Worker ). 309*333d2b36SAndroid Build Coastguard Worker RunTestWithBp(t, test.bp) 310*333d2b36SAndroid Build Coastguard Worker }) 311*333d2b36SAndroid Build Coastguard Worker } 312*333d2b36SAndroid Build Coastguard Worker} 313*333d2b36SAndroid Build Coastguard Worker 314*333d2b36SAndroid Build Coastguard Workerfunc TestValidationAcrossContainersNotExportedFail(t *testing.T) { 315*333d2b36SAndroid Build Coastguard Worker t.Parallel() 316*333d2b36SAndroid Build Coastguard Worker testCases := []struct { 317*333d2b36SAndroid Build Coastguard Worker name string 318*333d2b36SAndroid Build Coastguard Worker expectedError string 319*333d2b36SAndroid Build Coastguard Worker bp string 320*333d2b36SAndroid Build Coastguard Worker }{ 321*333d2b36SAndroid Build Coastguard Worker { 322*333d2b36SAndroid Build Coastguard Worker name: "Java lib fails for non-exported containers cross", 323*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 324*333d2b36SAndroid Build Coastguard Worker apex { 325*333d2b36SAndroid Build Coastguard Worker name: "myapex", 326*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 327*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 328*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 329*333d2b36SAndroid Build Coastguard Worker java_libs: [ 330*333d2b36SAndroid Build Coastguard Worker "my_java_library_foo", 331*333d2b36SAndroid Build Coastguard Worker ], 332*333d2b36SAndroid Build Coastguard Worker updatable: false, 333*333d2b36SAndroid Build Coastguard Worker } 334*333d2b36SAndroid Build Coastguard Worker java_library { 335*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_foo", 336*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 337*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 338*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 339*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_aconfig_library_foo"], 340*333d2b36SAndroid Build Coastguard Worker apex_available: [ 341*333d2b36SAndroid Build Coastguard Worker "myapex", 342*333d2b36SAndroid Build Coastguard Worker ], 343*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 344*333d2b36SAndroid Build Coastguard Worker } 345*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 346*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 347*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 348*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 349*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 350*333d2b36SAndroid Build Coastguard Worker } 351*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 352*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_foo", 353*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 354*333d2b36SAndroid Build Coastguard Worker apex_available: [ 355*333d2b36SAndroid Build Coastguard Worker "myapex", 356*333d2b36SAndroid Build Coastguard Worker ], 357*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 358*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 359*333d2b36SAndroid Build Coastguard Worker }`, 360*333d2b36SAndroid Build Coastguard Worker expectedError: `.*my_java_library_foo/myapex depends on my_java_aconfig_library_foo/otherapex/production across containers`, 361*333d2b36SAndroid Build Coastguard Worker }, 362*333d2b36SAndroid Build Coastguard Worker { 363*333d2b36SAndroid Build Coastguard Worker name: "Android app fails for non-exported containers cross", 364*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 365*333d2b36SAndroid Build Coastguard Worker apex { 366*333d2b36SAndroid Build Coastguard Worker name: "myapex", 367*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 368*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 369*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 370*333d2b36SAndroid Build Coastguard Worker apps: [ 371*333d2b36SAndroid Build Coastguard Worker "my_android_app_foo", 372*333d2b36SAndroid Build Coastguard Worker ], 373*333d2b36SAndroid Build Coastguard Worker updatable: false, 374*333d2b36SAndroid Build Coastguard Worker } 375*333d2b36SAndroid Build Coastguard Worker android_app { 376*333d2b36SAndroid Build Coastguard Worker name: "my_android_app_foo", 377*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/MyClass.java"], 378*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 379*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 380*333d2b36SAndroid Build Coastguard Worker stl: "none", 381*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_library_foo"], 382*333d2b36SAndroid Build Coastguard Worker apex_available: [ "myapex" ], 383*333d2b36SAndroid Build Coastguard Worker } 384*333d2b36SAndroid Build Coastguard Worker java_library { 385*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_foo", 386*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 387*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 388*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 389*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_aconfig_library_foo"], 390*333d2b36SAndroid Build Coastguard Worker apex_available: [ 391*333d2b36SAndroid Build Coastguard Worker "myapex", 392*333d2b36SAndroid Build Coastguard Worker ], 393*333d2b36SAndroid Build Coastguard Worker } 394*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 395*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 396*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 397*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 398*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 399*333d2b36SAndroid Build Coastguard Worker } 400*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 401*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_foo", 402*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 403*333d2b36SAndroid Build Coastguard Worker apex_available: [ 404*333d2b36SAndroid Build Coastguard Worker "myapex", 405*333d2b36SAndroid Build Coastguard Worker ], 406*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 407*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 408*333d2b36SAndroid Build Coastguard Worker }`, 409*333d2b36SAndroid Build Coastguard Worker expectedError: `.*my_android_app_foo/myapex depends on my_java_aconfig_library_foo/otherapex/production across containers`, 410*333d2b36SAndroid Build Coastguard Worker }, 411*333d2b36SAndroid Build Coastguard Worker { 412*333d2b36SAndroid Build Coastguard Worker name: "Cc lib fails for non-exported containers cross", 413*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 414*333d2b36SAndroid Build Coastguard Worker apex { 415*333d2b36SAndroid Build Coastguard Worker name: "myapex", 416*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 417*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 418*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 419*333d2b36SAndroid Build Coastguard Worker native_shared_libs: [ 420*333d2b36SAndroid Build Coastguard Worker "my_cc_library_foo", 421*333d2b36SAndroid Build Coastguard Worker ], 422*333d2b36SAndroid Build Coastguard Worker updatable: false, 423*333d2b36SAndroid Build Coastguard Worker } 424*333d2b36SAndroid Build Coastguard Worker cc_library { 425*333d2b36SAndroid Build Coastguard Worker name: "my_cc_library_foo", 426*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.cc"], 427*333d2b36SAndroid Build Coastguard Worker shared_libs: [ 428*333d2b36SAndroid Build Coastguard Worker "my_cc_aconfig_library_foo", 429*333d2b36SAndroid Build Coastguard Worker ], 430*333d2b36SAndroid Build Coastguard Worker apex_available: [ 431*333d2b36SAndroid Build Coastguard Worker "myapex", 432*333d2b36SAndroid Build Coastguard Worker ], 433*333d2b36SAndroid Build Coastguard Worker } 434*333d2b36SAndroid Build Coastguard Worker cc_library { 435*333d2b36SAndroid Build Coastguard Worker name: "server_configurable_flags", 436*333d2b36SAndroid Build Coastguard Worker srcs: ["server_configurable_flags.cc"], 437*333d2b36SAndroid Build Coastguard Worker } 438*333d2b36SAndroid Build Coastguard Worker cc_library { 439*333d2b36SAndroid Build Coastguard Worker name: "libbase", 440*333d2b36SAndroid Build Coastguard Worker srcs: ["libbase.cc"], 441*333d2b36SAndroid Build Coastguard Worker apex_available: [ 442*333d2b36SAndroid Build Coastguard Worker "myapex", 443*333d2b36SAndroid Build Coastguard Worker ], 444*333d2b36SAndroid Build Coastguard Worker } 445*333d2b36SAndroid Build Coastguard Worker cc_library { 446*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api_cc", 447*333d2b36SAndroid Build Coastguard Worker srcs: ["libaconfig_storage_read_api_cc.cc"], 448*333d2b36SAndroid Build Coastguard Worker } 449*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 450*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 451*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 452*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 453*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 454*333d2b36SAndroid Build Coastguard Worker } 455*333d2b36SAndroid Build Coastguard Worker cc_aconfig_library { 456*333d2b36SAndroid Build Coastguard Worker name: "my_cc_aconfig_library_foo", 457*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 458*333d2b36SAndroid Build Coastguard Worker apex_available: [ 459*333d2b36SAndroid Build Coastguard Worker "myapex", 460*333d2b36SAndroid Build Coastguard Worker ], 461*333d2b36SAndroid Build Coastguard Worker }`, 462*333d2b36SAndroid Build Coastguard Worker expectedError: `.*my_cc_library_foo/myapex depends on my_cc_aconfig_library_foo/otherapex/production across containers`, 463*333d2b36SAndroid Build Coastguard Worker }, 464*333d2b36SAndroid Build Coastguard Worker { 465*333d2b36SAndroid Build Coastguard Worker name: "Cc binary fails for non-exported containers cross", 466*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 467*333d2b36SAndroid Build Coastguard Worker apex { 468*333d2b36SAndroid Build Coastguard Worker name: "myapex", 469*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 470*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 471*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 472*333d2b36SAndroid Build Coastguard Worker binaries: [ 473*333d2b36SAndroid Build Coastguard Worker "my_cc_binary_foo", 474*333d2b36SAndroid Build Coastguard Worker ], 475*333d2b36SAndroid Build Coastguard Worker updatable: false, 476*333d2b36SAndroid Build Coastguard Worker } 477*333d2b36SAndroid Build Coastguard Worker cc_library { 478*333d2b36SAndroid Build Coastguard Worker name: "my_cc_library_foo", 479*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.cc"], 480*333d2b36SAndroid Build Coastguard Worker static_libs: [ 481*333d2b36SAndroid Build Coastguard Worker "my_cc_aconfig_library_foo", 482*333d2b36SAndroid Build Coastguard Worker ], 483*333d2b36SAndroid Build Coastguard Worker apex_available: [ 484*333d2b36SAndroid Build Coastguard Worker "myapex", 485*333d2b36SAndroid Build Coastguard Worker ], 486*333d2b36SAndroid Build Coastguard Worker } 487*333d2b36SAndroid Build Coastguard Worker cc_binary { 488*333d2b36SAndroid Build Coastguard Worker name: "my_cc_binary_foo", 489*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.cc"], 490*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_cc_library_foo"], 491*333d2b36SAndroid Build Coastguard Worker apex_available: [ 492*333d2b36SAndroid Build Coastguard Worker "myapex", 493*333d2b36SAndroid Build Coastguard Worker ], 494*333d2b36SAndroid Build Coastguard Worker } 495*333d2b36SAndroid Build Coastguard Worker cc_library { 496*333d2b36SAndroid Build Coastguard Worker name: "server_configurable_flags", 497*333d2b36SAndroid Build Coastguard Worker srcs: ["server_configurable_flags.cc"], 498*333d2b36SAndroid Build Coastguard Worker } 499*333d2b36SAndroid Build Coastguard Worker cc_library { 500*333d2b36SAndroid Build Coastguard Worker name: "libbase", 501*333d2b36SAndroid Build Coastguard Worker srcs: ["libbase.cc"], 502*333d2b36SAndroid Build Coastguard Worker apex_available: [ 503*333d2b36SAndroid Build Coastguard Worker "myapex", 504*333d2b36SAndroid Build Coastguard Worker ], 505*333d2b36SAndroid Build Coastguard Worker } 506*333d2b36SAndroid Build Coastguard Worker cc_library { 507*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api_cc", 508*333d2b36SAndroid Build Coastguard Worker srcs: ["libaconfig_storage_read_api_cc.cc"], 509*333d2b36SAndroid Build Coastguard Worker } 510*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 511*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 512*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 513*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 514*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 515*333d2b36SAndroid Build Coastguard Worker } 516*333d2b36SAndroid Build Coastguard Worker cc_aconfig_library { 517*333d2b36SAndroid Build Coastguard Worker name: "my_cc_aconfig_library_foo", 518*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 519*333d2b36SAndroid Build Coastguard Worker apex_available: [ 520*333d2b36SAndroid Build Coastguard Worker "myapex", 521*333d2b36SAndroid Build Coastguard Worker ], 522*333d2b36SAndroid Build Coastguard Worker }`, 523*333d2b36SAndroid Build Coastguard Worker expectedError: `.*my_cc_binary_foo/myapex depends on my_cc_aconfig_library_foo/otherapex/production across containers`, 524*333d2b36SAndroid Build Coastguard Worker }, 525*333d2b36SAndroid Build Coastguard Worker { 526*333d2b36SAndroid Build Coastguard Worker name: "Rust lib fails for non-exported containers cross", 527*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 528*333d2b36SAndroid Build Coastguard Worker apex { 529*333d2b36SAndroid Build Coastguard Worker name: "myapex", 530*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 531*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 532*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 533*333d2b36SAndroid Build Coastguard Worker native_shared_libs: ["libmy_rust_library"], 534*333d2b36SAndroid Build Coastguard Worker updatable: false, 535*333d2b36SAndroid Build Coastguard Worker } 536*333d2b36SAndroid Build Coastguard Worker rust_library { 537*333d2b36SAndroid Build Coastguard Worker name: "libflags_rust", // test mock 538*333d2b36SAndroid Build Coastguard Worker crate_name: "flags_rust", 539*333d2b36SAndroid Build Coastguard Worker srcs: ["lib.rs"], 540*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 541*333d2b36SAndroid Build Coastguard Worker } 542*333d2b36SAndroid Build Coastguard Worker rust_library { 543*333d2b36SAndroid Build Coastguard Worker name: "liblazy_static", // test mock 544*333d2b36SAndroid Build Coastguard Worker crate_name: "lazy_static", 545*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 546*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 547*333d2b36SAndroid Build Coastguard Worker } 548*333d2b36SAndroid Build Coastguard Worker rust_library { 549*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api", // test mock 550*333d2b36SAndroid Build Coastguard Worker crate_name: "aconfig_storage_read_api", 551*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 552*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 553*333d2b36SAndroid Build Coastguard Worker } 554*333d2b36SAndroid Build Coastguard Worker rust_library { 555*333d2b36SAndroid Build Coastguard Worker name: "liblogger", // test mock 556*333d2b36SAndroid Build Coastguard Worker crate_name: "logger", 557*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 558*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 559*333d2b36SAndroid Build Coastguard Worker } 560*333d2b36SAndroid Build Coastguard Worker rust_library { 561*333d2b36SAndroid Build Coastguard Worker name: "liblog_rust", // test mock 562*333d2b36SAndroid Build Coastguard Worker crate_name: "log_rust", 563*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 564*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 565*333d2b36SAndroid Build Coastguard Worker } 566*333d2b36SAndroid Build Coastguard Worker rust_ffi_shared { 567*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_library", 568*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 569*333d2b36SAndroid Build Coastguard Worker rustlibs: ["libmy_rust_aconfig_library_foo"], 570*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_library", 571*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 572*333d2b36SAndroid Build Coastguard Worker } 573*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 574*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 575*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 576*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 577*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 578*333d2b36SAndroid Build Coastguard Worker } 579*333d2b36SAndroid Build Coastguard Worker rust_aconfig_library { 580*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_aconfig_library_foo", 581*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 582*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_aconfig_library_foo", 583*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 584*333d2b36SAndroid Build Coastguard Worker }`, 585*333d2b36SAndroid Build Coastguard Worker expectedError: `.*libmy_rust_aconfig_library_foo/myapex depends on libmy_rust_aconfig_library_foo/otherapex/production across containers`, 586*333d2b36SAndroid Build Coastguard Worker }, 587*333d2b36SAndroid Build Coastguard Worker { 588*333d2b36SAndroid Build Coastguard Worker name: "Rust binary fails for non-exported containers cross", 589*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 590*333d2b36SAndroid Build Coastguard Worker apex { 591*333d2b36SAndroid Build Coastguard Worker name: "myapex", 592*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 593*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 594*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 595*333d2b36SAndroid Build Coastguard Worker binaries: ["my_rust_binary"], 596*333d2b36SAndroid Build Coastguard Worker updatable: false, 597*333d2b36SAndroid Build Coastguard Worker } 598*333d2b36SAndroid Build Coastguard Worker rust_library { 599*333d2b36SAndroid Build Coastguard Worker name: "libflags_rust", // test mock 600*333d2b36SAndroid Build Coastguard Worker crate_name: "flags_rust", 601*333d2b36SAndroid Build Coastguard Worker srcs: ["lib.rs"], 602*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 603*333d2b36SAndroid Build Coastguard Worker } 604*333d2b36SAndroid Build Coastguard Worker rust_library { 605*333d2b36SAndroid Build Coastguard Worker name: "liblazy_static", // test mock 606*333d2b36SAndroid Build Coastguard Worker crate_name: "lazy_static", 607*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 608*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 609*333d2b36SAndroid Build Coastguard Worker } 610*333d2b36SAndroid Build Coastguard Worker rust_library { 611*333d2b36SAndroid Build Coastguard Worker name: "libaconfig_storage_read_api", // test mock 612*333d2b36SAndroid Build Coastguard Worker crate_name: "aconfig_storage_read_api", 613*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 614*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 615*333d2b36SAndroid Build Coastguard Worker } 616*333d2b36SAndroid Build Coastguard Worker rust_library { 617*333d2b36SAndroid Build Coastguard Worker name: "liblogger", // test mock 618*333d2b36SAndroid Build Coastguard Worker crate_name: "logger", 619*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 620*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 621*333d2b36SAndroid Build Coastguard Worker } 622*333d2b36SAndroid Build Coastguard Worker rust_library { 623*333d2b36SAndroid Build Coastguard Worker name: "liblog_rust", // test mock 624*333d2b36SAndroid Build Coastguard Worker crate_name: "log_rust", 625*333d2b36SAndroid Build Coastguard Worker srcs: ["src/lib.rs"], 626*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 627*333d2b36SAndroid Build Coastguard Worker } 628*333d2b36SAndroid Build Coastguard Worker rust_binary { 629*333d2b36SAndroid Build Coastguard Worker name: "my_rust_binary", 630*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.rs"], 631*333d2b36SAndroid Build Coastguard Worker rustlibs: ["libmy_rust_aconfig_library_bar"], 632*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 633*333d2b36SAndroid Build Coastguard Worker } 634*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 635*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_bar", 636*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 637*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 638*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 639*333d2b36SAndroid Build Coastguard Worker } 640*333d2b36SAndroid Build Coastguard Worker rust_aconfig_library { 641*333d2b36SAndroid Build Coastguard Worker name: "libmy_rust_aconfig_library_bar", 642*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_bar", 643*333d2b36SAndroid Build Coastguard Worker crate_name: "my_rust_aconfig_library_bar", 644*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 645*333d2b36SAndroid Build Coastguard Worker }`, 646*333d2b36SAndroid Build Coastguard Worker expectedError: `.*libmy_rust_aconfig_library_bar/myapex depends on libmy_rust_aconfig_library_bar/otherapex/production across containers`, 647*333d2b36SAndroid Build Coastguard Worker }, 648*333d2b36SAndroid Build Coastguard Worker { 649*333d2b36SAndroid Build Coastguard Worker name: "Aconfig validation propagate along sourceOrOutputDependencyTag", 650*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 651*333d2b36SAndroid Build Coastguard Worker apex { 652*333d2b36SAndroid Build Coastguard Worker name: "myapex", 653*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 654*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 655*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 656*333d2b36SAndroid Build Coastguard Worker apps: [ 657*333d2b36SAndroid Build Coastguard Worker "my_android_app_foo", 658*333d2b36SAndroid Build Coastguard Worker ], 659*333d2b36SAndroid Build Coastguard Worker updatable: false, 660*333d2b36SAndroid Build Coastguard Worker } 661*333d2b36SAndroid Build Coastguard Worker android_app { 662*333d2b36SAndroid Build Coastguard Worker name: "my_android_app_foo", 663*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/MyClass.java"], 664*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 665*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 666*333d2b36SAndroid Build Coastguard Worker stl: "none", 667*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_library_foo"], 668*333d2b36SAndroid Build Coastguard Worker apex_available: [ "myapex" ], 669*333d2b36SAndroid Build Coastguard Worker } 670*333d2b36SAndroid Build Coastguard Worker java_library { 671*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_foo", 672*333d2b36SAndroid Build Coastguard Worker srcs: [":my_genrule_foo"], 673*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 674*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 675*333d2b36SAndroid Build Coastguard Worker apex_available: [ 676*333d2b36SAndroid Build Coastguard Worker "myapex", 677*333d2b36SAndroid Build Coastguard Worker ], 678*333d2b36SAndroid Build Coastguard Worker } 679*333d2b36SAndroid Build Coastguard Worker aconfig_declarations_group { 680*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_group_foo", 681*333d2b36SAndroid Build Coastguard Worker java_aconfig_libraries: [ 682*333d2b36SAndroid Build Coastguard Worker "my_java_aconfig_library_foo", 683*333d2b36SAndroid Build Coastguard Worker ], 684*333d2b36SAndroid Build Coastguard Worker } 685*333d2b36SAndroid Build Coastguard Worker filegroup { 686*333d2b36SAndroid Build Coastguard Worker name: "my_filegroup_foo_srcjars", 687*333d2b36SAndroid Build Coastguard Worker device_common_srcs: [ 688*333d2b36SAndroid Build Coastguard Worker ":my_aconfig_declarations_group_foo{.srcjars}", 689*333d2b36SAndroid Build Coastguard Worker ], 690*333d2b36SAndroid Build Coastguard Worker } 691*333d2b36SAndroid Build Coastguard Worker genrule { 692*333d2b36SAndroid Build Coastguard Worker name: "my_genrule_foo", 693*333d2b36SAndroid Build Coastguard Worker srcs: [":my_filegroup_foo_srcjars"], 694*333d2b36SAndroid Build Coastguard Worker cmd: "cp $(in) $(out)", 695*333d2b36SAndroid Build Coastguard Worker out: ["my_genrule_foo.srcjar"], 696*333d2b36SAndroid Build Coastguard Worker } 697*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 698*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 699*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 700*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 701*333d2b36SAndroid Build Coastguard Worker srcs: ["bar.aconfig"], 702*333d2b36SAndroid Build Coastguard Worker } 703*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 704*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_foo", 705*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 706*333d2b36SAndroid Build Coastguard Worker apex_available: [ 707*333d2b36SAndroid Build Coastguard Worker "myapex", 708*333d2b36SAndroid Build Coastguard Worker ], 709*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 710*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 711*333d2b36SAndroid Build Coastguard Worker }`, 712*333d2b36SAndroid Build Coastguard Worker expectedError: `.*my_android_app_foo/myapex depends on my_java_aconfig_library_foo/otherapex/production across containers`, 713*333d2b36SAndroid Build Coastguard Worker }, 714*333d2b36SAndroid Build Coastguard Worker } 715*333d2b36SAndroid Build Coastguard Worker for _, test := range testCases { 716*333d2b36SAndroid Build Coastguard Worker t.Run(test.name, func(t *testing.T) { 717*333d2b36SAndroid Build Coastguard Worker t.Parallel() 718*333d2b36SAndroid Build Coastguard Worker errorHandler := android.FixtureExpectsNoErrors 719*333d2b36SAndroid Build Coastguard Worker if test.expectedError != "" { 720*333d2b36SAndroid Build Coastguard Worker errorHandler = android.FixtureExpectsAtLeastOneErrorMatchingPattern(test.expectedError) 721*333d2b36SAndroid Build Coastguard Worker } 722*333d2b36SAndroid Build Coastguard Worker android.GroupFixturePreparers( 723*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 724*333d2b36SAndroid Build Coastguard Worker cc.PrepareForTestWithCcBuildComponents, 725*333d2b36SAndroid Build Coastguard Worker rust.PrepareForTestWithRustDefaultModules, 726*333d2b36SAndroid Build Coastguard Worker codegen.PrepareForTestWithAconfigBuildComponents, 727*333d2b36SAndroid Build Coastguard Worker genrule.PrepareForIntegrationTestWithGenrule, 728*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithApexBuildComponents, 729*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMyapex, 730*333d2b36SAndroid Build Coastguard Worker withAconfigValidationError, 731*333d2b36SAndroid Build Coastguard Worker ). 732*333d2b36SAndroid Build Coastguard Worker ExtendWithErrorHandler(errorHandler). 733*333d2b36SAndroid Build Coastguard Worker RunTestWithBp(t, test.bp) 734*333d2b36SAndroid Build Coastguard Worker }) 735*333d2b36SAndroid Build Coastguard Worker } 736*333d2b36SAndroid Build Coastguard Worker} 737*333d2b36SAndroid Build Coastguard Worker 738*333d2b36SAndroid Build Coastguard Workerfunc TestValidationNotPropagateAcrossShared(t *testing.T) { 739*333d2b36SAndroid Build Coastguard Worker t.Parallel() 740*333d2b36SAndroid Build Coastguard Worker testCases := []struct { 741*333d2b36SAndroid Build Coastguard Worker name string 742*333d2b36SAndroid Build Coastguard Worker bp string 743*333d2b36SAndroid Build Coastguard Worker }{ 744*333d2b36SAndroid Build Coastguard Worker { 745*333d2b36SAndroid Build Coastguard Worker name: "Java shared lib not propagate aconfig validation", 746*333d2b36SAndroid Build Coastguard Worker bp: apex_default_bp + ` 747*333d2b36SAndroid Build Coastguard Worker apex { 748*333d2b36SAndroid Build Coastguard Worker name: "myapex", 749*333d2b36SAndroid Build Coastguard Worker manifest: ":myapex.manifest", 750*333d2b36SAndroid Build Coastguard Worker androidManifest: ":myapex.androidmanifest", 751*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 752*333d2b36SAndroid Build Coastguard Worker java_libs: [ 753*333d2b36SAndroid Build Coastguard Worker "my_java_library_bar", 754*333d2b36SAndroid Build Coastguard Worker ], 755*333d2b36SAndroid Build Coastguard Worker updatable: false, 756*333d2b36SAndroid Build Coastguard Worker } 757*333d2b36SAndroid Build Coastguard Worker java_library { 758*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_bar", 759*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 760*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 761*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 762*333d2b36SAndroid Build Coastguard Worker libs: ["my_java_library_foo"], 763*333d2b36SAndroid Build Coastguard Worker apex_available: [ 764*333d2b36SAndroid Build Coastguard Worker "myapex", 765*333d2b36SAndroid Build Coastguard Worker ], 766*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 767*333d2b36SAndroid Build Coastguard Worker } 768*333d2b36SAndroid Build Coastguard Worker java_library { 769*333d2b36SAndroid Build Coastguard Worker name: "my_java_library_foo", 770*333d2b36SAndroid Build Coastguard Worker srcs: ["foo/bar/MyClass.java"], 771*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 772*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 773*333d2b36SAndroid Build Coastguard Worker static_libs: ["my_java_aconfig_library_foo"], 774*333d2b36SAndroid Build Coastguard Worker apex_available: [ 775*333d2b36SAndroid Build Coastguard Worker "myapex", 776*333d2b36SAndroid Build Coastguard Worker ], 777*333d2b36SAndroid Build Coastguard Worker } 778*333d2b36SAndroid Build Coastguard Worker aconfig_declarations { 779*333d2b36SAndroid Build Coastguard Worker name: "my_aconfig_declarations_foo", 780*333d2b36SAndroid Build Coastguard Worker package: "com.example.package", 781*333d2b36SAndroid Build Coastguard Worker container: "otherapex", 782*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.aconfig"], 783*333d2b36SAndroid Build Coastguard Worker } 784*333d2b36SAndroid Build Coastguard Worker java_aconfig_library { 785*333d2b36SAndroid Build Coastguard Worker name: "my_java_aconfig_library_foo", 786*333d2b36SAndroid Build Coastguard Worker aconfig_declarations: "my_aconfig_declarations_foo", 787*333d2b36SAndroid Build Coastguard Worker apex_available: [ 788*333d2b36SAndroid Build Coastguard Worker "myapex", 789*333d2b36SAndroid Build Coastguard Worker ], 790*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 791*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 792*333d2b36SAndroid Build Coastguard Worker }`, 793*333d2b36SAndroid Build Coastguard Worker }, 794*333d2b36SAndroid Build Coastguard Worker } 795*333d2b36SAndroid Build Coastguard Worker for _, test := range testCases { 796*333d2b36SAndroid Build Coastguard Worker t.Run(test.name, func(t *testing.T) { 797*333d2b36SAndroid Build Coastguard Worker t.Parallel() 798*333d2b36SAndroid Build Coastguard Worker android.GroupFixturePreparers( 799*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 800*333d2b36SAndroid Build Coastguard Worker cc.PrepareForTestWithCcBuildComponents, 801*333d2b36SAndroid Build Coastguard Worker rust.PrepareForTestWithRustDefaultModules, 802*333d2b36SAndroid Build Coastguard Worker codegen.PrepareForTestWithAconfigBuildComponents, 803*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithApexBuildComponents, 804*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMyapex, 805*333d2b36SAndroid Build Coastguard Worker withAconfigValidationError, 806*333d2b36SAndroid Build Coastguard Worker ). 807*333d2b36SAndroid Build Coastguard Worker RunTestWithBp(t, test.bp) 808*333d2b36SAndroid Build Coastguard Worker }) 809*333d2b36SAndroid Build Coastguard Worker } 810*333d2b36SAndroid Build Coastguard Worker} 811