about summary refs log tree commit diff
diff options
context:
space:
mode:
authoronur-ozkan <work@onurozkan.dev>2024-02-29 18:18:38 +0300
committeronur-ozkan <work@onurozkan.dev>2024-02-29 18:18:38 +0300
commitc36f4934e03d4a844d0066bb7645760f8636d449 (patch)
tree863552ba035a9c3412cd42abd6a621c9d16568cc
parent83bbb551e85153b779d5b759c9b4e6bcdbaeee04 (diff)
downloadrust-c36f4934e03d4a844d0066bb7645760f8636d449.tar.gz
rust-c36f4934e03d4a844d0066bb7645760f8636d449.zip
add unit tests on unknown fields
Signed-off-by: onur-ozkan <work@onurozkan.dev>
-rw-r--r--src/bootstrap/src/core/config/config.rs2
-rw-r--r--src/bootstrap/src/core/config/tests.rs19
2 files changed, 19 insertions, 2 deletions
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index 24a085ab400..f04857ac2b3 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -618,7 +618,7 @@ pub(crate) struct TomlConfig {
 #[derive(Deserialize, Default)]
 pub(crate) struct ChangeIdWrapper {
     #[serde(alias = "change-id")]
-    inner: Option<usize>,
+    pub(crate) inner: Option<usize>,
 }
 
 /// Describes how to handle conflicts in merging two [`TomlConfig`]
diff --git a/src/bootstrap/src/core/config/tests.rs b/src/bootstrap/src/core/config/tests.rs
index 6ac573c68df..93ba5f4120a 100644
--- a/src/bootstrap/src/core/config/tests.rs
+++ b/src/bootstrap/src/core/config/tests.rs
@@ -1,4 +1,4 @@
-use super::{flags::Flags, Config};
+use super::{flags::Flags, ChangeIdWrapper, Config};
 use crate::core::config::{LldMode, TomlConfig};
 
 use clap::CommandFactory;
@@ -237,3 +237,20 @@ fn rust_lld() {
     assert!(matches!(parse("rust.use-lld = true").lld_mode, LldMode::External));
     assert!(matches!(parse("rust.use-lld = false").lld_mode, LldMode::Unused));
 }
+
+#[test]
+#[should_panic]
+fn parse_config_with_unknown_field() {
+    parse("unknown-key = 1");
+}
+
+#[test]
+fn parse_change_id_with_unknown_field() {
+    let config = r#"
+        change-id = 3461
+        unknown-key = 1
+    "#;
+
+    let change_id_wrapper: ChangeIdWrapper = toml::from_str(config).unwrap();
+    assert_eq!(change_id_wrapper.inner, Some(3461));
+}