diff options
author | Bill Peckham <bpeckham@google.com> | 2021-01-08 09:34:44 -0800 |
---|---|---|
committer | Bill Peckham <bpeckham@google.com> | 2021-01-19 10:07:45 -0800 |
commit | bae4749de28b89a5702ed8cdeda1a390ad112e50 (patch) | |
tree | 35e2ec21b1e9ece53246ca1f1e5c2feab57abc75 /java/hiddenapi_singleton_test.go | |
parent | ad3421aacfac42bd4d2c907473eb943df94054ac (diff) |
Enable prebuilt hiddenapi CSV files.
By enabling these hiddenapi CSV files to be prebuilt, it
becomes possible to create a split build that supports
the hiddenapi encode dex step, but doesn't contain all
of the java sources needed to generate the CSV files.
Bug: 175048716
Test: m nothing
Test: new TestHiddenAPISingletonWithPrebuiltCsvFile
Test: local build without prebuilt hiddenapi
Test: local build with prebuilt hiddenapi
Change-Id: I805ea3ec05860d2df211a3985ec025bf36f0d775
Diffstat (limited to 'java/hiddenapi_singleton_test.go')
-rw-r--r-- | java/hiddenapi_singleton_test.go | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/java/hiddenapi_singleton_test.go b/java/hiddenapi_singleton_test.go index 955c73932..0f9ef5841 100644 --- a/java/hiddenapi_singleton_test.go +++ b/java/hiddenapi_singleton_test.go @@ -23,9 +23,10 @@ import ( "github.com/google/blueprint/proptools" ) -func testConfigWithBootJars(bp string, bootJars []string) android.Config { +func testConfigWithBootJars(bp string, bootJars []string, prebuiltHiddenApiDir *string) android.Config { config := testConfig(nil, bp, nil) config.TestProductVariables.BootJars = android.CreateTestConfiguredJarList(bootJars) + config.TestProductVariables.PrebuiltHiddenApiDir = prebuiltHiddenApiDir return config } @@ -44,8 +45,8 @@ func testHiddenAPIWithConfig(t *testing.T, config android.Config) *android.TestC return ctx } -func testHiddenAPIBootJars(t *testing.T, bp string, bootJars []string) (*android.TestContext, android.Config) { - config := testConfigWithBootJars(bp, bootJars) +func testHiddenAPIBootJars(t *testing.T, bp string, bootJars []string, prebuiltHiddenApiDir *string) (*android.TestContext, android.Config) { + config := testConfigWithBootJars(bp, bootJars, prebuiltHiddenApiDir) return testHiddenAPIWithConfig(t, config), config } @@ -64,7 +65,7 @@ func TestHiddenAPISingleton(t *testing.T) { srcs: ["a.java"], compile_dex: true, } - `, []string{":foo"}) + `, []string{":foo"}, nil) hiddenAPI := ctx.SingletonForTests("hiddenapi") hiddenapiRule := hiddenAPI.Rule("hiddenapi") @@ -81,7 +82,7 @@ func TestHiddenAPISingletonWithPrebuilt(t *testing.T) { jars: ["a.jar"], compile_dex: true, } - `, []string{":foo"}) + `, []string{":foo"}, nil) hiddenAPI := ctx.SingletonForTests("hiddenapi") hiddenapiRule := hiddenAPI.Rule("hiddenapi") @@ -105,7 +106,7 @@ func TestHiddenAPISingletonWithPrebuiltUseSource(t *testing.T) { compile_dex: true, prefer: false, } - `, []string{":foo"}) + `, []string{":foo"}, nil) hiddenAPI := ctx.SingletonForTests("hiddenapi") hiddenapiRule := hiddenAPI.Rule("hiddenapi") @@ -134,7 +135,7 @@ func TestHiddenAPISingletonWithPrebuiltOverrideSource(t *testing.T) { compile_dex: true, prefer: true, } - `, []string{":foo"}) + `, []string{":foo"}, nil) hiddenAPI := ctx.SingletonForTests("hiddenapi") hiddenapiRule := hiddenAPI.Rule("hiddenapi") @@ -217,3 +218,48 @@ func generateSdkDexPath(module string, unbundled bool) string { } return generateDexPath(module) } + +func TestHiddenAPISingletonWithPrebuiltCsvFile(t *testing.T) { + + // The idea behind this test is to ensure that when the build is + // confugured with a PrebuiltHiddenApiDir that the rules for the + // hiddenapi singleton copy the prebuilts to the typical output + // location, and then use that output location for the hiddenapi encode + // dex step. + + // Where to find the prebuilt hiddenapi files: + prebuiltHiddenApiDir := "path/to/prebuilt/hiddenapi" + + ctx, _ := testHiddenAPIBootJars(t, ` + java_import { + name: "foo", + jars: ["a.jar"], + compile_dex: true, + } + `, []string{":foo"}, &prebuiltHiddenApiDir) + + expectedCpInput := prebuiltHiddenApiDir + "/hiddenapi-flags.csv" + expectedCpOutput := buildDir + "/hiddenapi/hiddenapi-flags.csv" + expectedFlagsCsv := buildDir + "/hiddenapi/hiddenapi-flags.csv" + + foo := ctx.ModuleForTests("foo", "android_common") + + hiddenAPI := ctx.SingletonForTests("hiddenapi") + cpRule := hiddenAPI.Rule("Cp") + actualCpInput := cpRule.BuildParams.Input + actualCpOutput := cpRule.BuildParams.Output + encodeDexRule := foo.Rule("hiddenAPIEncodeDex") + actualFlagsCsv := encodeDexRule.BuildParams.Args["flagsCsv"] + + if actualCpInput.String() != expectedCpInput { + t.Errorf("Prebuilt hiddenapi cp rule input mismatch, actual: %s, expected: %s", actualCpInput, expectedCpInput) + } + + if actualCpOutput.String() != expectedCpOutput { + t.Errorf("Prebuilt hiddenapi cp rule output mismatch, actual: %s, expected: %s", actualCpOutput, expectedCpOutput) + } + + if actualFlagsCsv != expectedFlagsCsv { + t.Errorf("Prebuilt hiddenapi encode dex rule flags csv mismatch, actual: %s, expected: %s", actualFlagsCsv, expectedFlagsCsv) + } +} |