From e651e3242a36e09c0299c0165a29e068addf325a Mon Sep 17 00:00:00 2001 From: Johnathan Sharratt Date: Wed, 5 Apr 2023 12:11:49 +1000 Subject: [PATCH] Fixed an issue where blocking polls were being treated as nonblocking polls Added snapshot tests for minimodem so that reoccurance of bugs is avoided --- lib/wasi/src/syscalls/wasi/poll_oneoff.rs | 32 +++-- tests/integration/cli/tests/snapshot.rs | 60 +++++++- .../snapshot__snapshot_bash_bash.snap | 35 +---- .../snapshot__snapshot_bash_dash.snap | 31 +--- .../snapshot__snapshot_bash_echo.snap | 14 +- .../snapshots/snapshot__snapshot_bash_ls.snap | 11 +- .../snapshot__snapshot_bash_pipe.snap | 25 +--- .../snapshot__snapshot_bash_python.snap | 51 +------ .../snapshots/snapshot__snapshot_catsay.snap | 10 +- .../snapshots/snapshot__snapshot_condvar.snap | 1 - .../snapshots/snapshot__snapshot_cowsay.snap | 8 +- .../snapshot__snapshot_dash_bash.snap | 31 +--- .../snapshot__snapshot_dash_dash.snap | 31 +--- .../snapshot__snapshot_dash_dev_urandom.snap | 34 +---- .../snapshot__snapshot_dash_dev_zero.snap | 23 +-- .../snapshot__snapshot_dash_echo.snap | 9 +- .../snapshot__snapshot_dash_echo_to_cat.snap | 19 +-- .../snapshot__snapshot_dash_python.snap | 50 +------ ...ot__snapshot_default_file_system_tree.snap | 1 - .../snapshots/snapshot__snapshot_epoll.snap | 3 +- .../snapshots/snapshot__snapshot_execve.snap | 1 - .../snapshot__snapshot_file_copy.snap | 5 +- .../snapshots/snapshot__snapshot_fork.snap | 1 - .../snapshot__snapshot_fork_and_exec.snap | 1 - .../snapshot__snapshot_longjump.snap | 1 - .../snapshot__snapshot_longjump2.snap | 1 - .../snapshot__snapshot_longjump_fork.snap | 1 - .../snapshot__snapshot_minimodem_rx.snap | 30 ++++ .../snapshot__snapshot_minimodem_tx.snap | 30 ++++ .../snapshot__snapshot_multithreading.snap | 1 - .../snapshots/snapshot__snapshot_pipes.snap | 1 - .../snapshot__snapshot_process_spawn.snap | 1 - .../snapshots/snapshot__snapshot_quickjs.snap | 18 +-- .../snapshots/snapshot__snapshot_signals.snap | 1 - .../snapshots/snapshot__snapshot_sleep.snap | 1 - ...napshot__snapshot_stdin_stdout_stderr.snap | 7 +- .../snapshot__snapshot_thread_locals.snap | 1 - .../snapshots/snapshot__snapshot_vfork.snap | 1 - .../snapshot__snapshot_web_server.snap | 136 +----------------- .../integration/cli/tests/wasm/minimodem.data | Bin 0 -> 232160 bytes .../integration/cli/tests/wasm/minimodem.wasm | Bin 0 -> 95129 bytes 41 files changed, 157 insertions(+), 561 deletions(-) create mode 100644 tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_rx.snap create mode 100644 tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_tx.snap create mode 100644 tests/integration/cli/tests/wasm/minimodem.data create mode 100644 tests/integration/cli/tests/wasm/minimodem.wasm diff --git a/lib/wasi/src/syscalls/wasi/poll_oneoff.rs b/lib/wasi/src/syscalls/wasi/poll_oneoff.rs index 479051ea6fe..3df45c9c64d 100644 --- a/lib/wasi/src/syscalls/wasi/poll_oneoff.rs +++ b/lib/wasi/src/syscalls/wasi/poll_oneoff.rs @@ -145,7 +145,7 @@ pub(crate) fn poll_oneoff_internal( .filter(|a| a.2.type_ == Eventtype::Clock) .count(); let mut clock_subs: Vec<(SubscriptionClock, u64)> = Vec::with_capacity(subs.len()); - let mut time_to_sleep = None; + let mut time_to_sleep = Duration::ZERO; // First we extract all the subscriptions into an array so that they // can be processed @@ -204,9 +204,9 @@ pub(crate) fn poll_oneoff_internal( // If the timeout duration is zero then this is an immediate check rather than // a sleep itself if clock_info.timeout == 0 { - time_to_sleep = Some(Duration::ZERO); + time_to_sleep = Duration::MAX; } else { - time_to_sleep = Some(Duration::from_nanos(clock_info.timeout)); + time_to_sleep = Duration::from_nanos(clock_info.timeout); clock_subs.push((clock_info, s.userdata)); } continue; @@ -276,19 +276,25 @@ pub(crate) fn poll_oneoff_internal( fd_guards }; - if let Some(time_to_sleep) = time_to_sleep.as_ref() { - if *time_to_sleep == Duration::ZERO { + // If the time is infinite then we omit the time_to_sleep parameter + let asyncify_time = match time_to_sleep { + Duration::ZERO => { Span::current().record("timeout_ns", "nonblocking"); - } else { - Span::current().record("timeout_ns", time_to_sleep.as_millis()); + Some(Duration::ZERO) } - } else { - Span::current().record("timeout_ns", "infinite"); - } + Duration::MAX => { + Span::current().record("timeout_ns", "infinite"); + None + } + time => { + Span::current().record("timeout_ns", time.as_millis()); + Some(time) + } + }; // Block polling the file descriptors let batch = PollBatch::new(pid, tid, &mut guards); - __asyncify(ctx, time_to_sleep, batch)? + __asyncify(ctx, asyncify_time, batch)? }; let mut env = ctx.data(); @@ -303,7 +309,7 @@ pub(crate) fn poll_oneoff_internal( } Err(Errno::Timedout) => { // The timeout has triggerred so lets add that event - if clock_subs.is_empty() && time_to_sleep != Some(Duration::ZERO) { + if clock_subs.is_empty() { tracing::warn!("triggered_timeout (without any clock subscriptions)",); } let mut evts = Vec::new(); @@ -326,7 +332,7 @@ pub(crate) fn poll_oneoff_internal( Ok(Ok(evts)) } // If nonblocking the Errno::Again needs to be turned into an empty list - Err(Errno::Again) if time_to_sleep == Some(Duration::ZERO) => Ok(Ok(Default::default())), + Err(Errno::Again) => Ok(Ok(Default::default())), // Otherwise process the rror Err(err) => Ok(Err(err)), } diff --git a/tests/integration/cli/tests/snapshot.rs b/tests/integration/cli/tests/snapshot.rs index 13606307f11..0c81c29e3ec 100644 --- a/tests/integration/cli/tests/snapshot.rs +++ b/tests/integration/cli/tests/snapshot.rs @@ -36,7 +36,11 @@ pub struct TestSpec { pub use_packages: Vec, pub include_webcs: Vec, pub cli_args: Vec, + #[serde(skip)] pub stdin: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + pub stdin_hash: Option, pub debug_output: bool, pub enable_threads: bool, pub enable_network: bool, @@ -91,6 +95,19 @@ pub struct TestSnapshot { pub result: TestResult, } +impl TestSnapshot { + pub fn convert_stdout_to_hash(&mut self) { + self.result = match &self.result { + TestResult::Success(a) => TestResult::Success(TestOutput { + stdout: format!("hash: {:x}", md5::compute(a.stdout.as_bytes())), + stderr: a.stderr.clone(), + exit_code: a.exit_code, + }), + res => res.clone(), + }; + } +} + pub struct TestBuilder { spec: TestSpec, } @@ -107,6 +124,7 @@ impl TestBuilder { include_webcs: Vec::new(), cli_args: Vec::new(), stdin: None, + stdin_hash: None, debug_output: false, enable_threads: true, enable_network: false, @@ -125,8 +143,14 @@ impl TestBuilder { self } - pub fn stdin_str(mut self, s: impl Into) -> Self { - self.spec.stdin = Some(s.into().into_bytes()); + pub fn stdin_str(self, s: impl Into) -> Self { + let str = s.into(); + self.stdin(str.as_bytes()) + } + + pub fn stdin(mut self, s: &[u8]) -> Self { + self.spec.stdin_hash = Some(format!("{:x}", md5::compute(s))); + self.spec.stdin = Some(s.to_vec()); self } @@ -478,6 +502,38 @@ fn test_snapshot_execve() { assert_json_snapshot!(snapshot); } +#[cfg(not(any(target_env = "musl", target_os = "macos", target_os = "windows")))] +#[test] +fn test_snapshot_minimodem_tx() { + let mut snapshot = TestBuilder::new() + .with_name(function!()) + .stdin_str("This message wont get through") + .arg("--tx") + .arg("--tx-carrier") + .arg("--stdio") + .arg("--float-samples") + .arg("same") + .run_wasm(include_bytes!("./wasm/minimodem.wasm")); + snapshot.convert_stdout_to_hash(); + + assert_json_snapshot!(snapshot); +} + +#[cfg(not(any(target_env = "musl", target_os = "macos", target_os = "windows")))] +#[test] +fn test_snapshot_minimodem_rx() { + let snapshot = TestBuilder::new() + .with_name(function!()) + .arg("--rx") + .arg("--tx-carrier") + .arg("--stdio") + .arg("--float-samples") + .arg("same") + .stdin(include_bytes!("./wasm/minimodem.data")) + .run_wasm(include_bytes!("./wasm/minimodem.wasm")); + assert_json_snapshot!(snapshot); +} + #[cfg(not(any(target_env = "musl", target_os = "macos", target_os = "windows")))] #[test] fn test_snapshot_web_server() { diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_bash.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_bash.snap index d29d4a46db7..28bee404e60 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_bash.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_bash.snap @@ -18,40 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 47, - 98, - 105, - 110, - 47, - 98, - 97, - 115, - 104, - 10, - 101, - 99, - 104, - 111, - 32, - 104, - 105, - 10, - 101, - 120, - 105, - 116, - 10, - 101, - 99, - 104, - 111, - 32, - 104, - 105, - 50, - 10 - ], + "stdin_hash": "eb83da76ee5fbab28288ecf6385c69db", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_dash.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_dash.snap index 48f086210f0..e478e2fb501 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_dash.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_dash.snap @@ -18,36 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 47, - 98, - 105, - 110, - 47, - 100, - 97, - 115, - 104, - 10, - 101, - 99, - 104, - 111, - 32, - 104, - 105, - 10, - 101, - 120, - 105, - 116, - 10, - 101, - 120, - 105, - 116, - 10 - ], + "stdin_hash": "702da725f176c20024965c8830b620ae", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_echo.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_echo.snap index 892da5b1649..2afe70af1f6 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_echo.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_echo.snap @@ -8,19 +8,7 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": [ - 101, - 99, - 104, - 111, - 32, - 104, - 101, - 108, - 108, - 111, - 10 - ], + "stdin_hash": "664d0430ee33458602e580520841a2d4", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_ls.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_ls.snap index 1d688eb6419..fd203b50344 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_ls.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_ls.snap @@ -15,16 +15,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 108, - 115, - 10, - 101, - 120, - 105, - 116, - 10 - ], + "stdin_hash": "ceb5d83a0368a10c813f8e05c42a3a7d", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_pipe.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_pipe.snap index 2f8dd8607ed..f66a3777626 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_pipe.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_pipe.snap @@ -15,30 +15,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 101, - 99, - 104, - 111, - 32, - 104, - 101, - 108, - 108, - 111, - 32, - 124, - 32, - 99, - 97, - 116, - 10, - 101, - 120, - 105, - 116, - 10 - ], + "stdin_hash": "d83523479d9f84e9f94230d5aed27347", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_python.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_python.snap index 8ecc184c455..9cceb75488c 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_python.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_bash_python.snap @@ -18,56 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 119, - 97, - 115, - 109, - 101, - 114, - 32, - 114, - 117, - 110, - 32, - 115, - 121, - 114, - 117, - 115, - 97, - 107, - 98, - 97, - 114, - 121, - 47, - 112, - 121, - 116, - 104, - 111, - 110, - 32, - 45, - 45, - 32, - 45, - 99, - 32, - 39, - 112, - 114, - 105, - 110, - 116, - 40, - 49, - 48, - 41, - 39, - 10 - ], + "stdin_hash": "bda2b0db976f1724ef16ae1491211d52", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_catsay.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_catsay.snap index b37f4e4447e..f0cabeb39a1 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_catsay.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_catsay.snap @@ -8,15 +8,7 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": [ - 109, - 101, - 111, - 111, - 111, - 119, - 119 - ], + "stdin_hash": "ed17ce0ab9af325cceb217a26ee9b8a1", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_condvar.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_condvar.snap index f58d950e827..1498588ed76 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_condvar.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_condvar.snap @@ -8,7 +8,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": true, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_cowsay.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_cowsay.snap index cec88387447..d9c328ed373 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_cowsay.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_cowsay.snap @@ -8,13 +8,7 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": [ - 98, - 108, - 97, - 104, - 10 - ], + "stdin_hash": "0d599f0ec05c3bda8c3b8a68c32a1b47", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_bash.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_bash.snap index 403bda5a745..ef449c3ae00 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_bash.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_bash.snap @@ -18,36 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 47, - 98, - 105, - 110, - 47, - 98, - 97, - 115, - 104, - 10, - 101, - 99, - 104, - 111, - 32, - 104, - 105, - 10, - 101, - 120, - 105, - 116, - 10, - 101, - 120, - 105, - 116, - 10 - ], + "stdin_hash": "31837f6a5667cb17dd97f274b20281bb", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dash.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dash.snap index 7e46eb51574..1e9ada84624 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dash.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dash.snap @@ -18,36 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 47, - 98, - 105, - 110, - 47, - 100, - 97, - 115, - 104, - 10, - 101, - 99, - 104, - 111, - 32, - 104, - 105, - 10, - 101, - 120, - 105, - 116, - 10, - 101, - 120, - 105, - 116, - 10 - ], + "stdin_hash": "702da725f176c20024965c8830b620ae", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_urandom.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_urandom.snap index 3f97603037d..7b310a5230a 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_urandom.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_urandom.snap @@ -15,39 +15,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 104, - 101, - 97, - 100, - 32, - 45, - 99, - 32, - 49, - 48, - 32, - 47, - 100, - 101, - 118, - 47, - 117, - 114, - 97, - 110, - 100, - 111, - 109, - 32, - 124, - 32, - 119, - 99, - 32, - 45, - 99 - ], + "stdin_hash": "80a57e78213b40607259d3909a44b0cf", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_zero.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_zero.snap index 9aae839fe1b..9f3beef9388 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_zero.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_dev_zero.snap @@ -15,28 +15,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 104, - 101, - 97, - 100, - 32, - 45, - 99, - 32, - 49, - 48, - 32, - 47, - 100, - 101, - 118, - 47, - 122, - 101, - 114, - 111 - ], + "stdin_hash": "a911ff36e7a2d67baba7c3dcb45ac5c9", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo.snap index aef5c929c58..40bea2ef5d4 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo.snap @@ -8,14 +8,7 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": [ - 101, - 99, - 104, - 111, - 32, - 50 - ], + "stdin_hash": "f21e64a91c2b4c628da60b9a6ef26c46", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo_to_cat.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo_to_cat.snap index 53782128179..648a9c66407 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo_to_cat.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_echo_to_cat.snap @@ -15,24 +15,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 101, - 99, - 104, - 111, - 32, - 104, - 101, - 108, - 108, - 111, - 32, - 124, - 32, - 99, - 97, - 116 - ], + "stdin_hash": "4a75babacd4e06efe6c6594a2864f61f", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_python.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_python.snap index a090e6c8c17..021d098f221 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_python.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_dash_python.snap @@ -18,55 +18,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 119, - 97, - 115, - 109, - 101, - 114, - 32, - 114, - 117, - 110, - 32, - 115, - 121, - 114, - 117, - 115, - 97, - 107, - 98, - 97, - 114, - 121, - 47, - 112, - 121, - 116, - 104, - 111, - 110, - 32, - 45, - 45, - 32, - 45, - 99, - 32, - 39, - 112, - 114, - 105, - 110, - 116, - 40, - 49, - 48, - 41, - 39 - ], + "stdin_hash": "56c581e32481cdbf1d70227f3c4b1a84", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_default_file_system_tree.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_default_file_system_tree.snap index 52eddd561d5..9e8be647aea 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_default_file_system_tree.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_default_file_system_tree.snap @@ -10,7 +10,6 @@ expression: snapshot "cli_args": [ "ls" ], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_epoll.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_epoll.snap index 076d584e5f9..de334a78d9c 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_epoll.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_epoll.snap @@ -1,6 +1,6 @@ --- source: tests/integration/cli/tests/snapshot.rs -assertion_line: 363 +assertion_line: 466 expression: snapshot --- { @@ -9,7 +9,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_execve.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_execve.snap index 00deec631dc..45723256eb6 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_execve.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_execve.snap @@ -15,7 +15,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_file_copy.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_file_copy.snap index 6d2791c7f8a..c4b7d09202d 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_file_copy.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_file_copy.snap @@ -18,10 +18,7 @@ expression: snapshot "/dev/stdin", "/dev/stdout" ], - "stdin": [ - 104, - 105 - ], + "stdin_hash": "49f68a5c8493ec2c0bf489821c21fc3b", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork.snap index 61b794ff7a6..da92ed84112 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork_and_exec.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork_and_exec.snap index 6c69a9f3ddd..047af398289 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork_and_exec.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_fork_and_exec.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump.snap index 09ce0a8f0e2..23f04c937ac 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump2.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump2.snap index 761a1e59938..6cecd4fadb5 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump2.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump2.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump_fork.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump_fork.snap index 4eaa2ea17dc..8585a2ebaeb 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump_fork.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_longjump_fork.snap @@ -8,7 +8,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_rx.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_rx.snap new file mode 100644 index 00000000000..55ccd72a26a --- /dev/null +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_rx.snap @@ -0,0 +1,30 @@ +--- +source: tests/integration/cli/tests/snapshot.rs +assertion_line: 499 +expression: snapshot +--- +{ + "spec": { + "name": "snapshot::test_snapshot_minimodem_rx", + "use_packages": [], + "include_webcs": [], + "cli_args": [ + "--rx", + "--tx-carrier", + "--stdio", + "--float-samples", + "same" + ], + "stdin_hash": "eeaf940b4ae9db7eb9a4f45a24989a57", + "debug_output": false, + "enable_threads": true, + "enable_network": false + }, + "result": { + "Success": { + "stdout": "This message wont get through\n", + "stderr": "### CARRIER 521 @ 2083.3 Hz ###\n\n### NOCARRIER ndata=46 confidence=140169.578 ampl=45.976 bps=521.03 (0.0% fast) ###\n", + "exit_code": 0 + } + } +} diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_tx.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_tx.snap new file mode 100644 index 00000000000..ce3b46f334f --- /dev/null +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_minimodem_tx.snap @@ -0,0 +1,30 @@ +--- +source: tests/integration/cli/tests/snapshot.rs +assertion_line: 519 +expression: snapshot +--- +{ + "spec": { + "name": "snapshot::test_snapshot_minimodem_tx", + "use_packages": [], + "include_webcs": [], + "cli_args": [ + "--tx", + "--tx-carrier", + "--stdio", + "--float-samples", + "same" + ], + "stdin_hash": "efbbebc40e07bc2365088f9506f8a5d1", + "debug_output": false, + "enable_threads": true, + "enable_network": false + }, + "result": { + "Success": { + "stdout": "hash: 50e55400b51b975eab31f31cb07419fd", + "stderr": "", + "exit_code": 0 + } + } +} diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_multithreading.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_multithreading.snap index da0751a6add..bc183c818a3 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_multithreading.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_multithreading.snap @@ -8,7 +8,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": true, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_pipes.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_pipes.snap index ae9f3e6e3c1..d725ddc2450 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_pipes.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_pipes.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_process_spawn.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_process_spawn.snap index a7eab67a4d9..c3a1e43b81b 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_process_spawn.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_process_spawn.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_quickjs.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_quickjs.snap index 4d7cb7a4f4c..7e741056287 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_quickjs.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_quickjs.snap @@ -8,23 +8,7 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": [ - 112, - 114, - 105, - 110, - 116, - 40, - 50, - 43, - 50, - 41, - 59, - 10, - 92, - 113, - 10 - ], + "stdin_hash": "7b1ec18c69fb609403f75c6e673f2d33", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_signals.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_signals.snap index 7810ad28db4..5afbc9b4449 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_signals.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_signals.snap @@ -9,7 +9,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_sleep.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_sleep.snap index 8b7eaff0ea1..175d6d79392 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_sleep.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_sleep.snap @@ -8,7 +8,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_stdin_stdout_stderr.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_stdin_stdout_stderr.snap index 14e0b0a4e41..da1007772d7 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_stdin_stdout_stderr.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_stdin_stdout_stderr.snap @@ -11,12 +11,7 @@ expression: snapshot "tee", "/dev/stderr" ], - "stdin": [ - 98, - 108, - 97, - 104 - ], + "stdin_hash": "6f1ed002ab5595859014ebf0951522d9", "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_thread_locals.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_thread_locals.snap index 17041482d40..0dcb8fee24c 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_thread_locals.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_thread_locals.snap @@ -8,7 +8,6 @@ expression: snapshot "use_packages": [], "include_webcs": [], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_vfork.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_vfork.snap index 4a0d8de7685..f78e8083eff 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_vfork.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_vfork.snap @@ -14,7 +14,6 @@ expression: snapshot } ], "cli_args": [], - "stdin": null, "debug_output": false, "enable_threads": true, "enable_network": false diff --git a/tests/integration/cli/tests/snapshots/snapshot__snapshot_web_server.snap b/tests/integration/cli/tests/snapshots/snapshot__snapshot_web_server.snap index 7e2eff9f72c..4596b492172 100644 --- a/tests/integration/cli/tests/snapshots/snapshot__snapshot_web_server.snap +++ b/tests/integration/cli/tests/snapshots/snapshot__snapshot_web_server.snap @@ -22,141 +22,7 @@ expression: snapshot } ], "cli_args": [], - "stdin": [ - 10, - 99, - 97, - 116, - 32, - 47, - 112, - 117, - 98, - 108, - 105, - 99, - 47, - 109, - 97, - 105, - 110, - 46, - 106, - 115, - 32, - 124, - 32, - 119, - 99, - 32, - 45, - 99, - 32, - 62, - 32, - 47, - 112, - 117, - 98, - 108, - 105, - 99, - 47, - 109, - 97, - 105, - 110, - 46, - 106, - 115, - 46, - 115, - 105, - 122, - 101, - 10, - 114, - 109, - 32, - 45, - 102, - 32, - 47, - 99, - 102, - 103, - 47, - 99, - 111, - 110, - 102, - 105, - 103, - 46, - 116, - 111, - 109, - 108, - 10, - 47, - 98, - 105, - 110, - 47, - 119, - 101, - 98, - 115, - 101, - 114, - 118, - 101, - 114, - 32, - 45, - 45, - 108, - 111, - 103, - 45, - 108, - 101, - 118, - 101, - 108, - 32, - 119, - 97, - 114, - 110, - 32, - 45, - 45, - 114, - 111, - 111, - 116, - 32, - 47, - 112, - 117, - 98, - 108, - 105, - 99, - 32, - 45, - 45, - 112, - 111, - 114, - 116, - 32, - 55, - 55, - 55, - 55 - ], + "stdin_hash": "5341c172edb6109ca9aa44b67adc2eeb", "debug_output": false, "enable_threads": true, "enable_network": true diff --git a/tests/integration/cli/tests/wasm/minimodem.data b/tests/integration/cli/tests/wasm/minimodem.data new file mode 100644 index 0000000000000000000000000000000000000000..4519656201981d5e6988038b52954b1b3b5af4f0 GIT binary patch literal 232160 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 Uz<>b*1`HT5V8DO@0|pG-K-OS>!vFvP literal 0 HcmV?d00001 diff --git a/tests/integration/cli/tests/wasm/minimodem.wasm b/tests/integration/cli/tests/wasm/minimodem.wasm new file mode 100644 index 0000000000000000000000000000000000000000..83bcf0bec1c898e61bcf01cedeafb74637314323 GIT binary patch literal 95129 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 LLKpw<7?1x4@ZTzh literal 0 HcmV?d00001