From dea7a649acb4f4644c45ecadd5364f176417d48f Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Tue, 28 Mar 2023 11:30:50 +0000 Subject: [PATCH] Add tests for custom canned_fs_config. There are no tests to verify the generated action for the canned fs config entries, so add some. Also update the prop's docstring to reflect the actual logic. Bug: 275209284 Fixes: 275280970 Test: soong tests Change-Id: I37f2a8640bf4c307068a77db7a635c9bbeb9f38f --- apex/apex.go | 13 +++++++------ apex/apex_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index 1f700c6d8..2977f35cd 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -103,12 +103,13 @@ type apexBundleProperties struct { // to avoid mistakes. When set as true, no force-labelling. Use_file_contexts_as_is *bool - // Path to the canned fs config file for customizing file's uid/gid/mod/capabilities. The - // format is / [capabilities=0x], where path_or_glob is a - // path or glob pattern for a file or set of files, uid/gid are numerial values of user ID - // and group ID, mode is octal value for the file mode, and cap is hexadecimal value for the - // capability. If this property is not set, or a file is missing in the file, default config - // is used. + // Path to the canned fs config file for customizing file's + // uid/gid/mod/capabilities. The content of this file is appended to the + // default config, so that the custom entries are preferred. The format is + // / [capabilities=0x], where + // path_or_glob is a path or glob pattern for a file or set of files, + // uid/gid are numerial values of user ID and group ID, mode is octal value + // for the file mode, and cap is hexadecimal value for the capability. Canned_fs_config *string `android:"path"` ApexNativeDependencies diff --git a/apex/apex_test.go b/apex/apex_test.go index c9665a4b8..05c888abe 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -10105,3 +10105,45 @@ func TestTrimmedApex(t *testing.T) { android.AssertStringDoesContain(t, "missing lib to trim", libs_to_trim, "libbar") android.AssertStringDoesNotContain(t, "unexpected libs in the libs to trim", libs_to_trim, "libbaz") } + +func TestCannedFsConfig(t *testing.T) { + ctx := testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + updatable: false, + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + }`) + mod := ctx.ModuleForTests("myapex", "android_common_myapex_image") + generateFsRule := mod.Rule("generateFsConfig") + cmd := generateFsRule.RuleParams.Command + + ensureContains(t, cmd, `( echo '/ 1000 1000 0755'; echo '/apex_manifest.json 1000 1000 0644'; echo '/apex_manifest.pb 1000 1000 0644'; ) >`) +} + +func TestCannedFsConfig_HasCustomConfig(t *testing.T) { + ctx := testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + canned_fs_config: "my_config", + updatable: false, + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + }`) + mod := ctx.ModuleForTests("myapex", "android_common_myapex_image") + generateFsRule := mod.Rule("generateFsConfig") + cmd := generateFsRule.RuleParams.Command + + // Ensure that canned_fs_config has "cat my_config" at the end + ensureContains(t, cmd, `( echo '/ 1000 1000 0755'; echo '/apex_manifest.json 1000 1000 0644'; echo '/apex_manifest.pb 1000 1000 0644'; cat my_config ) >`) +}