aconfig: add dump --format=textproto
Teach `aconfig dump` to print its as text protobuf.
Bug: 288713733
Test: atest aconfig.test aconfig.test.java
Change-Id: Id31ce53226162a563fbe2d4841a8f6cf96c22436
diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs
index bd5b49c..58831cc 100644
--- a/tools/aconfig/src/commands.rs
+++ b/tools/aconfig/src/commands.rs
@@ -203,6 +203,7 @@
Text,
Debug,
Protobuf,
+ Textproto,
}
pub fn dump_parsed_flags(mut input: Vec<Input>, format: DumpFormat) -> Result<Vec<u8>> {
@@ -234,6 +235,10 @@
DumpFormat::Protobuf => {
parsed_flags.write_to_vec(&mut output)?;
}
+ DumpFormat::Textproto => {
+ let s = protobuf::text_format::print_to_string_pretty(&parsed_flags);
+ output.extend_from_slice(s.as_bytes());
+ }
}
Ok(output)
}
@@ -314,88 +319,12 @@
#[test]
fn test_dump_protobuf_format() {
- let text_proto = r#"
-parsed_flag {
- package: "com.android.aconfig.test"
- name: "disabled_ro"
- namespace: "aconfig_test"
- description: "This flag is DISABLED + READ_ONLY"
- state: DISABLED
- permission: READ_ONLY
- trace {
- source: "tests/test.aconfig"
- state: DISABLED
- permission: READ_WRITE
- }
- trace {
- source: "tests/first.values"
- state: DISABLED
- permission: READ_ONLY
- }
- bug: "123"
-}
-parsed_flag {
- package: "com.android.aconfig.test"
- name: "disabled_rw"
- namespace: "aconfig_test"
- description: "This flag is DISABLED + READ_WRITE"
- state: DISABLED
- permission: READ_WRITE
- trace {
- source: "tests/test.aconfig"
- state: DISABLED
- permission: READ_WRITE
- }
- bug: "456"
-}
-parsed_flag {
- package: "com.android.aconfig.test"
- name: "enabled_ro"
- namespace: "aconfig_test"
- description: "This flag is ENABLED + READ_ONLY"
- state: ENABLED
- permission: READ_ONLY
- trace {
- source: "tests/test.aconfig"
- state: DISABLED
- permission: READ_WRITE
- }
- trace {
- source: "tests/first.values"
- state: DISABLED
- permission: READ_WRITE
- }
- trace {
- source: "tests/second.values"
- state: ENABLED
- permission: READ_ONLY
- }
- bug: "789"
- bug: "abc"
-}
-parsed_flag {
- package: "com.android.aconfig.test"
- name: "enabled_rw"
- namespace: "aconfig_test"
- description: "This flag is ENABLED + READ_WRITE"
- state: ENABLED
- permission: READ_WRITE
- trace {
- source: "tests/test.aconfig"
- state: DISABLED
- permission: READ_WRITE
- }
- trace {
- source: "tests/first.values"
- state: ENABLED
- permission: READ_WRITE
- }
-}
-"#;
- let expected = protobuf::text_format::parse_from_str::<ProtoParsedFlags>(text_proto)
- .unwrap()
- .write_to_bytes()
- .unwrap();
+ let expected = protobuf::text_format::parse_from_str::<ProtoParsedFlags>(
+ crate::test::TEST_FLAGS_TEXTPROTO,
+ )
+ .unwrap()
+ .write_to_bytes()
+ .unwrap();
let input = parse_test_flags_as_input();
let actual = dump_parsed_flags(vec![input], DumpFormat::Protobuf).unwrap();
@@ -403,6 +332,14 @@
assert_eq!(expected, actual);
}
+ #[test]
+ fn test_dump_textproto_format() {
+ let input = parse_test_flags_as_input();
+ let bytes = dump_parsed_flags(vec![input], DumpFormat::Textproto).unwrap();
+ let text = std::str::from_utf8(&bytes).unwrap();
+ assert_eq!(crate::test::TEST_FLAGS_TEXTPROTO.trim(), text.trim());
+ }
+
fn parse_test_flags_as_input() -> Input {
let parsed_flags = crate::test::parse_test_flags();
let binary_proto = parsed_flags.write_to_bytes().unwrap();
diff --git a/tools/aconfig/src/test.rs b/tools/aconfig/src/test.rs
index abe9015..04bbe28 100644
--- a/tools/aconfig/src/test.rs
+++ b/tools/aconfig/src/test.rs
@@ -22,6 +22,85 @@
pub const TEST_PACKAGE: &str = "com.android.aconfig.test";
+ pub const TEST_FLAGS_TEXTPROTO: &str = r#"
+parsed_flag {
+ package: "com.android.aconfig.test"
+ name: "disabled_ro"
+ namespace: "aconfig_test"
+ description: "This flag is DISABLED + READ_ONLY"
+ bug: "123"
+ state: DISABLED
+ permission: READ_ONLY
+ trace {
+ source: "tests/test.aconfig"
+ state: DISABLED
+ permission: READ_WRITE
+ }
+ trace {
+ source: "tests/first.values"
+ state: DISABLED
+ permission: READ_ONLY
+ }
+}
+parsed_flag {
+ package: "com.android.aconfig.test"
+ name: "disabled_rw"
+ namespace: "aconfig_test"
+ description: "This flag is DISABLED + READ_WRITE"
+ bug: "456"
+ state: DISABLED
+ permission: READ_WRITE
+ trace {
+ source: "tests/test.aconfig"
+ state: DISABLED
+ permission: READ_WRITE
+ }
+}
+parsed_flag {
+ package: "com.android.aconfig.test"
+ name: "enabled_ro"
+ namespace: "aconfig_test"
+ description: "This flag is ENABLED + READ_ONLY"
+ bug: "789"
+ bug: "abc"
+ state: ENABLED
+ permission: READ_ONLY
+ trace {
+ source: "tests/test.aconfig"
+ state: DISABLED
+ permission: READ_WRITE
+ }
+ trace {
+ source: "tests/first.values"
+ state: DISABLED
+ permission: READ_WRITE
+ }
+ trace {
+ source: "tests/second.values"
+ state: ENABLED
+ permission: READ_ONLY
+ }
+}
+parsed_flag {
+ package: "com.android.aconfig.test"
+ name: "enabled_rw"
+ namespace: "aconfig_test"
+ description: "This flag is ENABLED + READ_WRITE"
+ state: ENABLED
+ permission: READ_WRITE
+ trace {
+ source: "tests/test.aconfig"
+ state: DISABLED
+ permission: READ_WRITE
+ }
+ trace {
+ source: "tests/first.values"
+ state: ENABLED
+ permission: READ_WRITE
+ }
+}
+"#;
+
pub fn parse_test_flags() -> ProtoParsedFlags {
let bytes = crate::commands::parse_flags(
"com.android.aconfig.test",