refactor(firmware): centralize configuration and diagnostics
This commit is contained in:
1 parent
7048ed89d0
commit
387fdaad23
140 files changed
+6891
-4541
No files matched your search
@@ -0,0 +1,10 @@
|
||||
use kaptan_config_derive::ConfigEnum;
|
||||
|
||||
#[derive(ConfigEnum)]
|
||||
#[repr(u8)]
|
||||
enum ImplicitDiscriminant {
|
||||
First = 1,
|
||||
Second,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: ConfigEnum variants require explicit u8 discriminants
|
||||
--> tests/ui/config_enum_implicit_discriminant.rs:7:5
|
||||
|
|
||||
7 | Second,
|
||||
| ^^^^^^
|
||||
@@ -0,0 +1,10 @@
|
||||
use kaptan_config_derive::ConfigEnum;
|
||||
|
||||
#[derive(ConfigEnum)]
|
||||
#[repr(u8)]
|
||||
enum LabelWithNul {
|
||||
#[config_enum(label = "invalid\0label")]
|
||||
Value = 1,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: ConfigEnum display labels must be non-empty text without NUL bytes
|
||||
--> tests/ui/config_enum_label_nul.rs:6:27
|
||||
|
|
||||
6 | #[config_enum(label = "invalid\0label")]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,10 @@
|
||||
use kaptan_config_derive::ConfigEnum;
|
||||
|
||||
#[derive(ConfigEnum)]
|
||||
#[repr(u8)]
|
||||
enum LabelTooManyBytes {
|
||||
#[config_enum(label = "şşşşşşşşşşşşşşşşş")]
|
||||
Value = 1,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: ConfigEnum display label exceeds the 32-byte wire limit
|
||||
--> tests/ui/config_enum_label_too_many_bytes.rs:6:27
|
||||
|
|
||||
6 | #[config_enum(label = "şşşşşşşşşşşşşşşşş")]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,8 @@
|
||||
use kaptan_config_derive::ConfigEnum;
|
||||
|
||||
#[derive(ConfigEnum)]
|
||||
enum MissingRepresentation {
|
||||
First = 1,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: ConfigEnum requires exactly #[repr(u8)]
|
||||
--> tests/ui/config_enum_missing_repr.rs:4:6
|
||||
|
|
||||
4 | enum MissingRepresentation {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,9 @@
|
||||
use kaptan_config_derive::ConfigEnum;
|
||||
|
||||
#[derive(ConfigEnum)]
|
||||
#[repr(u8)]
|
||||
enum Payload {
|
||||
Value(u8) = 1,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: ConfigEnum variants cannot contain fields
|
||||
--> tests/ui/config_enum_payload.rs:6:10
|
||||
|
|
||||
6 | Value(u8) = 1,
|
||||
| ^^^^
|
||||
@@ -1,9 +0,0 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
struct DefaultBelowMinimum {
|
||||
#[config(id = 1, key = "value", unit = "count", default = 1, range(min = 2, max = 3))]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -1,5 +0,0 @@
|
||||
error: configuration default is below its declared minimum
|
||||
--> tests/ui/default_below_minimum.rs:5:63
|
||||
|
|
||||
5 | #[config(id = 1, key = "value", unit = "count", default = 1, range(min = 2, max = 3))]
|
||||
| ^
|
||||
@@ -1,9 +0,0 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
struct NonFiniteDefault {
|
||||
#[config(id = 1, key = "value", unit = "ratio", default = 1e100, finite)]
|
||||
value: f32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -1,5 +0,0 @@
|
||||
error: configuration default violates finite
|
||||
--> tests/ui/default_violates_finite.rs:5:63
|
||||
|
|
||||
5 | #[config(id = 1, key = "value", unit = "ratio", default = 1e100, finite)]
|
||||
| ^^^^^
|
||||
@@ -1,9 +0,0 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
struct ZeroDefault {
|
||||
#[config(id = 1, key = "value", unit = "count", default = 0, nonzero)]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -1,5 +0,0 @@
|
||||
error: configuration default violates nonzero
|
||||
--> tests/ui/default_violates_nonzero.rs:5:63
|
||||
|
|
||||
5 | #[config(id = 1, key = "value", unit = "count", default = 0, nonzero)]
|
||||
| ^
|
||||
@@ -0,0 +1,13 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
struct DisplayKeyTooLong {
|
||||
#[config(
|
||||
id = 1,
|
||||
key = "configuration.display.key.with.more.than.forty.eight.bytes",
|
||||
unit = "count"
|
||||
)]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: configuration display key exceeds the 48-byte wire limit
|
||||
--> tests/ui/display_key_too_long.rs:7:15
|
||||
|
|
||||
7 | key = "configuration.display.key.with.more.than.forty.eight.bytes",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,11 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
struct DuplicateDisplayKey {
|
||||
#[config(id = 1, key = "duplicate.key", unit = "count")]
|
||||
first: u32,
|
||||
#[config(id = 2, key = "duplicate.key", unit = "count")]
|
||||
second: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: duplicate configuration display key
|
||||
--> tests/ui/duplicate_display_key.rs:7:28
|
||||
|
|
||||
7 | #[config(id = 2, key = "duplicate.key", unit = "count")]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@@ -1,6 +1,6 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct DuplicateId {
|
||||
#[config(id = 7, nonzero)]
|
||||
first: u32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct DuplicateRange {
|
||||
#[config(id = 7, range(min = 1), range(min = 2))]
|
||||
value: u32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct Empty {}
|
||||
|
||||
fn main() {}
|
||||
@@ -1,4 +1,4 @@
|
||||
error: ConfigValidate requires at least one configured field or section
|
||||
error: Config requires at least one field
|
||||
--> tests/ui/empty.rs:4:8
|
||||
|
|
||||
4 | struct Empty {}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
struct PrimitiveEnumMarker {
|
||||
#[config(enum, id = 1, key = "mode", unit = "mode")]
|
||||
mode: u8,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: config(enum) requires a ConfigEnum-derived enum type
|
||||
--> tests/ui/enum_marker_on_primitive.rs:6:11
|
||||
|
|
||||
6 | mode: u8,
|
||||
| ^^
|
||||
@@ -0,0 +1,15 @@
|
||||
use kaptan_config_derive::{Config, ConfigEnum};
|
||||
|
||||
#[derive(Clone, Copy, ConfigEnum)]
|
||||
#[repr(u8)]
|
||||
enum Mode {
|
||||
Safe = 1,
|
||||
}
|
||||
|
||||
#[derive(Config)]
|
||||
struct MissingEnumMarker {
|
||||
#[config(id = 1, key = "mode", unit = "mode")]
|
||||
mode: Mode,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: non-primitive configuration fields require config(enum)
|
||||
--> tests/ui/missing_enum_marker.rs:12:11
|
||||
|
|
||||
12 | mode: Mode,
|
||||
| ^^^^
|
||||
@@ -1,6 +1,6 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct MissingId {
|
||||
#[config(nonzero)]
|
||||
value: u32,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
error: validated configuration fields require config(id = N)
|
||||
error: scalar configuration fields require config(id = N)
|
||||
--> tests/ui/missing_id.rs:6:5
|
||||
|
|
||||
6 | value: u32,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct MissingMetadata {
|
||||
#[config(id = 7, unit = "count", default = 1, range(min = 0, max = 10))]
|
||||
#[config(id = 7, unit = "count", range(min = 0, max = 10))]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct MixedSectionAndScalar {
|
||||
#[config(section)]
|
||||
child: u32,
|
||||
#[config(id = 1, key = "scalar", unit = "count", default = 1, range(min = 0, max = 2))]
|
||||
#[config(id = 1, key = "scalar", unit = "count", range(min = 0, max = 2))]
|
||||
scalar: u32,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: ConfigValidate records must contain either scalar config fields or config(section) fields exclusively
|
||||
--> tests/ui/mixed_section_scalar.rs:6:5
|
||||
error: Config records must contain either scalar fields or child configuration records exclusively
|
||||
--> tests/ui/mixed_section_scalar.rs:5:5
|
||||
|
|
||||
6 | child: u32,
|
||||
5 | child: u32,
|
||||
| ^^^^^
|
||||
@@ -1,8 +1,8 @@
|
||||
use kaptan_config_derive::ConfigValidate;
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(ConfigValidate)]
|
||||
#[derive(Config)]
|
||||
struct InvalidRange {
|
||||
#[config(id = 1, key = "value", unit = "count", default = 2, range(min = 3, max = 1))]
|
||||
#[config(id = 1, key = "value", unit = "count", range(min = 3, max = 1))]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
struct UnitTooLong {
|
||||
#[config(id = 1, key = "value", unit = "seventeen_bytes___")]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: configuration unit exceeds the 16-byte wire limit
|
||||
--> tests/ui/unit_too_long.rs:5:44
|
||||
|
|
||||
5 | #[config(id = 1, key = "value", unit = "seventeen_bytes___")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,9 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
struct UnsupportedDefault {
|
||||
#[config(id = 1, key = "value", unit = "count", default = 1)]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: supported field config rules are id, key, unit, enum, finite, nonzero, and range
|
||||
--> tests/ui/unsupported_default.rs:5:53
|
||||
|
|
||||
5 | #[config(id = 1, key = "value", unit = "count", default = 1)]
|
||||
| ^^^^^^^
|
||||
@@ -0,0 +1,10 @@
|
||||
use kaptan_config_derive::Config;
|
||||
|
||||
#[derive(Config)]
|
||||
#[config(external_defaults)]
|
||||
struct UnsupportedExternalDefaults {
|
||||
#[config(id = 1, key = "value", unit = "count")]
|
||||
value: u32,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
error: struct config options are crate = path and post = path
|
||||
--> tests/ui/unsupported_external_defaults.rs:4:10
|
||||
|
|
||||
4 | #[config(external_defaults)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
Reference in new issue
Block a user