diff --git a/Cargo.lock b/Cargo.lock index c2ecd183..b46619ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1773,6 +1773,15 @@ dependencies = [ "ctutils", ] +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + [[package]] name = "directories-next" version = "2.0.0" @@ -1783,6 +1792,18 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.61.2", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1790,7 +1811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -2122,6 +2143,17 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "filetime" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +dependencies = [ + "cfg-if", + "libc", + "libredox", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" @@ -2717,6 +2749,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hkdf" version = "0.12.4" @@ -3363,6 +3401,12 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "leb128" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cc46bac87ef8093eed6f272babb833b6443374399985ac8ed28471ee0918545" + [[package]] name = "leb128fmt" version = "0.1.0" @@ -3434,7 +3478,10 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ + "bitflags", "libc", + "plain", + "redox_syscall 0.7.4", ] [[package]] @@ -4116,6 +4163,12 @@ dependencies = [ "tokio-stream", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-float" version = "2.10.1" @@ -4189,7 +4242,7 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", "windows-link", ] @@ -4263,6 +4316,29 @@ dependencies = [ "indexmap", ] +[[package]] +name = "pglite-oxide" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3cc2a5e21b06b3da8c4b5770161cc53cfaa9db7883321022795cd94c7545472" +dependencies = [ + "anyhow", + "directories", + "flate2", + "getrandom 0.4.2", + "hex", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", + "tar", + "tempfile", + "tracing", + "wasmtime", + "wasmtime-wasi", + "zstd", +] + [[package]] name = "pgrow2serde" version = "0.1.0" @@ -4439,6 +4515,12 @@ version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "plotters" version = "0.3.7" @@ -5040,6 +5122,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.4.6" @@ -5051,6 +5142,17 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + [[package]] name = "ref-cast" version = "1.0.25" @@ -6221,6 +6323,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" +[[package]] +name = "tar" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "target-lexicon" version = "0.13.5" @@ -6803,6 +6916,7 @@ dependencies = [ "oauth2", "object_store", "parking_lot", + "pglite-oxide", "pin-project-lite", "prost", "prost-reflect", @@ -8078,6 +8192,7 @@ dependencies = [ "url", "wasmtime", "wasmtime-wasi-io", + "wiggle", "windows-sys 0.61.2", ] @@ -8117,6 +8232,15 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "wast" +version = "35.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" +dependencies = [ + "leb128", +] + [[package]] name = "wast" version = "248.0.0" @@ -8136,7 +8260,7 @@ version = "1.248.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75cd9e510603909748e6ebab89f27cd04472c1d9d85a3c88a7a6fc51a1a7934" dependencies = [ - "wast", + "wast 248.0.0", ] [[package]] @@ -8199,6 +8323,46 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wiggle" +version = "44.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f878b066ad36054ad6e7724230f28ea7f981f44e595e39946d5225fd9e87755" +dependencies = [ + "bitflags", + "thiserror 2.0.18", + "tracing", + "wasmtime", + "wasmtime-environ", + "wiggle-macro", +] + +[[package]] +name = "wiggle-generate" +version = "44.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f57f0bc709dacc9c69869006457ab4e1bc9d93695400f06224f33cbe8af81778" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", + "wasmtime-environ", + "witx", +] + +[[package]] +name = "wiggle-macro" +version = "44.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63976fe41647f7c55c680b88a7b9b68aae9184f5a6b4a0971bf3eb39c287467f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wiggle-generate", +] + [[package]] name = "winapi" version = "0.3.9" @@ -8748,6 +8912,18 @@ dependencies = [ "wasmparser 0.248.0", ] +[[package]] +name = "witx" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" +dependencies = [ + "anyhow", + "log", + "thiserror 1.0.69", + "wast 35.0.2", +] + [[package]] name = "wkt" version = "0.10.3" @@ -8823,6 +8999,16 @@ dependencies = [ "time", ] +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix 1.1.4", +] + [[package]] name = "yansi" version = "1.0.1" diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 69a85092..703e99bc 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -128,6 +128,7 @@ axum-test = "20.0.0" criterion = { version = "0.8", features = ["html_reports", "async_tokio"] } env_logger = { workspace = true } indoc = "2.0.5" +pglite-oxide = "0.3.0" quoted_printable = "0.5.1" rcgen = "0.14.1" schemars = "1.0.0" diff --git a/crates/core/src/app_state.rs b/crates/core/src/app_state.rs index 1d6f3d97..b07e46d3 100644 --- a/crates/core/src/app_state.rs +++ b/crates/core/src/app_state.rs @@ -59,6 +59,10 @@ struct InternalState { /// WASM runtime builders needed to rebuild above runtimes, e.g. when hot-reloading. wasm_runtimes_builder: crate::wasm::WasmRuntimeBuilder, + #[cfg(test)] + #[allow(unused)] + pg_uri: Option, + #[cfg(test)] #[allow(unused)] test_cleanup: Vec>, @@ -201,6 +205,8 @@ impl AppState { .collect(), wasm_runtimes_builder, #[cfg(test)] + pg_uri: None, + #[cfg(test)] test_cleanup: vec![], }), } @@ -517,6 +523,11 @@ pub async fn test_state(options: Option) -> anyhow::Result) -> anyhow::Result