diff options
| author | 2022-08-21 12:00:14 +0000 | |
|---|---|---|
| committer | 2022-08-21 12:00:14 +0000 | |
| commit | 1caaec0789df9f9b1606d26216aa863ec4d4578a (patch) | |
| tree | 4e2f865eb7eccfcb27d36779c9b6ee092cba5bf3 /java/bootclasspath_fragment_test.go | |
| parent | 11f4a795ba4298740b6bc1e46048b90cc81f07f8 (diff) | |
| parent | 3f1ae0b55acd7e727c6227c3ab3e4f34e885e478 (diff) | |
Merge "Add hidden API properties to java_sdk_library modules"
Diffstat (limited to 'java/bootclasspath_fragment_test.go')
| -rw-r--r-- | java/bootclasspath_fragment_test.go | 114 | 
1 files changed, 114 insertions, 0 deletions
| diff --git a/java/bootclasspath_fragment_test.go b/java/bootclasspath_fragment_test.go index 83beb6d23..f95c83fe7 100644 --- a/java/bootclasspath_fragment_test.go +++ b/java/bootclasspath_fragment_test.go @@ -15,6 +15,7 @@  package java  import ( +	"strings"  	"testing"  	"android/soong/android" @@ -285,6 +286,119 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) {  	android.AssertPathsRelativeToTopEquals(t, "widest dex stubs jar", expectedWidestPaths, info.TransitiveStubDexJarsByScope.StubDexJarsForWidestAPIScope())  } +func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) { +	result := android.GroupFixturePreparers( +		prepareForTestWithBootclasspathFragment, +		PrepareForTestWithJavaSdkLibraryFiles, +		FixtureWithLastReleaseApis("mysdklibrary", "mynewlibrary"), +		FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:mynewlibrary"), +		android.MockFS{ +			"my-blocked.txt":                   nil, +			"my-max-target-o-low-priority.txt": nil, +			"my-max-target-p.txt":              nil, +			"my-max-target-q.txt":              nil, +			"my-max-target-r-low-priority.txt": nil, +			"my-removed.txt":                   nil, +			"my-unsupported-packages.txt":      nil, +			"my-unsupported.txt":               nil, +			"my-new-max-target-q.txt":          nil, +		}.AddToFixture(), +		android.FixtureWithRootAndroidBp(` +			bootclasspath_fragment { +				name: "mybootclasspathfragment", +				apex_available: ["myapex"], +				contents: ["mybootlib", "mynewlibrary"], +				hidden_api: { +					unsupported: [ +							"my-unsupported.txt", +					], +					removed: [ +							"my-removed.txt", +					], +					max_target_r_low_priority: [ +							"my-max-target-r-low-priority.txt", +					], +					max_target_q: [ +							"my-max-target-q.txt", +					], +					max_target_p: [ +							"my-max-target-p.txt", +					], +					max_target_o_low_priority: [ +							"my-max-target-o-low-priority.txt", +					], +					blocked: [ +							"my-blocked.txt", +					], +					unsupported_packages: [ +							"my-unsupported-packages.txt", +					], +					split_packages: ["sdklibrary"], +					package_prefixes: ["sdklibrary.all.mine"], +					single_packages: ["sdklibrary.mine"], +				}, +			} + +			java_library { +				name: "mybootlib", +				apex_available: ["myapex"], +				srcs: ["Test.java"], +				system_modules: "none", +				sdk_version: "none", +				min_sdk_version: "1", +				compile_dex: true, +				permitted_packages: ["mybootlib"], +			} + +			java_sdk_library { +				name: "mynewlibrary", +				apex_available: ["myapex"], +				srcs: ["Test.java"], +				min_sdk_version: "10", +				compile_dex: true, +				public: {enabled: true}, +				permitted_packages: ["mysdklibrary"], +				hidden_api: { +					max_target_q: [ +							"my-new-max-target-q.txt", +					], +					split_packages: ["sdklibrary", "newlibrary"], +					package_prefixes: ["newlibrary.all.mine"], +					single_packages: ["newlibrary.mine"], +				}, +			} +		`), +	).RunTest(t) + +	// Make sure that the library exports hidden API properties for use by the bootclasspath_fragment. +	library := result.Module("mynewlibrary", "android_common") +	info := result.ModuleProvider(library, hiddenAPIPropertyInfoProvider).(HiddenAPIPropertyInfo) +	android.AssertArrayString(t, "split packages", []string{"sdklibrary", "newlibrary"}, info.SplitPackages) +	android.AssertArrayString(t, "package prefixes", []string{"newlibrary.all.mine"}, info.PackagePrefixes) +	android.AssertArrayString(t, "single packages", []string{"newlibrary.mine"}, info.SinglePackages) +	for _, c := range HiddenAPIFlagFileCategories { +		expectedMaxTargetQPaths := []string(nil) +		if c.PropertyName == "max_target_q" { +			expectedMaxTargetQPaths = []string{"my-new-max-target-q.txt"} +		} +		android.AssertPathsRelativeToTopEquals(t, c.PropertyName, expectedMaxTargetQPaths, info.FlagFilesByCategory[c]) +	} + +	// Make sure that the signature-patterns.csv is passed all the appropriate package properties +	// from the bootclasspath_fragment and its contents. +	fragment := result.ModuleForTests("mybootclasspathfragment", "android_common") +	rule := fragment.Output("modular-hiddenapi/signature-patterns.csv") +	expectedCommand := strings.Join([]string{ +		"--split-package newlibrary", +		"--split-package sdklibrary", +		"--package-prefix newlibrary.all.mine", +		"--package-prefix sdklibrary.all.mine", +		"--single-package newlibrary.mine", +		"--single-package sdklibrary", +	}, " ") +	android.AssertStringDoesContain(t, "signature patterns command", rule.RuleParams.Command, expectedCommand) +} +  func TestBootclasspathFragment_Test(t *testing.T) {  	result := android.GroupFixturePreparers(  		prepareForTestWithBootclasspathFragment, |