diff --git a/tools/aconfig/src/protos.rs b/tools/aconfig/src/protos.rs index b93abcce24..d3b5b378b2 100644 --- a/tools/aconfig/src/protos.rs +++ b/tools/aconfig/src/protos.rs @@ -215,6 +215,17 @@ pub mod parsed_flag { super::tracepoint::verify_fields(tp)?; } ensure!(pf.bug.len() == 1, "bad flag declaration: exactly one bug required"); + if pf.is_fixed_read_only() { + ensure!( + pf.permission() == ProtoFlagPermission::READ_ONLY, + "bad parsed flag: flag is is_fixed_read_only but permission is not READ_ONLY" + ); + for tp in pf.trace.iter() { + ensure!(tp.permission() == ProtoFlagPermission::READ_ONLY, + "bad parsed flag: flag is is_fixed_read_only but a tracepoint's permission is not READ_ONLY" + ); + } + } Ok(()) } @@ -547,7 +558,7 @@ parsed_flag { description: "This is the description of the second flag." bug: "SOME_BUG" state: ENABLED - permission: READ_WRITE + permission: READ_ONLY trace { source: "flags.declarations" state: DISABLED @@ -556,7 +567,7 @@ parsed_flag { trace { source: "flags.values" state: ENABLED - permission: READ_WRITE + permission: READ_ONLY } is_fixed_read_only: true } @@ -570,14 +581,14 @@ parsed_flag { assert_eq!(second.description(), "This is the description of the second flag."); assert_eq!(second.bug, vec!["SOME_BUG"]); assert_eq!(second.state(), ProtoFlagState::ENABLED); - assert_eq!(second.permission(), ProtoFlagPermission::READ_WRITE); + assert_eq!(second.permission(), ProtoFlagPermission::READ_ONLY); assert_eq!(2, second.trace.len()); assert_eq!(second.trace[0].source(), "flags.declarations"); assert_eq!(second.trace[0].state(), ProtoFlagState::DISABLED); assert_eq!(second.trace[0].permission(), ProtoFlagPermission::READ_ONLY); assert_eq!(second.trace[1].source(), "flags.values"); assert_eq!(second.trace[1].state(), ProtoFlagState::ENABLED); - assert_eq!(second.trace[1].permission(), ProtoFlagPermission::READ_WRITE); + assert_eq!(second.trace[1].permission(), ProtoFlagPermission::READ_ONLY); assert!(second.is_fixed_read_only()); // valid input: empty diff --git a/tools/aconfig/tests/aconfig_prod_mode_test.rs b/tools/aconfig/tests/aconfig_prod_mode_test.rs index 708604be54..950c441c04 100644 --- a/tools/aconfig/tests/aconfig_prod_mode_test.rs +++ b/tools/aconfig/tests/aconfig_prod_mode_test.rs @@ -1,3 +1,4 @@ +#[cfg(not(feature = "cargo"))] #[test] fn test_flags() { assert!(!aconfig_test_rust_library::disabled_ro()); diff --git a/tools/aconfig/tests/aconfig_test_mode_test.rs b/tools/aconfig/tests/aconfig_test_mode_test.rs index 7d40a44348..3f56d2c75a 100644 --- a/tools/aconfig/tests/aconfig_test_mode_test.rs +++ b/tools/aconfig/tests/aconfig_test_mode_test.rs @@ -1,3 +1,4 @@ +#[cfg(not(feature = "cargo"))] #[test] fn test_flags() { assert!(!aconfig_test_rust_library::disabled_ro());