Merge "java_sdk_library: Use WriteFileRule for writing permissions.xml" into main
This commit is contained in:
@@ -7114,8 +7114,9 @@ func TestJavaSDKLibrary(t *testing.T) {
|
|||||||
"etc/permissions/foo.xml",
|
"etc/permissions/foo.xml",
|
||||||
})
|
})
|
||||||
// Permission XML should point to the activated path of impl jar of java_sdk_library
|
// Permission XML should point to the activated path of impl jar of java_sdk_library
|
||||||
sdkLibrary := ctx.ModuleForTests("foo.xml", "android_common_myapex").Rule("java_sdk_xml")
|
sdkLibrary := ctx.ModuleForTests("foo.xml", "android_common_myapex").Output("foo.xml")
|
||||||
ensureMatches(t, sdkLibrary.RuleParams.Command, `<library\\n\s+name=\\\"foo\\\"\\n\s+file=\\\"/apex/myapex/javalib/foo.jar\\\"`)
|
contents := android.ContentFromFileRuleForTests(t, ctx, sdkLibrary)
|
||||||
|
ensureMatches(t, contents, "<library\\n\\s+name=\\\"foo\\\"\\n\\s+file=\\\"/apex/myapex/javalib/foo.jar\\\"")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaSDKLibrary_WithinApex(t *testing.T) {
|
func TestJavaSDKLibrary_WithinApex(t *testing.T) {
|
||||||
|
@@ -3238,14 +3238,14 @@ func formattedOptionalAttribute(attrName string, value *string) string {
|
|||||||
if value == nil {
|
if value == nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(` %s=\"%s\"\n`, attrName, *value)
|
return fmt.Sprintf(" %s=\"%s\"\n", attrName, *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func formattedDependenciesAttribute(dependencies []string) string {
|
func formattedDependenciesAttribute(dependencies []string) string {
|
||||||
if dependencies == nil {
|
if dependencies == nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(` dependency=\"%s\"\n`, strings.Join(dependencies, ":"))
|
return fmt.Sprintf(" dependency=\"%s\"\n", strings.Join(dependencies, ":"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (module *sdkLibraryXml) permissionsContents(ctx android.ModuleContext) string {
|
func (module *sdkLibraryXml) permissionsContents(ctx android.ModuleContext) string {
|
||||||
@@ -3262,28 +3262,28 @@ func (module *sdkLibraryXml) permissionsContents(ctx android.ModuleContext) stri
|
|||||||
// similarly, min_device_sdk is only understood from T. So if a library is using that, we need to use the apex-library to make sure this library is not loaded before T
|
// similarly, min_device_sdk is only understood from T. So if a library is using that, we need to use the apex-library to make sure this library is not loaded before T
|
||||||
var libraryTag string
|
var libraryTag string
|
||||||
if module.properties.Min_device_sdk != nil {
|
if module.properties.Min_device_sdk != nil {
|
||||||
libraryTag = ` <apex-library\n`
|
libraryTag = " <apex-library\n"
|
||||||
} else {
|
} else {
|
||||||
libraryTag = ` <library\n`
|
libraryTag = " <library\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.Join([]string{
|
return strings.Join([]string{
|
||||||
`<?xml version=\"1.0\" encoding=\"utf-8\"?>\n`,
|
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
|
||||||
`<!-- Copyright (C) 2018 The Android Open Source Project\n`,
|
"<!-- Copyright (C) 2018 The Android Open Source Project\n",
|
||||||
`\n`,
|
"\n",
|
||||||
` Licensed under the Apache License, Version 2.0 (the \"License\");\n`,
|
" Licensed under the Apache License, Version 2.0 (the \"License\");\n",
|
||||||
` you may not use this file except in compliance with the License.\n`,
|
" you may not use this file except in compliance with the License.\n",
|
||||||
` You may obtain a copy of the License at\n`,
|
" You may obtain a copy of the License at\n",
|
||||||
`\n`,
|
"\n",
|
||||||
` http://www.apache.org/licenses/LICENSE-2.0\n`,
|
" http://www.apache.org/licenses/LICENSE-2.0\n",
|
||||||
`\n`,
|
"\n",
|
||||||
` Unless required by applicable law or agreed to in writing, software\n`,
|
" Unless required by applicable law or agreed to in writing, software\n",
|
||||||
` distributed under the License is distributed on an \"AS IS\" BASIS,\n`,
|
" distributed under the License is distributed on an \"AS IS\" BASIS,\n",
|
||||||
` WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n`,
|
" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
|
||||||
` See the License for the specific language governing permissions and\n`,
|
" See the License for the specific language governing permissions and\n",
|
||||||
` limitations under the License.\n`,
|
" limitations under the License.\n",
|
||||||
`-->\n`,
|
"-->\n",
|
||||||
`<permissions>\n`,
|
"<permissions>\n",
|
||||||
libraryTag,
|
libraryTag,
|
||||||
libNameAttr,
|
libNameAttr,
|
||||||
filePathAttr,
|
filePathAttr,
|
||||||
@@ -3292,8 +3292,9 @@ func (module *sdkLibraryXml) permissionsContents(ctx android.ModuleContext) stri
|
|||||||
minSdkAttr,
|
minSdkAttr,
|
||||||
maxSdkAttr,
|
maxSdkAttr,
|
||||||
dependenciesAttr,
|
dependenciesAttr,
|
||||||
` />\n`,
|
" />\n",
|
||||||
`</permissions>\n`}, "")
|
"</permissions>\n",
|
||||||
|
}, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (module *sdkLibraryXml) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
func (module *sdkLibraryXml) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
@@ -3305,12 +3306,7 @@ func (module *sdkLibraryXml) GenerateAndroidBuildActions(ctx android.ModuleConte
|
|||||||
xmlContent := module.permissionsContents(ctx)
|
xmlContent := module.permissionsContents(ctx)
|
||||||
|
|
||||||
module.outputFilePath = android.PathForModuleOut(ctx, libName+".xml").OutputPath
|
module.outputFilePath = android.PathForModuleOut(ctx, libName+".xml").OutputPath
|
||||||
rule := android.NewRuleBuilder(pctx, ctx)
|
android.WriteFileRuleVerbatim(ctx, module.outputFilePath, xmlContent)
|
||||||
rule.Command().
|
|
||||||
Text("/bin/bash -c \"echo -e '" + xmlContent + "'\" > ").
|
|
||||||
Output(module.outputFilePath)
|
|
||||||
|
|
||||||
rule.Build("java_sdk_xml", "Permission XML")
|
|
||||||
|
|
||||||
module.installDirPath = android.PathForModuleInstall(ctx, "etc", module.SubDir())
|
module.installDirPath = android.PathForModuleInstall(ctx, "etc", module.SubDir())
|
||||||
}
|
}
|
||||||
|
@@ -227,19 +227,21 @@ func TestJavaSdkLibrary_UpdatableLibrary(t *testing.T) {
|
|||||||
`)
|
`)
|
||||||
|
|
||||||
// test that updatability attributes are passed on correctly
|
// test that updatability attributes are passed on correctly
|
||||||
fooUpdatable := result.ModuleForTests("fooUpdatable.xml", "android_common").Rule("java_sdk_xml")
|
fooUpdatable := result.ModuleForTests("fooUpdatable.xml", "android_common").Output("fooUpdatable.xml")
|
||||||
android.AssertStringDoesContain(t, "fooUpdatable.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `on-bootclasspath-since=\"U\"`)
|
fooUpdatableContents := android.ContentFromFileRuleForTests(t, result.TestContext, fooUpdatable)
|
||||||
android.AssertStringDoesContain(t, "fooUpdatable.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `on-bootclasspath-before=\"V\"`)
|
android.AssertStringDoesContain(t, "fooUpdatable.xml contents", fooUpdatableContents, `on-bootclasspath-since="U"`)
|
||||||
android.AssertStringDoesContain(t, "fooUpdatable.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `min-device-sdk=\"W\"`)
|
android.AssertStringDoesContain(t, "fooUpdatable.xml contents", fooUpdatableContents, `on-bootclasspath-before="V"`)
|
||||||
android.AssertStringDoesContain(t, "fooUpdatable.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `max-device-sdk=\"X\"`)
|
android.AssertStringDoesContain(t, "fooUpdatable.xml contents", fooUpdatableContents, `min-device-sdk="W"`)
|
||||||
|
android.AssertStringDoesContain(t, "fooUpdatable.xml contents", fooUpdatableContents, `max-device-sdk="X"`)
|
||||||
|
|
||||||
// double check that updatability attributes are not written if they don't exist in the bp file
|
// double check that updatability attributes are not written if they don't exist in the bp file
|
||||||
// the permissions file for the foo library defined above
|
// the permissions file for the foo library defined above
|
||||||
fooPermissions := result.ModuleForTests("foo.xml", "android_common").Rule("java_sdk_xml")
|
fooPermissions := result.ModuleForTests("foo.xml", "android_common").Output("foo.xml")
|
||||||
android.AssertStringDoesNotContain(t, "foo.xml java_sdk_xml command", fooPermissions.RuleParams.Command, `on-bootclasspath-since`)
|
fooPermissionsContents := android.ContentFromFileRuleForTests(t, result.TestContext, fooPermissions)
|
||||||
android.AssertStringDoesNotContain(t, "foo.xml java_sdk_xml command", fooPermissions.RuleParams.Command, `on-bootclasspath-before`)
|
android.AssertStringDoesNotContain(t, "foo.xml contents", fooPermissionsContents, `on-bootclasspath-since`)
|
||||||
android.AssertStringDoesNotContain(t, "foo.xml java_sdk_xml command", fooPermissions.RuleParams.Command, `min-device-sdk`)
|
android.AssertStringDoesNotContain(t, "foo.xml contents", fooPermissionsContents, `on-bootclasspath-before`)
|
||||||
android.AssertStringDoesNotContain(t, "foo.xml java_sdk_xml command", fooPermissions.RuleParams.Command, `max-device-sdk`)
|
android.AssertStringDoesNotContain(t, "foo.xml contents", fooPermissionsContents, `min-device-sdk`)
|
||||||
|
android.AssertStringDoesNotContain(t, "foo.xml contents", fooPermissionsContents, `max-device-sdk`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaSdkLibrary_UpdatableLibrary_Validation_ValidVersion(t *testing.T) {
|
func TestJavaSdkLibrary_UpdatableLibrary_Validation_ValidVersion(t *testing.T) {
|
||||||
@@ -370,9 +372,10 @@ func TestJavaSdkLibrary_UpdatableLibrary_usesNewTag(t *testing.T) {
|
|||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
// test that updatability attributes are passed on correctly
|
// test that updatability attributes are passed on correctly
|
||||||
fooUpdatable := result.ModuleForTests("foo.xml", "android_common").Rule("java_sdk_xml")
|
fooUpdatable := result.ModuleForTests("foo.xml", "android_common").Output("foo.xml")
|
||||||
android.AssertStringDoesContain(t, "foo.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `<apex-library`)
|
fooUpdatableContents := android.ContentFromFileRuleForTests(t, result.TestContext, fooUpdatable)
|
||||||
android.AssertStringDoesNotContain(t, "foo.xml java_sdk_xml command", fooUpdatable.RuleParams.Command, `<library`)
|
android.AssertStringDoesContain(t, "foo.xml contents", fooUpdatableContents, `<apex-library`)
|
||||||
|
android.AssertStringDoesNotContain(t, "foo.xml contents", fooUpdatableContents, `<library`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaSdkLibrary_StubOrImplOnlyLibs(t *testing.T) {
|
func TestJavaSdkLibrary_StubOrImplOnlyLibs(t *testing.T) {
|
||||||
@@ -1707,9 +1710,9 @@ func TestSdkLibraryDependency(t *testing.T) {
|
|||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
barPermissions := result.ModuleForTests("bar.xml", "android_common").Rule("java_sdk_xml")
|
barPermissions := result.ModuleForTests("bar.xml", "android_common").Output("bar.xml")
|
||||||
|
barContents := android.ContentFromFileRuleForTests(t, result.TestContext, barPermissions)
|
||||||
android.AssertStringDoesContain(t, "bar.xml java_sdk_xml command", barPermissions.RuleParams.Command, `dependency=\"foo\"`)
|
android.AssertStringDoesContain(t, "bar.xml java_sdk_xml command", barContents, `dependency="foo"`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSdkLibraryExportableStubsLibrary(t *testing.T) {
|
func TestSdkLibraryExportableStubsLibrary(t *testing.T) {
|
||||||
|
Reference in New Issue
Block a user