Merge "aconfig: add ForceReadOnly mode to aconfig rust codegen" into main
This commit is contained in:
@@ -289,3 +289,21 @@ rust_test {
|
||||
],
|
||||
test_suites: ["general-tests"],
|
||||
}
|
||||
|
||||
rust_aconfig_library {
|
||||
name: "libaconfig_test_rust_library_with_force_read_only_mode",
|
||||
crate_name: "aconfig_test_rust_library",
|
||||
aconfig_declarations: "aconfig.test.flags",
|
||||
mode: "force-read-only",
|
||||
}
|
||||
|
||||
rust_test {
|
||||
name: "aconfig.force_read_only_mode.test.rust",
|
||||
srcs: [
|
||||
"tests/aconfig_force_read_only_mode_test.rs"
|
||||
],
|
||||
rustlibs: [
|
||||
"libaconfig_test_rust_library_with_force_read_only_mode",
|
||||
],
|
||||
test_suites: ["general-tests"],
|
||||
}
|
||||
|
@@ -44,10 +44,10 @@ where
|
||||
template.add_template(
|
||||
"rust_code_gen",
|
||||
match codegen_mode {
|
||||
CodegenMode::Production => include_str!("../../templates/rust_prod.template"),
|
||||
CodegenMode::Test => include_str!("../../templates/rust_test.template"),
|
||||
CodegenMode::Exported => include_str!("../../templates/rust_exported.template"),
|
||||
CodegenMode::ForceReadOnly => todo!(),
|
||||
CodegenMode::Exported | CodegenMode::ForceReadOnly | CodegenMode::Production => {
|
||||
include_str!("../../templates/rust.template")
|
||||
}
|
||||
},
|
||||
)?;
|
||||
let contents = template.render("rust_code_gen", &context)?;
|
||||
@@ -553,6 +553,84 @@ pub fn enabled_fixed_ro_exported() -> bool {
|
||||
pub fn enabled_ro_exported() -> bool {
|
||||
PROVIDER.enabled_ro_exported()
|
||||
}
|
||||
"#;
|
||||
|
||||
const FORCE_READ_ONLY_EXPECTED: &str = r#"
|
||||
//! codegenerated rust flag lib
|
||||
|
||||
/// flag provider
|
||||
pub struct FlagProvider;
|
||||
|
||||
impl FlagProvider {
|
||||
/// query flag disabled_ro
|
||||
pub fn disabled_ro(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag disabled_rw
|
||||
pub fn disabled_rw(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag disabled_rw_in_other_namespace
|
||||
pub fn disabled_rw_in_other_namespace(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag enabled_fixed_ro
|
||||
pub fn enabled_fixed_ro(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_ro
|
||||
pub fn enabled_ro(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
pub fn enabled_rw(&self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
/// flag provider
|
||||
pub static PROVIDER: FlagProvider = FlagProvider;
|
||||
|
||||
/// query flag disabled_ro
|
||||
#[inline(always)]
|
||||
pub fn disabled_ro() -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag disabled_rw
|
||||
#[inline(always)]
|
||||
pub fn disabled_rw() -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag disabled_rw_in_other_namespace
|
||||
#[inline(always)]
|
||||
pub fn disabled_rw_in_other_namespace() -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// query flag enabled_fixed_ro
|
||||
#[inline(always)]
|
||||
pub fn enabled_fixed_ro() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_ro
|
||||
#[inline(always)]
|
||||
pub fn enabled_ro() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
#[inline(always)]
|
||||
pub fn enabled_rw() -> bool {
|
||||
true
|
||||
}
|
||||
"#;
|
||||
|
||||
fn test_generate_rust_code(mode: CodegenMode) {
|
||||
@@ -570,7 +648,7 @@ pub fn enabled_ro_exported() -> bool {
|
||||
CodegenMode::Production => PROD_EXPECTED,
|
||||
CodegenMode::Test => TEST_EXPECTED,
|
||||
CodegenMode::Exported => EXPORTED_EXPECTED,
|
||||
codegen::CodegenMode::ForceReadOnly => todo!(),
|
||||
CodegenMode::ForceReadOnly => FORCE_READ_ONLY_EXPECTED,
|
||||
},
|
||||
&String::from_utf8(generated.contents).unwrap()
|
||||
)
|
||||
@@ -591,4 +669,9 @@ pub fn enabled_ro_exported() -> bool {
|
||||
fn test_generate_rust_code_for_exported() {
|
||||
test_generate_rust_code(CodegenMode::Exported);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_rust_code_for_force_read_only() {
|
||||
test_generate_rust_code(CodegenMode::ForceReadOnly);
|
||||
}
|
||||
}
|
||||
|
@@ -1,35 +0,0 @@
|
||||
//! codegenerated rust flag lib
|
||||
|
||||
/// flag provider
|
||||
pub struct FlagProvider;
|
||||
|
||||
lazy_static::lazy_static! \{
|
||||
{{ for flag in template_flags }}
|
||||
/// flag value cache for {flag.name}
|
||||
static ref CACHED_{flag.name}: bool = flags_rust::GetServerConfigurableFlag(
|
||||
"aconfig_flags.{flag.device_config_namespace}",
|
||||
"{flag.device_config_flag}",
|
||||
"false") == "true";
|
||||
{{ endfor }}
|
||||
}
|
||||
|
||||
impl FlagProvider \{
|
||||
{{ for flag in template_flags }}
|
||||
/// query flag {flag.name}
|
||||
pub fn {flag.name}(&self) -> bool \{
|
||||
*CACHED_{flag.name}
|
||||
}
|
||||
{{ endfor }}
|
||||
|
||||
}
|
||||
|
||||
/// flag provider
|
||||
pub static PROVIDER: FlagProvider = FlagProvider;
|
||||
|
||||
{{ for flag in template_flags }}
|
||||
/// query flag {flag.name}
|
||||
#[inline(always)]
|
||||
pub fn {flag.name}() -> bool \{
|
||||
PROVIDER.{flag.name}()
|
||||
}
|
||||
{{ endfor }}
|
10
tools/aconfig/tests/aconfig_force_read_only_mode_test.rs
Normal file
10
tools/aconfig/tests/aconfig_force_read_only_mode_test.rs
Normal file
@@ -0,0 +1,10 @@
|
||||
#[cfg(not(feature = "cargo"))]
|
||||
#[test]
|
||||
fn test_flags() {
|
||||
assert!(!aconfig_test_rust_library::disabled_ro());
|
||||
assert!(!aconfig_test_rust_library::disabled_rw());
|
||||
assert!(!aconfig_test_rust_library::disabled_rw_in_other_namespace());
|
||||
assert!(aconfig_test_rust_library::enabled_fixed_ro());
|
||||
assert!(aconfig_test_rust_library::enabled_ro());
|
||||
assert!(aconfig_test_rust_library::enabled_rw());
|
||||
}
|
Reference in New Issue
Block a user