Add test for hiddenAPI index file generation
The index file and the metadata file both currently include duplicate entries due to them including both the <x> and <x>.impl libraries created by java_sdk_library in their inputs, plus including both source and prebuilt versions of the same named module. This change adds a test to illustrate that behavior. A follow up change will correct the problem and update the test accordingly. This change only adds a test for the index file because the metadata file depends on files from frameworks/base which makes it difficult to test. Bug 177317659 will fix that and allow the metadata file generation to be tested too. Bug: 178361284 Test: m nothing Change-Id: I33921d7267c9f4bb42726343d73f8a396d536aaa
This commit is contained in:
@@ -22,9 +22,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
android.RegisterSingletonType("hiddenapi", hiddenAPISingletonFactory)
|
RegisterHiddenApiSingletonComponents(android.InitRegistrationContext)
|
||||||
android.RegisterSingletonType("hiddenapi_index", hiddenAPIIndexSingletonFactory)
|
}
|
||||||
android.RegisterModuleType("hiddenapi_flags", hiddenAPIFlagsFactory)
|
|
||||||
|
func RegisterHiddenApiSingletonComponents(ctx android.RegistrationContext) {
|
||||||
|
ctx.RegisterSingletonType("hiddenapi", hiddenAPISingletonFactory)
|
||||||
|
ctx.RegisterSingletonType("hiddenapi_index", hiddenAPIIndexSingletonFactory)
|
||||||
|
ctx.RegisterModuleType("hiddenapi_flags", hiddenAPIFlagsFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
type hiddenAPISingletonPathsStruct struct {
|
type hiddenAPISingletonPathsStruct struct {
|
||||||
|
@@ -15,11 +15,12 @@
|
|||||||
package java
|
package java
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"android/soong/android"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"android/soong/android"
|
||||||
|
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ func testConfigWithBootJars(bp string, bootJars []string, prebuiltHiddenApiDir *
|
|||||||
|
|
||||||
func testContextWithHiddenAPI(config android.Config) *android.TestContext {
|
func testContextWithHiddenAPI(config android.Config) *android.TestContext {
|
||||||
ctx := testContext(config)
|
ctx := testContext(config)
|
||||||
ctx.RegisterSingletonType("hiddenapi", hiddenAPISingletonFactory)
|
RegisterHiddenApiSingletonComponents(ctx)
|
||||||
return ctx
|
return ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +65,7 @@ func TestHiddenAPISingleton(t *testing.T) {
|
|||||||
name: "foo",
|
name: "foo",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
compile_dex: true,
|
compile_dex: true,
|
||||||
}
|
}
|
||||||
`, []string{"platform:foo"}, nil)
|
`, []string{"platform:foo"}, nil)
|
||||||
|
|
||||||
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
||||||
@@ -75,6 +76,47 @@ func TestHiddenAPISingleton(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkRuleInputs(t *testing.T, expected string, hiddenAPIRule android.TestingBuildParams) {
|
||||||
|
actual := strings.TrimSpace(strings.Join(android.NormalizePathsForTesting(hiddenAPIRule.Implicits), "\n"))
|
||||||
|
expected = strings.TrimSpace(expected)
|
||||||
|
if actual != expected {
|
||||||
|
t.Errorf("Expected hiddenapi rule inputs:\n%s\nactual inputs:\n%s", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHiddenAPIIndexSingleton(t *testing.T) {
|
||||||
|
ctx, _ := testHiddenAPIBootJars(t, `
|
||||||
|
java_library {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
java_import {
|
||||||
|
name: "foo",
|
||||||
|
jars: ["a.jar"],
|
||||||
|
compile_dex: true,
|
||||||
|
prefer: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library {
|
||||||
|
name: "bar",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
}
|
||||||
|
`, []string{"platform:foo", "platform:bar"}, nil)
|
||||||
|
|
||||||
|
hiddenAPIIndex := ctx.SingletonForTests("hiddenapi_index")
|
||||||
|
indexRule := hiddenAPIIndex.Rule("singleton-merged-hiddenapi-index")
|
||||||
|
checkRuleInputs(t, `
|
||||||
|
.intermediates/bar.impl/android_common/hiddenapi/index.csv
|
||||||
|
.intermediates/bar/android_common/hiddenapi/index.csv
|
||||||
|
.intermediates/foo/android_common/hiddenapi/index.csv
|
||||||
|
.intermediates/prebuilt_foo/android_common/hiddenapi/index.csv
|
||||||
|
`,
|
||||||
|
indexRule)
|
||||||
|
}
|
||||||
|
|
||||||
func TestHiddenAPISingletonWithPrebuilt(t *testing.T) {
|
func TestHiddenAPISingletonWithPrebuilt(t *testing.T) {
|
||||||
ctx, _ := testHiddenAPIBootJars(t, `
|
ctx, _ := testHiddenAPIBootJars(t, `
|
||||||
java_import {
|
java_import {
|
||||||
@@ -98,14 +140,14 @@ func TestHiddenAPISingletonWithPrebuiltUseSource(t *testing.T) {
|
|||||||
name: "foo",
|
name: "foo",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
compile_dex: true,
|
compile_dex: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
java_import {
|
java_import {
|
||||||
name: "foo",
|
name: "foo",
|
||||||
jars: ["a.jar"],
|
jars: ["a.jar"],
|
||||||
compile_dex: true,
|
compile_dex: true,
|
||||||
prefer: false,
|
prefer: false,
|
||||||
}
|
}
|
||||||
`, []string{"platform:foo"}, nil)
|
`, []string{"platform:foo"}, nil)
|
||||||
|
|
||||||
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
||||||
@@ -127,14 +169,14 @@ func TestHiddenAPISingletonWithPrebuiltOverrideSource(t *testing.T) {
|
|||||||
name: "foo",
|
name: "foo",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
compile_dex: true,
|
compile_dex: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
java_import {
|
java_import {
|
||||||
name: "foo",
|
name: "foo",
|
||||||
jars: ["a.jar"],
|
jars: ["a.jar"],
|
||||||
compile_dex: true,
|
compile_dex: true,
|
||||||
prefer: true,
|
prefer: true,
|
||||||
}
|
}
|
||||||
`, []string{"platform:foo"}, nil)
|
`, []string{"platform:foo"}, nil)
|
||||||
|
|
||||||
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
hiddenAPI := ctx.SingletonForTests("hiddenapi")
|
||||||
|
Reference in New Issue
Block a user