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