1// Copyright (C) 2019 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package sdk 16 17import ( 18 "fmt" 19 "testing" 20 21 "android/soong/android" 22 "android/soong/dexpreopt" 23 "android/soong/java" 24) 25 26var prepareForSdkTestWithJava = android.GroupFixturePreparers( 27 java.PrepareForTestWithJavaBuildComponents, 28 PrepareForTestWithSdkBuildComponents, 29 dexpreopt.PrepareForTestWithFakeDex2oatd, 30 31 // Ensure that all source paths are provided. This helps ensure that the snapshot generation is 32 // consistent and all files referenced from the snapshot's Android.bp file have actually been 33 // copied into the snapshot. 34 android.PrepareForTestDisallowNonExistentPaths, 35 36 // Files needs by most of the tests. 37 android.MockFS{ 38 "Test.java": nil, 39 "art-profile": nil, 40 }.AddToFixture(), 41) 42 43var prepareForSdkTestWithJavaSdkLibrary = android.GroupFixturePreparers( 44 prepareForSdkTestWithJava, 45 java.PrepareForTestWithJavaDefaultModules, 46 java.PrepareForTestWithJavaSdkLibraryFiles, 47 java.FixtureWithLastReleaseApis("myjavalib"), 48) 49 50// Contains tests for SDK members provided by the java package. 51 52func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) { 53 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 54 sdk { 55 name: "mysdk", 56 java_header_libs: ["sdkmember"], 57 } 58 59 java_library { 60 name: "sdkmember", 61 srcs: ["Test.java"], 62 system_modules: "none", 63 sdk_version: "none", 64 } 65 `) 66 67 // Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember". 68 sdkChecker := func(t *testing.T, result *android.TestResult) { 69 java.CheckModuleDependencies(t, result.TestContext, "mysdk", "android_common", []string{"sdkmember"}) 70 } 71 72 CheckSnapshot(t, result, "mysdk", "", 73 snapshotTestChecker(checkSnapshotWithSourcePreferred, sdkChecker), 74 snapshotTestChecker(checkSnapshotPreferredWithSource, sdkChecker), 75 ) 76} 77 78func TestSnapshotWithJavaHeaderLibrary(t *testing.T) { 79 result := android.GroupFixturePreparers( 80 prepareForSdkTestWithJava, 81 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil), 82 ).RunTestWithBp(t, ` 83 sdk { 84 name: "mysdk", 85 java_header_libs: ["myjavalib"], 86 } 87 88 java_library { 89 name: "myjavalib", 90 srcs: ["Test.java"], 91 aidl: { 92 export_include_dirs: ["aidl"], 93 }, 94 system_modules: "none", 95 sdk_version: "none", 96 compile_dex: true, 97 host_supported: true, 98 permitted_packages: ["pkg.myjavalib"], 99 } 100 `) 101 102 CheckSnapshot(t, result, "mysdk", "", 103 checkAndroidBpContents(` 104// This is auto-generated. DO NOT EDIT. 105 106java_import { 107 name: "myjavalib", 108 prefer: false, 109 visibility: ["//visibility:public"], 110 apex_available: ["//apex_available:platform"], 111 jars: ["java/myjavalib.jar"], 112 permitted_packages: ["pkg.myjavalib"], 113} 114`), 115 checkAllCopyRules(` 116.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar 117aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl 118`), 119 ) 120} 121 122func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) { 123 result := android.GroupFixturePreparers( 124 prepareForSdkTestWithJava, 125 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil), 126 ).RunTestWithBp(t, ` 127 sdk { 128 name: "mysdk", 129 device_supported: false, 130 host_supported: true, 131 java_header_libs: ["myjavalib"], 132 } 133 134 java_library { 135 name: "myjavalib", 136 device_supported: false, 137 host_supported: true, 138 srcs: ["Test.java"], 139 aidl: { 140 export_include_dirs: ["aidl"], 141 }, 142 system_modules: "none", 143 sdk_version: "none", 144 compile_dex: true, 145 } 146 `) 147 148 CheckSnapshot(t, result, "mysdk", "", 149 checkAndroidBpContents(` 150// This is auto-generated. DO NOT EDIT. 151 152java_import { 153 name: "myjavalib", 154 prefer: false, 155 visibility: ["//visibility:public"], 156 apex_available: ["//apex_available:platform"], 157 device_supported: false, 158 host_supported: true, 159 jars: ["java/myjavalib.jar"], 160} 161`), 162 checkAllCopyRules(` 163.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/myjavalib.jar 164aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl 165`), 166 ) 167} 168 169func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) { 170 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 171 sdk { 172 name: "mysdk", 173 host_supported: true, 174 java_header_libs: ["myjavalib"], 175 } 176 177 java_library { 178 name: "myjavalib", 179 host_supported: true, 180 srcs: ["Test.java"], 181 system_modules: "none", 182 sdk_version: "none", 183 compile_dex: true, 184 } 185 `) 186 187 CheckSnapshot(t, result, "mysdk", "", 188 checkAndroidBpContents(` 189// This is auto-generated. DO NOT EDIT. 190 191java_import { 192 name: "myjavalib", 193 prefer: false, 194 visibility: ["//visibility:public"], 195 apex_available: ["//apex_available:platform"], 196 host_supported: true, 197 target: { 198 android: { 199 jars: ["java/android/myjavalib.jar"], 200 }, 201 linux_glibc: { 202 jars: ["java/linux_glibc/myjavalib.jar"], 203 }, 204 }, 205} 206`), 207 checkAllCopyRules(` 208.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar 209.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/linux_glibc/myjavalib.jar 210`), 211 ) 212} 213 214func TestSnapshotWithJavaImplLibrary(t *testing.T) { 215 result := android.GroupFixturePreparers( 216 prepareForSdkTestWithJava, 217 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil), 218 android.FixtureAddFile("resource.txt", nil), 219 ).RunTestWithBp(t, ` 220 module_exports { 221 name: "myexports", 222 java_libs: ["myjavalib"], 223 } 224 225 java_library { 226 name: "myjavalib", 227 srcs: ["Test.java"], 228 java_resources: ["resource.txt"], 229 aidl: { 230 export_include_dirs: ["aidl"], 231 }, 232 system_modules: "none", 233 sdk_version: "none", 234 compile_dex: true, 235 host_supported: true, 236 } 237 `) 238 239 CheckSnapshot(t, result, "myexports", "", 240 checkAndroidBpContents(` 241// This is auto-generated. DO NOT EDIT. 242 243java_import { 244 name: "myjavalib", 245 prefer: false, 246 visibility: ["//visibility:public"], 247 apex_available: ["//apex_available:platform"], 248 jars: ["java/myjavalib.jar"], 249} 250`), 251 checkAllCopyRules(` 252.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar 253aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl 254`), 255 ) 256} 257 258func TestSnapshotWithJavaBootLibrary(t *testing.T) { 259 result := android.GroupFixturePreparers( 260 prepareForSdkTestWithJava, 261 android.FixtureAddFile("aidl", nil), 262 android.FixtureAddFile("resource.txt", nil), 263 ).RunTestWithBp(t, ` 264 sdk { 265 name: "mysdk", 266 java_boot_libs: ["myjavalib"], 267 } 268 269 java_library { 270 name: "myjavalib", 271 srcs: ["Test.java"], 272 java_resources: ["resource.txt"], 273 // The aidl files should not be copied to the snapshot because a java_boot_libs member is not 274 // intended to be used for compiling Java, only for accessing the dex implementation jar. 275 aidl: { 276 export_include_dirs: ["aidl"], 277 }, 278 system_modules: "none", 279 sdk_version: "none", 280 compile_dex: true, 281 permitted_packages: ["pkg.myjavalib"], 282 } 283 `) 284 285 CheckSnapshot(t, result, "mysdk", "", 286 checkAndroidBpContents(` 287// This is auto-generated. DO NOT EDIT. 288 289java_import { 290 name: "myjavalib", 291 prefer: false, 292 visibility: ["//visibility:public"], 293 apex_available: ["//apex_available:platform"], 294 jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"], 295 permitted_packages: ["pkg.myjavalib"], 296} 297`), 298 checkAllCopyRules(` 299.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar 300`), 301 ) 302} 303 304func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) { 305 runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) { 306 result := android.GroupFixturePreparers( 307 prepareForSdkTestWithJava, 308 android.FixtureMergeEnv(map[string]string{ 309 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease, 310 }), 311 ).RunTestWithBp(t, ` 312 sdk { 313 name: "mysdk", 314 java_boot_libs: ["updatable-media"], 315 } 316 317 java_library { 318 name: "updatable-media", 319 srcs: ["Test.java"], 320 system_modules: "none", 321 sdk_version: "none", 322 compile_dex: true, 323 permitted_packages: ["pkg.media"], 324 apex_available: ["com.android.media"], 325 } 326 `) 327 328 CheckSnapshot(t, result, "mysdk", "", 329 checkAndroidBpContents(fmt.Sprintf(` 330// This is auto-generated. DO NOT EDIT. 331 332java_import { 333 name: "updatable-media", 334 prefer: false, 335 visibility: ["//visibility:public"], 336 apex_available: ["com.android.media"], 337 jars: ["%s"], 338 permitted_packages: ["pkg.media"], 339} 340`, expectedJarPath)), 341 checkAllCopyRules(expectedCopyRule), 342 ) 343 } 344 345 t.Run("updatable-media in S", func(t *testing.T) { 346 runTest(t, "S", "java/updatable-media.jar", ` 347.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar 348`) 349 }) 350 351 t.Run("updatable-media in T", func(t *testing.T) { 352 runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", ` 353.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar 354`) 355 }) 356} 357 358func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) { 359 runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) { 360 result := android.GroupFixturePreparers( 361 prepareForSdkTestWithJava, 362 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 363 variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"} 364 }), 365 android.FixtureMergeEnv(map[string]string{ 366 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease, 367 }), 368 ).RunTestWithBp(t, fmt.Sprintf(` 369 sdk { 370 name: "mysdk", 371 java_header_libs: ["mylib"], 372 } 373 374 java_library { 375 name: "mylib", 376 srcs: ["Test.java"], 377 system_modules: "none", 378 sdk_version: "none", 379 compile_dex: true, 380 min_sdk_version: "%s", 381 } 382 `, minSdkVersion)) 383 384 expectedMinSdkVersionLine := "" 385 if expectedMinSdkVersion != "" { 386 expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion) 387 } 388 389 CheckSnapshot(t, result, "mysdk", "", 390 checkAndroidBpContents(fmt.Sprintf(` 391// This is auto-generated. DO NOT EDIT. 392 393java_import { 394 name: "mylib", 395 prefer: false, 396 visibility: ["//visibility:public"], 397 apex_available: ["//apex_available:platform"], 398 jars: ["java/mylib.jar"], 399%s} 400`, expectedMinSdkVersionLine)), 401 ) 402 } 403 404 t.Run("min_sdk_version=S in S", func(t *testing.T) { 405 // min_sdk_version was not added to java_import until Tiramisu. 406 runTest(t, "S", "S", "") 407 }) 408 409 t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) { 410 // The canonical form of S is 31. 411 runTest(t, "Tiramisu", "S", "31") 412 }) 413 414 t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) { 415 // A numerical min_sdk_version is already in canonical form. 416 runTest(t, "Tiramisu", "24", "24") 417 }) 418 419 t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) { 420 // An unfinalized min_sdk_version has no numeric value yet. 421 runTest(t, "", "Unfinalized", "Unfinalized") 422 }) 423} 424 425func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) { 426 result := android.GroupFixturePreparers( 427 prepareForSdkTestWithJava, 428 android.FixtureAddFile("aidl", nil), 429 android.FixtureAddFile("resource.txt", nil), 430 ).RunTestWithBp(t, ` 431 module_exports { 432 name: "myexports", 433 java_systemserver_libs: ["myjavalib"], 434 } 435 436 java_library { 437 name: "myjavalib", 438 srcs: ["Test.java"], 439 java_resources: ["resource.txt"], 440 // The aidl files should not be copied to the snapshot because a java_systemserver_libs member 441 // is not intended to be used for compiling Java, only for accessing the dex implementation 442 // jar. 443 aidl: { 444 export_include_dirs: ["aidl"], 445 }, 446 system_modules: "none", 447 sdk_version: "none", 448 compile_dex: true, 449 permitted_packages: ["pkg.myjavalib"], 450 } 451 `) 452 453 CheckSnapshot(t, result, "myexports", "", 454 checkAndroidBpContents(` 455// This is auto-generated. DO NOT EDIT. 456 457java_import { 458 name: "myjavalib", 459 prefer: false, 460 visibility: ["//visibility:public"], 461 apex_available: ["//apex_available:platform"], 462 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"], 463 permitted_packages: ["pkg.myjavalib"], 464} 465`), 466 checkAllCopyRules(` 467.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar 468`), 469 ) 470} 471 472func TestHostSnapshotWithJavaImplLibrary(t *testing.T) { 473 result := android.GroupFixturePreparers( 474 prepareForSdkTestWithJava, 475 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil), 476 ).RunTestWithBp(t, ` 477 module_exports { 478 name: "myexports", 479 device_supported: false, 480 host_supported: true, 481 java_libs: ["myjavalib"], 482 } 483 484 java_library { 485 name: "myjavalib", 486 device_supported: false, 487 host_supported: true, 488 srcs: ["Test.java"], 489 aidl: { 490 export_include_dirs: ["aidl"], 491 }, 492 system_modules: "none", 493 sdk_version: "none", 494 compile_dex: true, 495 } 496 `) 497 498 CheckSnapshot(t, result, "myexports", "", 499 checkAndroidBpContents(` 500// This is auto-generated. DO NOT EDIT. 501 502java_import { 503 name: "myjavalib", 504 prefer: false, 505 visibility: ["//visibility:public"], 506 apex_available: ["//apex_available:platform"], 507 device_supported: false, 508 host_supported: true, 509 jars: ["java/myjavalib.jar"], 510} 511`), 512 checkAllCopyRules(` 513.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar 514aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl 515`), 516 ) 517} 518 519func TestSnapshotWithJavaTest(t *testing.T) { 520 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 521 module_exports { 522 name: "myexports", 523 java_tests: ["myjavatests"], 524 } 525 526 java_test { 527 name: "myjavatests", 528 srcs: ["Test.java"], 529 system_modules: "none", 530 sdk_version: "none", 531 compile_dex: true, 532 host_supported: true, 533 } 534 `) 535 536 CheckSnapshot(t, result, "myexports", "", 537 checkAndroidBpContents(` 538// This is auto-generated. DO NOT EDIT. 539 540java_test_import { 541 name: "myjavatests", 542 prefer: false, 543 visibility: ["//visibility:public"], 544 apex_available: ["//apex_available:platform"], 545 jars: ["java/myjavatests.jar"], 546 test_config: "java/myjavatests-AndroidTest.xml", 547} 548`), 549 checkAllCopyRules(` 550.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar 551.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml 552`), 553 ) 554} 555 556func TestHostSnapshotWithJavaTest(t *testing.T) { 557 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 558 module_exports { 559 name: "myexports", 560 device_supported: false, 561 host_supported: true, 562 java_tests: ["myjavatests"], 563 } 564 565 java_test { 566 name: "myjavatests", 567 device_supported: false, 568 host_supported: true, 569 srcs: ["Test.java"], 570 system_modules: "none", 571 sdk_version: "none", 572 compile_dex: true, 573 } 574 `) 575 576 CheckSnapshot(t, result, "myexports", "", 577 checkAndroidBpContents(` 578// This is auto-generated. DO NOT EDIT. 579 580java_test_import { 581 name: "myjavatests", 582 prefer: false, 583 visibility: ["//visibility:public"], 584 apex_available: ["//apex_available:platform"], 585 device_supported: false, 586 host_supported: true, 587 jars: ["java/myjavatests.jar"], 588 test_config: "java/myjavatests-AndroidTest.xml", 589} 590`), 591 checkAllCopyRules(` 592.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar 593.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml 594`), 595 ) 596} 597 598func TestSnapshotWithJavaSystemModules(t *testing.T) { 599 result := android.GroupFixturePreparers( 600 prepareForSdkTestWithJava, 601 java.PrepareForTestWithJavaDefaultModules, 602 java.PrepareForTestWithJavaSdkLibraryFiles, 603 java.FixtureWithPrebuiltApisAndExtensions(map[string][]string{ 604 "31": {"myjavalib"}, 605 "32": {"myjavalib"}, 606 "current": {"myjavalib"}, 607 }, map[string][]string{ 608 "1": {"myjavalib"}, 609 "2": {"myjavalib"}, 610 }), 611 ).RunTestWithBp(t, ` 612 sdk { 613 name: "mysdk", 614 java_header_libs: ["exported-system-module"], 615 java_sdk_libs: ["myjavalib"], 616 java_system_modules: ["my-system-modules"], 617 } 618 619 java_sdk_library { 620 name: "myjavalib", 621 apex_available: ["//apex_available:anyapex"], 622 srcs: ["Test.java"], 623 sdk_version: "current", 624 shared_library: false, 625 public: { 626 enabled: true, 627 }, 628 } 629 630 java_system_modules { 631 name: "my-system-modules", 632 libs: ["system-module", "exported-system-module", "myjavalib.stubs"], 633 } 634 635 java_library { 636 name: "system-module", 637 srcs: ["Test.java"], 638 sdk_version: "none", 639 system_modules: "none", 640 } 641 642 java_library { 643 name: "exported-system-module", 644 srcs: ["Test.java"], 645 sdk_version: "none", 646 system_modules: "none", 647 } 648 `) 649 650 CheckSnapshot(t, result, "mysdk", "", 651 checkAndroidBpContents(` 652// This is auto-generated. DO NOT EDIT. 653 654java_import { 655 name: "exported-system-module", 656 prefer: false, 657 visibility: ["//visibility:public"], 658 apex_available: ["//apex_available:platform"], 659 jars: ["java/exported-system-module.jar"], 660} 661 662java_import { 663 name: "mysdk_system-module", 664 prefer: false, 665 visibility: ["//visibility:private"], 666 apex_available: ["//apex_available:platform"], 667 jars: ["java/system-module.jar"], 668} 669 670java_sdk_library_import { 671 name: "myjavalib", 672 prefer: false, 673 visibility: ["//visibility:public"], 674 apex_available: ["//apex_available:anyapex"], 675 shared_library: false, 676 public: { 677 jars: ["sdk_library/public/myjavalib-stubs.jar"], 678 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 679 current_api: "sdk_library/public/myjavalib.txt", 680 removed_api: "sdk_library/public/myjavalib-removed.txt", 681 sdk_version: "current", 682 }, 683} 684 685java_system_modules_import { 686 name: "my-system-modules", 687 prefer: false, 688 visibility: ["//visibility:public"], 689 libs: [ 690 "mysdk_system-module", 691 "exported-system-module", 692 "myjavalib.stubs", 693 ], 694} 695`), 696 checkAllCopyRules(` 697.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar 698.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar 699.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 700.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 701.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 702`), 703 checkInfoContents(result.Config, ` 704[ 705 { 706 "@type": "sdk", 707 "@name": "mysdk", 708 "java_header_libs": [ 709 "exported-system-module", 710 "system-module" 711 ], 712 "java_sdk_libs": [ 713 "myjavalib" 714 ], 715 "java_system_modules": [ 716 "my-system-modules" 717 ] 718 }, 719 { 720 "@type": "java_library", 721 "@name": "exported-system-module" 722 }, 723 { 724 "@type": "java_system_modules", 725 "@name": "my-system-modules", 726 "@deps": [ 727 "exported-system-module", 728 "system-module" 729 ] 730 }, 731 { 732 "@type": "java_sdk_library", 733 "@name": "myjavalib", 734 "dist_stem": "myjavalib", 735 "scopes": { 736 "public": { 737 "current_api": "sdk_library/public/myjavalib.txt", 738 "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.public.latest/gen/myjavalib.api.public.latest", 739 "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.public.latest/gen/myjavalib-removed.api.public.latest", 740 "removed_api": "sdk_library/public/myjavalib-removed.txt" 741 } 742 } 743 }, 744 { 745 "@type": "java_library", 746 "@name": "system-module" 747 } 748] 749`), 750 ) 751} 752 753func TestHostSnapshotWithJavaSystemModules(t *testing.T) { 754 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 755 sdk { 756 name: "mysdk", 757 device_supported: false, 758 host_supported: true, 759 java_system_modules: ["my-system-modules"], 760 } 761 762 java_system_modules { 763 name: "my-system-modules", 764 device_supported: false, 765 host_supported: true, 766 libs: ["system-module"], 767 } 768 769 java_library { 770 name: "system-module", 771 device_supported: false, 772 host_supported: true, 773 srcs: ["Test.java"], 774 sdk_version: "none", 775 system_modules: "none", 776 } 777 `) 778 779 CheckSnapshot(t, result, "mysdk", "", 780 checkAndroidBpContents(` 781// This is auto-generated. DO NOT EDIT. 782 783java_import { 784 name: "mysdk_system-module", 785 prefer: false, 786 visibility: ["//visibility:private"], 787 apex_available: ["//apex_available:platform"], 788 device_supported: false, 789 host_supported: true, 790 jars: ["java/system-module.jar"], 791} 792 793java_system_modules_import { 794 name: "my-system-modules", 795 prefer: false, 796 visibility: ["//visibility:public"], 797 device_supported: false, 798 host_supported: true, 799 libs: ["mysdk_system-module"], 800} 801`), 802 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac-header/system-module.jar -> java/system-module.jar"), 803 ) 804} 805 806func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) { 807 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, ` 808 module_exports { 809 name: "myexports", 810 host_supported: true, 811 java_libs: ["myjavalib"], 812 target: { 813 android: { 814 java_header_libs: ["androidjavalib"], 815 }, 816 host: { 817 java_header_libs: ["hostjavalib"], 818 }, 819 }, 820 } 821 822 java_library { 823 name: "myjavalib", 824 host_supported: true, 825 srcs: ["Test.java"], 826 system_modules: "none", 827 sdk_version: "none", 828 } 829 830 java_library { 831 name: "androidjavalib", 832 srcs: ["Test.java"], 833 system_modules: "none", 834 sdk_version: "none", 835 } 836 837 java_library_host { 838 name: "hostjavalib", 839 srcs: ["Test.java"], 840 } 841 `) 842 843 CheckSnapshot(t, result, "myexports", "", 844 checkAndroidBpContents(` 845// This is auto-generated. DO NOT EDIT. 846 847java_import { 848 name: "hostjavalib", 849 prefer: false, 850 visibility: ["//visibility:public"], 851 apex_available: ["//apex_available:platform"], 852 device_supported: false, 853 host_supported: true, 854 jars: ["java/hostjavalib.jar"], 855} 856 857java_import { 858 name: "androidjavalib", 859 prefer: false, 860 visibility: ["//visibility:public"], 861 apex_available: ["//apex_available:platform"], 862 jars: ["java/androidjavalib.jar"], 863} 864 865java_import { 866 name: "myjavalib", 867 prefer: false, 868 visibility: ["//visibility:public"], 869 apex_available: ["//apex_available:platform"], 870 host_supported: true, 871 target: { 872 android: { 873 jars: ["java/android/myjavalib.jar"], 874 }, 875 linux_glibc: { 876 jars: ["java/linux_glibc/myjavalib.jar"], 877 }, 878 }, 879} 880`), 881 checkAllCopyRules(` 882.intermediates/hostjavalib/linux_glibc_common/javac-header/hostjavalib.jar -> java/hostjavalib.jar 883.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar 884.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar 885.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar 886`), 887 ) 888} 889 890func TestSnapshotWithJavaSdkLibrary(t *testing.T) { 891 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 892 sdk { 893 name: "mysdk", 894 java_sdk_libs: ["myjavalib"], 895 } 896 897 java_sdk_library { 898 name: "myjavalib", 899 apex_available: ["//apex_available:anyapex"], 900 srcs: ["Test.java"], 901 sdk_version: "current", 902 shared_library: false, 903 stubs_library_visibility: ["//other"], 904 stubs_source_visibility: ["//another"], 905 permitted_packages: ["pkg.myjavalib"], 906 } 907 `) 908 909 CheckSnapshot(t, result, "mysdk", "", 910 checkAndroidBpContents(` 911// This is auto-generated. DO NOT EDIT. 912 913java_sdk_library_import { 914 name: "myjavalib", 915 prefer: false, 916 visibility: ["//visibility:public"], 917 apex_available: ["//apex_available:anyapex"], 918 shared_library: false, 919 permitted_packages: ["pkg.myjavalib"], 920 public: { 921 jars: ["sdk_library/public/myjavalib-stubs.jar"], 922 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 923 current_api: "sdk_library/public/myjavalib.txt", 924 removed_api: "sdk_library/public/myjavalib-removed.txt", 925 sdk_version: "current", 926 }, 927 system: { 928 jars: ["sdk_library/system/myjavalib-stubs.jar"], 929 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"], 930 current_api: "sdk_library/system/myjavalib.txt", 931 removed_api: "sdk_library/system/myjavalib-removed.txt", 932 sdk_version: "system_current", 933 }, 934 test: { 935 jars: ["sdk_library/test/myjavalib-stubs.jar"], 936 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"], 937 current_api: "sdk_library/test/myjavalib.txt", 938 removed_api: "sdk_library/test/myjavalib-removed.txt", 939 sdk_version: "test_current", 940 }, 941} 942`), 943 checkAllCopyRules(` 944.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 945.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 946.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 947.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar 948.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt 949.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt 950.intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar 951.intermediates/myjavalib.stubs.source.test/android_common/metalava/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt 952.intermediates/myjavalib.stubs.source.test/android_common/metalava/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt 953`), 954 checkMergeZips( 955 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 956 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip", 957 ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip", 958 ), 959 ) 960} 961 962func TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) { 963 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 964 sdk { 965 name: "mysdk", 966 java_sdk_libs: ["myjavalib-foo"], 967 } 968 969 java_sdk_library { 970 name: "myjavalib-foo", 971 apex_available: ["//apex_available:anyapex"], 972 srcs: ["Test.java"], 973 sdk_version: "current", 974 shared_library: false, 975 public: { 976 enabled: true, 977 }, 978 dist_stem: "myjavalib", 979 } 980 `) 981 982 CheckSnapshot(t, result, "mysdk", "", 983 checkAndroidBpContents(` 984// This is auto-generated. DO NOT EDIT. 985 986java_sdk_library_import { 987 name: "myjavalib-foo", 988 prefer: false, 989 visibility: ["//visibility:public"], 990 apex_available: ["//apex_available:anyapex"], 991 shared_library: false, 992 public: { 993 jars: ["sdk_library/public/myjavalib-stubs.jar"], 994 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 995 current_api: "sdk_library/public/myjavalib.txt", 996 removed_api: "sdk_library/public/myjavalib-removed.txt", 997 sdk_version: "current", 998 }, 999} 1000`), 1001 checkAllCopyRules(` 1002.intermediates/myjavalib-foo.stubs/android_common/javac/myjavalib-foo.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1003.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1004.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1005`), 1006 checkMergeZips( 1007 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1008 ), 1009 ) 1010} 1011 1012func TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) { 1013 result := android.GroupFixturePreparers( 1014 prepareForSdkTestWithJavaSdkLibrary, 1015 android.FixtureMergeEnv(map[string]string{ 1016 "SOONG_SDK_SNAPSHOT_USE_SRCJAR": "true", 1017 }), 1018 ).RunTestWithBp(t, ` 1019 sdk { 1020 name: "mysdk", 1021 java_sdk_libs: ["myjavalib"], 1022 } 1023 1024 java_sdk_library { 1025 name: "myjavalib", 1026 srcs: ["Test.java"], 1027 sdk_version: "current", 1028 shared_library: false, 1029 public: { 1030 enabled: true, 1031 }, 1032 } 1033 `) 1034 1035 CheckSnapshot(t, result, "mysdk", "", 1036 checkAndroidBpContents(` 1037// This is auto-generated. DO NOT EDIT. 1038 1039java_sdk_library_import { 1040 name: "myjavalib", 1041 prefer: false, 1042 visibility: ["//visibility:public"], 1043 apex_available: ["//apex_available:platform"], 1044 shared_library: false, 1045 public: { 1046 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1047 stub_srcs: ["sdk_library/public/myjavalib.srcjar"], 1048 current_api: "sdk_library/public/myjavalib.txt", 1049 removed_api: "sdk_library/public/myjavalib-removed.txt", 1050 sdk_version: "current", 1051 }, 1052} 1053 `), 1054 checkAllCopyRules(` 1055.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1056.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source-stubs.srcjar -> sdk_library/public/myjavalib.srcjar 1057.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1058.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1059 `), 1060 ) 1061} 1062 1063func TestSnapshotWithJavaSdkLibrary_AnnotationsZip(t *testing.T) { 1064 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1065 sdk { 1066 name: "mysdk", 1067 java_sdk_libs: ["myjavalib"], 1068 } 1069 1070 java_sdk_library { 1071 name: "myjavalib", 1072 srcs: ["Test.java"], 1073 sdk_version: "current", 1074 shared_library: false, 1075 annotations_enabled: true, 1076 public: { 1077 enabled: true, 1078 }, 1079 } 1080 `) 1081 1082 CheckSnapshot(t, result, "mysdk", "", 1083 checkAndroidBpContents(` 1084// This is auto-generated. DO NOT EDIT. 1085 1086java_sdk_library_import { 1087 name: "myjavalib", 1088 prefer: false, 1089 visibility: ["//visibility:public"], 1090 apex_available: ["//apex_available:platform"], 1091 shared_library: false, 1092 public: { 1093 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1094 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1095 current_api: "sdk_library/public/myjavalib.txt", 1096 removed_api: "sdk_library/public/myjavalib-removed.txt", 1097 annotations: "sdk_library/public/myjavalib_annotations.zip", 1098 sdk_version: "current", 1099 }, 1100} 1101 `), 1102 checkAllCopyRules(` 1103.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1104.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1105.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1106.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_annotations.zip -> sdk_library/public/myjavalib_annotations.zip 1107 `), 1108 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"), 1109 ) 1110} 1111 1112func TestSnapshotWithJavaSdkLibrary_AnnotationsZip_PreT(t *testing.T) { 1113 result := android.GroupFixturePreparers( 1114 prepareForSdkTestWithJavaSdkLibrary, 1115 android.FixtureMergeEnv(map[string]string{ 1116 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S", 1117 }), 1118 ).RunTestWithBp(t, ` 1119 sdk { 1120 name: "mysdk", 1121 java_sdk_libs: ["myjavalib"], 1122 } 1123 1124 java_sdk_library { 1125 name: "myjavalib", 1126 srcs: ["Test.java"], 1127 sdk_version: "S", 1128 shared_library: false, 1129 annotations_enabled: true, 1130 public: { 1131 enabled: true, 1132 }, 1133 } 1134 `) 1135 1136 CheckSnapshot(t, result, "mysdk", "", 1137 checkAndroidBpContents(` 1138// This is auto-generated. DO NOT EDIT. 1139 1140java_sdk_library_import { 1141 name: "myjavalib", 1142 prefer: false, 1143 visibility: ["//visibility:public"], 1144 apex_available: ["//apex_available:platform"], 1145 shared_library: false, 1146 public: { 1147 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1148 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1149 current_api: "sdk_library/public/myjavalib.txt", 1150 removed_api: "sdk_library/public/myjavalib-removed.txt", 1151 sdk_version: "current", 1152 }, 1153} 1154 `), 1155 checkAllCopyRules(` 1156.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1157.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1158.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1159 `), 1160 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"), 1161 ) 1162} 1163 1164func TestSnapshotWithJavaSdkLibrary_CompileDex(t *testing.T) { 1165 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1166 sdk { 1167 name: "mysdk", 1168 java_sdk_libs: ["myjavalib"], 1169 } 1170 1171 java_sdk_library { 1172 name: "myjavalib", 1173 srcs: ["Test.java"], 1174 sdk_version: "current", 1175 shared_library: false, 1176 compile_dex: true, 1177 public: { 1178 enabled: true, 1179 }, 1180 system: { 1181 enabled: true, 1182 }, 1183 } 1184 `) 1185 1186 CheckSnapshot(t, result, "mysdk", "", 1187 checkAndroidBpContents(` 1188// This is auto-generated. DO NOT EDIT. 1189 1190java_sdk_library_import { 1191 name: "myjavalib", 1192 prefer: false, 1193 visibility: ["//visibility:public"], 1194 apex_available: ["//apex_available:platform"], 1195 shared_library: false, 1196 compile_dex: true, 1197 public: { 1198 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1199 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1200 current_api: "sdk_library/public/myjavalib.txt", 1201 removed_api: "sdk_library/public/myjavalib-removed.txt", 1202 sdk_version: "current", 1203 }, 1204 system: { 1205 jars: ["sdk_library/system/myjavalib-stubs.jar"], 1206 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"], 1207 current_api: "sdk_library/system/myjavalib.txt", 1208 removed_api: "sdk_library/system/myjavalib-removed.txt", 1209 sdk_version: "system_current", 1210 }, 1211} 1212`), 1213 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) { 1214 ctx := android.ModuleInstallPathContextForTesting(result.Config) 1215 dexJarBuildPath := func(name string, kind android.SdkKind) string { 1216 dep := result.Module(name, "android_common").(java.SdkLibraryDependency) 1217 path := dep.SdkApiStubDexJar(ctx, kind).Path() 1218 return path.RelativeToTop().String() 1219 } 1220 1221 dexJarPath := dexJarBuildPath("myjavalib", android.SdkPublic) 1222 android.AssertStringEquals(t, "source dex public stubs jar build path", "out/soong/.intermediates/myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath) 1223 1224 dexJarPath = dexJarBuildPath("myjavalib", android.SdkSystem) 1225 systemDexJar := "out/soong/.intermediates/myjavalib.stubs.system/android_common/dex/myjavalib.stubs.system.jar" 1226 android.AssertStringEquals(t, "source dex system stubs jar build path", systemDexJar, dexJarPath) 1227 1228 // This should fall back to system as module is not available. 1229 dexJarPath = dexJarBuildPath("myjavalib", android.SdkModule) 1230 android.AssertStringEquals(t, "source dex module stubs jar build path", systemDexJar, dexJarPath) 1231 1232 dexJarPath = dexJarBuildPath(android.PrebuiltNameFromSource("myjavalib"), android.SdkPublic) 1233 android.AssertStringEquals(t, "prebuilt dex public stubs jar build path", "out/soong/.intermediates/snapshot/prebuilt_myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath) 1234 }), 1235 ) 1236} 1237 1238func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) { 1239 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1240 sdk { 1241 name: "mysdk", 1242 java_sdk_libs: ["myjavalib"], 1243 } 1244 1245 java_sdk_library { 1246 name: "myjavalib", 1247 srcs: ["Test.java"], 1248 sdk_version: "none", 1249 system_modules: "none", 1250 } 1251 `) 1252 1253 CheckSnapshot(t, result, "mysdk", "", 1254 checkAndroidBpContents(` 1255// This is auto-generated. DO NOT EDIT. 1256 1257java_sdk_library_import { 1258 name: "myjavalib", 1259 prefer: false, 1260 visibility: ["//visibility:public"], 1261 apex_available: ["//apex_available:platform"], 1262 shared_library: true, 1263 public: { 1264 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1265 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1266 current_api: "sdk_library/public/myjavalib.txt", 1267 removed_api: "sdk_library/public/myjavalib-removed.txt", 1268 sdk_version: "none", 1269 }, 1270} 1271`), 1272 checkAllCopyRules(` 1273.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1274.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1275.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1276`), 1277 checkMergeZips( 1278 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1279 ), 1280 ) 1281} 1282 1283func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) { 1284 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1285 sdk { 1286 name: "mysdk", 1287 java_sdk_libs: ["myjavalib"], 1288 } 1289 1290 java_sdk_library { 1291 name: "myjavalib", 1292 srcs: ["Test.java"], 1293 sdk_version: "module_current", 1294 public: { 1295 enabled: true, 1296 sdk_version: "module_current", 1297 }, 1298 } 1299 `) 1300 1301 CheckSnapshot(t, result, "mysdk", "", 1302 checkAndroidBpContents(` 1303// This is auto-generated. DO NOT EDIT. 1304 1305java_sdk_library_import { 1306 name: "myjavalib", 1307 prefer: false, 1308 visibility: ["//visibility:public"], 1309 apex_available: ["//apex_available:platform"], 1310 shared_library: true, 1311 public: { 1312 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1313 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1314 current_api: "sdk_library/public/myjavalib.txt", 1315 removed_api: "sdk_library/public/myjavalib-removed.txt", 1316 sdk_version: "module_current", 1317 }, 1318} 1319`), 1320 checkAllCopyRules(` 1321.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1322.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1323.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1324`), 1325 checkMergeZips( 1326 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1327 ), 1328 ) 1329} 1330 1331func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) { 1332 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1333 sdk { 1334 name: "mysdk", 1335 java_sdk_libs: ["myjavalib"], 1336 } 1337 1338 java_sdk_library { 1339 name: "myjavalib", 1340 apex_available: ["//apex_available:anyapex"], 1341 srcs: ["Test.java"], 1342 sdk_version: "current", 1343 public: { 1344 enabled: true, 1345 }, 1346 system: { 1347 enabled: true, 1348 }, 1349 } 1350 `) 1351 1352 CheckSnapshot(t, result, "mysdk", "", 1353 checkAndroidBpContents(` 1354// This is auto-generated. DO NOT EDIT. 1355 1356java_sdk_library_import { 1357 name: "myjavalib", 1358 prefer: false, 1359 visibility: ["//visibility:public"], 1360 apex_available: ["//apex_available:anyapex"], 1361 shared_library: true, 1362 public: { 1363 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1364 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1365 current_api: "sdk_library/public/myjavalib.txt", 1366 removed_api: "sdk_library/public/myjavalib-removed.txt", 1367 sdk_version: "current", 1368 }, 1369 system: { 1370 jars: ["sdk_library/system/myjavalib-stubs.jar"], 1371 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"], 1372 current_api: "sdk_library/system/myjavalib.txt", 1373 removed_api: "sdk_library/system/myjavalib-removed.txt", 1374 sdk_version: "system_current", 1375 }, 1376} 1377`), 1378 checkAllCopyRules(` 1379.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1380.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1381.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1382.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar 1383.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt 1384.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt 1385`), 1386 checkMergeZips( 1387 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1388 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip", 1389 ), 1390 ) 1391} 1392 1393func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) { 1394 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1395 sdk { 1396 name: "mysdk", 1397 java_sdk_libs: ["myjavalib"], 1398 } 1399 1400 java_sdk_library { 1401 name: "myjavalib", 1402 apex_available: ["//apex_available:anyapex"], 1403 srcs: ["Test.java"], 1404 sdk_version: "current", 1405 public: { 1406 enabled: true, 1407 }, 1408 system: { 1409 enabled: true, 1410 }, 1411 module_lib: { 1412 enabled: true, 1413 }, 1414 } 1415 `) 1416 1417 CheckSnapshot(t, result, "mysdk", "", 1418 checkAndroidBpContents(` 1419// This is auto-generated. DO NOT EDIT. 1420 1421java_sdk_library_import { 1422 name: "myjavalib", 1423 prefer: false, 1424 visibility: ["//visibility:public"], 1425 apex_available: ["//apex_available:anyapex"], 1426 shared_library: true, 1427 public: { 1428 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1429 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1430 current_api: "sdk_library/public/myjavalib.txt", 1431 removed_api: "sdk_library/public/myjavalib-removed.txt", 1432 sdk_version: "current", 1433 }, 1434 system: { 1435 jars: ["sdk_library/system/myjavalib-stubs.jar"], 1436 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"], 1437 current_api: "sdk_library/system/myjavalib.txt", 1438 removed_api: "sdk_library/system/myjavalib-removed.txt", 1439 sdk_version: "system_current", 1440 }, 1441 module_lib: { 1442 jars: ["sdk_library/module-lib/myjavalib-stubs.jar"], 1443 stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"], 1444 current_api: "sdk_library/module-lib/myjavalib.txt", 1445 removed_api: "sdk_library/module-lib/myjavalib-removed.txt", 1446 sdk_version: "module_current", 1447 }, 1448} 1449`), 1450 checkAllCopyRules(` 1451.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1452.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1453.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1454.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar 1455.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt 1456.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt 1457.intermediates/myjavalib.stubs.module_lib/android_common/javac/myjavalib.stubs.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar 1458.intermediates/myjavalib.stubs.source.module_lib/android_common/metalava/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt 1459.intermediates/myjavalib.stubs.source.module_lib/android_common/metalava/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt 1460`), 1461 checkMergeZips( 1462 ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip", 1463 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1464 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip", 1465 ), 1466 ) 1467} 1468 1469func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) { 1470 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1471 sdk { 1472 name: "mysdk", 1473 java_sdk_libs: ["myjavalib"], 1474 } 1475 1476 java_sdk_library { 1477 name: "myjavalib", 1478 apex_available: ["//apex_available:anyapex"], 1479 srcs: ["Test.java"], 1480 sdk_version: "current", 1481 public: { 1482 enabled: true, 1483 }, 1484 system_server: { 1485 enabled: true, 1486 }, 1487 } 1488 `) 1489 1490 CheckSnapshot(t, result, "mysdk", "", 1491 checkAndroidBpContents(` 1492// This is auto-generated. DO NOT EDIT. 1493 1494java_sdk_library_import { 1495 name: "myjavalib", 1496 prefer: false, 1497 visibility: ["//visibility:public"], 1498 apex_available: ["//apex_available:anyapex"], 1499 shared_library: true, 1500 public: { 1501 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1502 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1503 current_api: "sdk_library/public/myjavalib.txt", 1504 removed_api: "sdk_library/public/myjavalib-removed.txt", 1505 sdk_version: "current", 1506 }, 1507 system_server: { 1508 jars: ["sdk_library/system-server/myjavalib-stubs.jar"], 1509 stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"], 1510 current_api: "sdk_library/system-server/myjavalib.txt", 1511 removed_api: "sdk_library/system-server/myjavalib-removed.txt", 1512 sdk_version: "system_server_current", 1513 }, 1514} 1515`), 1516 checkAllCopyRules(` 1517.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1518.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1519.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1520.intermediates/myjavalib.stubs.system_server/android_common/javac/myjavalib.stubs.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar 1521.intermediates/myjavalib.stubs.source.system_server/android_common/metalava/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt 1522.intermediates/myjavalib.stubs.source.system_server/android_common/metalava/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt 1523`), 1524 checkMergeZips( 1525 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1526 ".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip", 1527 ), 1528 ) 1529} 1530 1531func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) { 1532 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, ` 1533 sdk { 1534 name: "mysdk", 1535 java_sdk_libs: ["myjavalib"], 1536 } 1537 1538 java_sdk_library { 1539 name: "myjavalib", 1540 apex_available: ["//apex_available:anyapex"], 1541 srcs: ["Test.java"], 1542 sdk_version: "current", 1543 naming_scheme: "default", 1544 public: { 1545 enabled: true, 1546 }, 1547 } 1548 `) 1549 1550 CheckSnapshot(t, result, "mysdk", "", 1551 checkAndroidBpContents(` 1552// This is auto-generated. DO NOT EDIT. 1553 1554java_sdk_library_import { 1555 name: "myjavalib", 1556 prefer: false, 1557 visibility: ["//visibility:public"], 1558 apex_available: ["//apex_available:anyapex"], 1559 naming_scheme: "default", 1560 shared_library: true, 1561 public: { 1562 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1563 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1564 current_api: "sdk_library/public/myjavalib.txt", 1565 removed_api: "sdk_library/public/myjavalib-removed.txt", 1566 sdk_version: "current", 1567 }, 1568} 1569`), 1570 checkAllCopyRules(` 1571.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1572.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1573.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1574`), 1575 checkMergeZips( 1576 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip", 1577 ), 1578 ) 1579} 1580 1581func TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) { 1582 result := android.GroupFixturePreparers( 1583 prepareForSdkTestWithJavaSdkLibrary, 1584 android.FixtureAddFile("docs/known_doctags", nil), 1585 ).RunTestWithBp(t, ` 1586 sdk { 1587 name: "mysdk", 1588 java_sdk_libs: ["myjavalib"], 1589 } 1590 1591 java_sdk_library { 1592 name: "myjavalib", 1593 srcs: ["Test.java"], 1594 sdk_version: "current", 1595 public: { 1596 enabled: true, 1597 }, 1598 doctag_files: ["docs/known_doctags"], 1599 } 1600 1601 filegroup { 1602 name: "mygroup", 1603 srcs: [":myjavalib{.doctags}"], 1604 } 1605 `) 1606 1607 CheckSnapshot(t, result, "mysdk", "", 1608 checkAndroidBpContents(` 1609// This is auto-generated. DO NOT EDIT. 1610 1611java_sdk_library_import { 1612 name: "myjavalib", 1613 prefer: false, 1614 visibility: ["//visibility:public"], 1615 apex_available: ["//apex_available:platform"], 1616 shared_library: true, 1617 doctag_files: ["doctags/docs/known_doctags"], 1618 public: { 1619 jars: ["sdk_library/public/myjavalib-stubs.jar"], 1620 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"], 1621 current_api: "sdk_library/public/myjavalib.txt", 1622 removed_api: "sdk_library/public/myjavalib-removed.txt", 1623 sdk_version: "current", 1624 }, 1625} 1626`), 1627 checkAllCopyRules(` 1628.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar 1629.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt 1630.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt 1631docs/known_doctags -> doctags/docs/known_doctags 1632`), 1633 ) 1634} 1635