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"],
|
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(
|
template.add_template(
|
||||||
"rust_code_gen",
|
"rust_code_gen",
|
||||||
match codegen_mode {
|
match codegen_mode {
|
||||||
CodegenMode::Production => include_str!("../../templates/rust_prod.template"),
|
|
||||||
CodegenMode::Test => include_str!("../../templates/rust_test.template"),
|
CodegenMode::Test => include_str!("../../templates/rust_test.template"),
|
||||||
CodegenMode::Exported => include_str!("../../templates/rust_exported.template"),
|
CodegenMode::Exported | CodegenMode::ForceReadOnly | CodegenMode::Production => {
|
||||||
CodegenMode::ForceReadOnly => todo!(),
|
include_str!("../../templates/rust.template")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
let contents = template.render("rust_code_gen", &context)?;
|
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 {
|
pub fn enabled_ro_exported() -> bool {
|
||||||
PROVIDER.enabled_ro_exported()
|
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) {
|
fn test_generate_rust_code(mode: CodegenMode) {
|
||||||
@@ -570,7 +648,7 @@ pub fn enabled_ro_exported() -> bool {
|
|||||||
CodegenMode::Production => PROD_EXPECTED,
|
CodegenMode::Production => PROD_EXPECTED,
|
||||||
CodegenMode::Test => TEST_EXPECTED,
|
CodegenMode::Test => TEST_EXPECTED,
|
||||||
CodegenMode::Exported => EXPORTED_EXPECTED,
|
CodegenMode::Exported => EXPORTED_EXPECTED,
|
||||||
codegen::CodegenMode::ForceReadOnly => todo!(),
|
CodegenMode::ForceReadOnly => FORCE_READ_ONLY_EXPECTED,
|
||||||
},
|
},
|
||||||
&String::from_utf8(generated.contents).unwrap()
|
&String::from_utf8(generated.contents).unwrap()
|
||||||
)
|
)
|
||||||
@@ -591,4 +669,9 @@ pub fn enabled_ro_exported() -> bool {
|
|||||||
fn test_generate_rust_code_for_exported() {
|
fn test_generate_rust_code_for_exported() {
|
||||||
test_generate_rust_code(CodegenMode::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