Fix regex deserialization

Fixes https://github.com/sayanarijit/xplr/issues/503
pull/507/head
Arijit Basu 2 years ago committed by Arijit Basu
parent 096e520a2b
commit b4ba56aa72

28
Cargo.lock generated

@ -455,6 +455,12 @@ version = "0.2.132"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
[[package]]
name = "linked-hash-map"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]] [[package]]
name = "lock_api" name = "lock_api"
version = "0.4.8" version = "0.4.8"
@ -855,15 +861,14 @@ dependencies = [
[[package]] [[package]]
name = "serde_yaml" name = "serde_yaml"
version = "0.9.11" version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89f31df3f50926cdf2855da5fd8812295c34752cb20438dae42a67f79e021ac3" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"itoa 1.0.3",
"ryu", "ryu",
"serde", "serde",
"unsafe-libyaml", "yaml-rust",
] ]
[[package]] [[package]]
@ -1020,12 +1025,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "unsafe-libyaml"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "931179334a56395bcf64ba5e0ff56781381c1a5832178280c7d7f91d1679aeb0"
[[package]] [[package]]
name = "version_check" name = "version_check"
version = "0.9.4" version = "0.9.4"
@ -1227,3 +1226,12 @@ dependencies = [
"tui", "tui",
"tui-input", "tui-input",
] ]
[[package]]
name = "yaml-rust"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]

@ -26,7 +26,10 @@ libc = "0.2.132"
humansize = "1.1.1" humansize = "1.1.1"
natord = "1.0.9" natord = "1.0.9"
anyhow = "1.0.64" anyhow = "1.0.64"
serde_yaml = "0.9.11"
# Let's keep this locked. See https://docs.rs/serde_yaml/0.9.11/serde_yaml/
serde_yaml = "0.8.26"
crossterm = "0.25.0" crossterm = "0.25.0"
dirs = "4.0.0" dirs = "4.0.0"
ansi-to-tui = "1.0.1" ansi-to-tui = "1.0.1"

@ -142,42 +142,42 @@ mod tests {
.stderr(""); .stderr("");
} }
// TODO: Fix running GitHub action // TODO fix GitHub CI failures
// //
// #[test] // #[test]
// fn test_cli_path_arg_valid() { // fn test_cli_path_arg_valid() {
// Command::cargo_bin("xplr") // Command::cargo_bin("xplr")
// .unwrap() // .unwrap()
// .arg("/tmp") // .arg("src")
// .arg("--on-load") // .arg("--on-load")
// .arg("PrintResultAndQuit") // .arg("PrintResultAndQuit")
// .assert() // .assert()
// .success() // .success()
// .code(0) // .code(0)
// .stderr(""); // .stderr("");
//
// Command::cargo_bin("xplr") // Command::cargo_bin("xplr")
// .unwrap() // .unwrap()
// .arg("/tmp") // .arg("src")
// .arg("--on-load") // .arg("--on-load")
// .arg("PrintResultAndQuit") // .arg("PrintResultAndQuit")
// .assert() // .assert()
// .success() // .success()
// .code(0) // .code(0)
// .stderr(""); // .stderr("");
//
// Command::cargo_bin("xplr") // Command::cargo_bin("xplr")
// .unwrap() // .unwrap()
// .arg("--on-load") // .arg("--on-load")
// .arg("PrintResultAndQuit") // .arg("PrintResultAndQuit")
// .arg("--") // .arg("--")
// .arg("/tmp") // .arg("src")
// .assert() // .assert()
// .success() // .success()
// .code(0) // .code(0)
// .stderr(""); // .stderr("");
// } // }
//
// #[test] // #[test]
// fn test_cli_path_stdin_valid() { // fn test_cli_path_stdin_valid() {
// Command::cargo_bin("xplr") // Command::cargo_bin("xplr")
@ -185,10 +185,25 @@ mod tests {
// .arg("-") // .arg("-")
// .arg("--on-load") // .arg("--on-load")
// .arg("PrintResultAndQuit") // .arg("PrintResultAndQuit")
// .write_stdin("/tmp\n") // .write_stdin("src\n")
// .assert() // .assert()
// .success() // .success()
// .code(0) // .code(0)
// .stderr(""); // .stderr("");
// } // }
//
// #[test]
// fn test_on_load_yaml_parsing() {
// Command::cargo_bin("xplr")
// .unwrap()
// .arg("--on-load")
// .arg("Call: {command: touch, args: [foo]}")
// .arg("Quit")
// .assert()
// .success()
// .code(0)
// .stderr("");
//
// std::fs::remove_file("foo").unwrap();
// }
} }

@ -1423,8 +1423,16 @@ impl PartialEq for CmpRegex {
impl Eq for CmpRegex {} impl Eq for CmpRegex {}
#[derive(Debug, Clone, Eq, Hash, PartialEq, Serialize, Deserialize)] // See https://github.com/sayanarijit/xplr/issues/503
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct NodeFilterApplicableDeserializer {
pub filter: NodeFilter,
pub input: String,
}
#[derive(Debug, Clone, Eq, Hash, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields, from = "NodeFilterApplicableDeserializer")]
pub struct NodeFilterApplicable { pub struct NodeFilterApplicable {
pub filter: NodeFilter, pub filter: NodeFilter,
pub input: String, pub input: String,
@ -1433,6 +1441,12 @@ pub struct NodeFilterApplicable {
pub regex: Option<CmpRegex>, pub regex: Option<CmpRegex>,
} }
impl From<NodeFilterApplicableDeserializer> for NodeFilterApplicable {
fn from(f: NodeFilterApplicableDeserializer) -> Self {
NodeFilterApplicable::new(f.filter, f.input)
}
}
impl NodeFilterApplicable { impl NodeFilterApplicable {
pub fn new(filter: NodeFilter, input: String) -> Self { pub fn new(filter: NodeFilter, input: String) -> Self {
use NodeFilter::*; use NodeFilter::*;

Loading…
Cancel
Save