aboutsummaryrefslogtreecommitdiff
path: root/alacritty_config_derive/tests
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2022-08-31 22:48:38 +0000
committerGitHub <noreply@github.com>2022-09-01 01:48:38 +0300
commit4ddb608563d985060d69594d1004550a680ae3bd (patch)
tree0b02a330b3e59300cff80a147f3c1bdab7f9ea57 /alacritty_config_derive/tests
parent18f9c2793924aec91c80a69ccb45f529adaffae5 (diff)
downloadalacritty-4ddb608563d985060d69594d1004550a680ae3bd.tar.gz
alacritty-4ddb608563d985060d69594d1004550a680ae3bd.zip
Add IPC config subcommand
This patch adds a new mechanism for changing configuration options without editing the configuration file, by sending options to running instances through `alacritty msg`. Each window will load Alacritty's configuration file by default and then accept IPC messages for config updates using the `alacritty msg config` subcommand. By default all windows will be updated, individual windows can be addressed using `alacritty msg config --window-id "$ALACRITTY_WINDOW_ID"`. Each option will replace the config's current value and cannot be reset until Alacritty is restarted or the option is overwritten with a new value. Configuration options are passed in the format `field.subfield=value`, where `value` is interpreted as yaml. Closes #472.
Diffstat (limited to 'alacritty_config_derive/tests')
-rw-r--r--alacritty_config_derive/tests/config.rs38
1 files changed, 37 insertions, 1 deletions
diff --git a/alacritty_config_derive/tests/config.rs b/alacritty_config_derive/tests/config.rs
index 4828b822..bd449ff8 100644
--- a/alacritty_config_derive/tests/config.rs
+++ b/alacritty_config_derive/tests/config.rs
@@ -1,8 +1,10 @@
use std::sync::{Arc, Mutex};
use log::{Level, Log, Metadata, Record};
+use serde::Deserialize;
-use alacritty_config_derive::ConfigDeserialize;
+use alacritty_config::SerdeReplace as _;
+use alacritty_config_derive::{ConfigDeserialize, SerdeReplace};
#[derive(ConfigDeserialize, Debug, PartialEq, Eq)]
enum TestEnum {
@@ -63,6 +65,7 @@ struct Test2<T: Default> {
field3: usize,
#[config(alias = "aliased")]
field4: u8,
+ newtype: NewType,
}
#[derive(ConfigDeserialize, Default)]
@@ -70,6 +73,9 @@ struct Test3 {
flatty: usize,
}
+#[derive(SerdeReplace, Deserialize, Default, PartialEq, Eq, Debug)]
+struct NewType(usize);
+
#[test]
fn config_deserialize() {
let logger = unsafe {
@@ -159,3 +165,33 @@ impl Log for Logger {
fn flush(&self) {}
}
+
+#[test]
+fn field_replacement() {
+ let mut test = Test::default();
+
+ let value = serde_yaml::to_value(13).unwrap();
+ test.replace("nesting.field2", value).unwrap();
+
+ assert_eq!(test.nesting.field2, Some(13));
+}
+
+#[test]
+fn replace_derive() {
+ let mut test = Test::default();
+
+ let value = serde_yaml::to_value(9).unwrap();
+ test.replace("nesting.newtype", value).unwrap();
+
+ assert_eq!(test.nesting.newtype, NewType(9));
+}
+
+#[test]
+fn replace_flatten() {
+ let mut test = Test::default();
+
+ let value = serde_yaml::to_value(7).unwrap();
+ test.replace("flatty", value).unwrap();
+
+ assert_eq!(test.flatten.flatty, 7);
+}