diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml index 49ddeeb6..849e305f 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows.yaml @@ -47,6 +47,7 @@ jobs: key: ${{ matrix.platform.target }} - run: cargo +nightly fmt --check - run: cargo clippy + - run: cargo test --package komorebi --test compat - uses: houseabsolute/actions-rust-cross@v1 with: command: "build" diff --git a/Cargo.lock b/Cargo.lock index a0bd355c..3c22dc2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1530,16 +1530,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "erased-serde" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" -dependencies = [ - "serde", - "typeid", -] - [[package]] name = "errno" version = "0.3.10" @@ -2645,6 +2635,7 @@ dependencies = [ "parking_lot", "paste", "regex", + "reqwest", "schemars", "serde", "serde_json_lenient", @@ -2896,12 +2887,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.24" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6ea2a48c204030ee31a7d7fc72c93294c92fe87ecb1789881c9543516e1a0d" -dependencies = [ - "value-bag", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "loop9" @@ -4539,15 +4527,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_fmt" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" -dependencies = [ - "serde", -] - [[package]] name = "serde_json" version = "1.0.135" @@ -4895,84 +4874,6 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" -[[package]] -name = "sval" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6dc0f9830c49db20e73273ffae9b5240f63c42e515af1da1fceefb69fceafd8" - -[[package]] -name = "sval_buffer" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "429922f7ad43c0ef8fd7309e14d750e38899e32eb7e8da656ea169dd28ee212f" -dependencies = [ - "sval", - "sval_ref", -] - -[[package]] -name = "sval_dynamic" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f16ff5d839396c11a30019b659b0976348f3803db0626f736764c473b50ff4" -dependencies = [ - "sval", -] - -[[package]] -name = "sval_fmt" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01c27a80b6151b0557f9ccbe89c11db571dc5f68113690c1e028d7e974bae94" -dependencies = [ - "itoa", - "ryu", - "sval", -] - -[[package]] -name = "sval_json" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0deef63c70da622b2a8069d8600cf4b05396459e665862e7bdb290fd6cf3f155" -dependencies = [ - "itoa", - "ryu", - "sval", -] - -[[package]] -name = "sval_nested" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a39ce5976ae1feb814c35d290cf7cf8cd4f045782fe1548d6bc32e21f6156e9f" -dependencies = [ - "sval", - "sval_buffer", - "sval_ref", -] - -[[package]] -name = "sval_ref" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7c6ee3751795a728bc9316a092023529ffea1783499afbc5c66f5fabebb1fa" -dependencies = [ - "sval", -] - -[[package]] -name = "sval_serde" -version = "2.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5572d0321b68109a343634e3a5d576bf131b82180c6c442dee06349dfc652a" -dependencies = [ - "serde", - "sval", - "sval_nested", -] - [[package]] name = "syn" version = "2.0.96" @@ -5453,12 +5354,6 @@ dependencies = [ "rustc-hash", ] -[[package]] -name = "typeid" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" - [[package]] name = "typenum" version = "1.17.0" @@ -5609,42 +5504,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "value-bag" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" -dependencies = [ - "value-bag-serde1", - "value-bag-sval2", -] - -[[package]] -name = "value-bag-serde1" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb773bd36fd59c7ca6e336c94454d9c66386416734817927ac93d81cb3c5b0b" -dependencies = [ - "erased-serde", - "serde", - "serde_fmt", -] - -[[package]] -name = "value-bag-sval2" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a916a702cac43a88694c97657d449775667bcd14b70419441d05b7fea4a83a" -dependencies = [ - "sval", - "sval_buffer", - "sval_dynamic", - "sval_fmt", - "sval_json", - "sval_ref", - "sval_serde", -] - [[package]] name = "vcpkg" version = "0.2.15" diff --git a/komorebi/Cargo.toml b/komorebi/Cargo.toml index bc691d9f..bd89e71d 100644 --- a/komorebi/Cargo.toml +++ b/komorebi/Cargo.toml @@ -52,5 +52,8 @@ winreg = "0.53" [build-dependencies] shadow-rs = { workspace = true } +[dev-dependencies] +reqwest = { version = "0.12", features = ["blocking"] } + [features] deadlock_detection = ["parking_lot/deadlock_detection"] diff --git a/komorebi/src/static_config.rs b/komorebi/src/static_config.rs index 7579f890..bff6faa2 100644 --- a/komorebi/src/static_config.rs +++ b/komorebi/src/static_config.rs @@ -1014,6 +1014,10 @@ impl StaticConfig { Ok(()) } + pub fn read_raw(raw: &str) -> Result { + Ok(serde_json::from_str(raw)?) + } + pub fn read(path: &PathBuf) -> Result { let content = std::fs::read_to_string(path)?; let mut value: Self = serde_json::from_str(&content)?; diff --git a/komorebi/tests/compat.rs b/komorebi/tests/compat.rs new file mode 100644 index 00000000..7d834e71 --- /dev/null +++ b/komorebi/tests/compat.rs @@ -0,0 +1,29 @@ +use komorebi::StaticConfig; + +#[test] +fn backwards_compat() { + let root = vec!["0.1.17", "0.1.18", "0.1.19"]; + let docs = vec![ + "0.1.20", "0.1.21", "0.1.22", "0.1.23", "0.1.24", "0.1.25", "0.1.26", "0.1.27", "0.1.28", + "0.1.29", "0.1.30", "0.1.31", "0.1.32", "0.1.33", + ]; + + let mut versions = vec![]; + + let client = reqwest::blocking::Client::new(); + + for version in root { + let request = client.get(format!("https://raw.githubusercontent.com/LGUG2Z/komorebi/refs/tags/v{version}/komorebi.example.json")).header("User-Agent", "komorebi-backwards-compat-test").build().unwrap(); + versions.push((version, client.execute(request).unwrap().text().unwrap())); + } + + for version in docs { + let request = client.get(format!("https://raw.githubusercontent.com/LGUG2Z/komorebi/refs/tags/v{version}/docs/komorebi.example.json")).header("User-Agent", "komorebi-backwards-compat-test").build().unwrap(); + versions.push((version, client.execute(request).unwrap().text().unwrap())); + } + + for (version, config) in versions { + println!("{version}"); + StaticConfig::read_raw(&config).unwrap(); + } +}