diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-02-28 15:12:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-28 22:12:21 +0000 |
commit | b6e44f91ad55f9737d65a4832d10cfa608f27c41 (patch) | |
tree | e184d9c7b0a4ebbb7cbb20ab72cc99c07eb46da0 /tests/integration/run_tests.rs | |
parent | c9b2139b1e7e1240db792173118b7d54d16c5f73 (diff) |
fix(cli): ensure that pre- and post-test output is flushed at the appropriate times (#22611)
Some `deno_std` tests were failing to print output that was resolved
after the last test finished. In addition, output printed before tests
began would sometimes appear above the "running X tests ..." line, and
sometimes below it depending on timing.
We now guarantee that all output is flushed before and after tests run,
making the output consistent.
Pre-test and post-test output are captured in `------ pre-test output
------` and `------ post-test output ------` blocks to differentiate
them from the regular output blocks.
Here's an example of a test (that is much noisier than normal, but an
example of what the output will look like):
```
Check ./load_unload.ts
------- pre-test output -------
load
----- output end -----
running 1 test from ./load_unload.ts
test ...
------- output -------
test
----- output end -----
test ... ok ([WILDCARD])
------- post-test output -------
unload
----- output end -----
```
Diffstat (limited to 'tests/integration/run_tests.rs')
-rw-r--r-- | tests/integration/run_tests.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/tests/integration/run_tests.rs b/tests/integration/run_tests.rs index ff983ed4c..77e1db2ab 100644 --- a/tests/integration/run_tests.rs +++ b/tests/integration/run_tests.rs @@ -4560,15 +4560,14 @@ async fn websocket_server_multi_field_connection_header() { assert!(child.wait().unwrap().success()); } -// TODO(bartlomieju): this should use `deno run`, not `deno test`; but the -// test hangs then. https://github.com/denoland/deno/issues/14283 #[tokio::test] async fn websocket_server_idletimeout() { + test_util::timeout!(60); let script = util::testdata_path().join("run/websocket_server_idletimeout.ts"); let root_ca = util::testdata_path().join("tls/RootCA.pem"); let mut child = util::deno_cmd() - .arg("test") + .arg("run") .arg("--unstable") .arg("--allow-net") .arg("--cert") @@ -4579,11 +4578,13 @@ async fn websocket_server_idletimeout() { .unwrap(); let stdout = child.stdout.as_mut().unwrap(); - let mut buffer = [0; 5]; - let read = stdout.read(&mut buffer).unwrap(); - assert_eq!(read, 5); - let msg = std::str::from_utf8(&buffer).unwrap(); - assert_eq!(msg, "READY"); + let mut buf: Vec<u8> = vec![]; + while !String::from_utf8(buf.clone()).unwrap().contains("READY") { + let mut buffer = [0; 64]; + let read = stdout.read(&mut buffer).unwrap(); + buf.extend_from_slice(&buffer[0..read]); + eprintln!("buf = {buf:?}"); + } let stream = tokio::net::TcpStream::connect("localhost:4509") .await @@ -4604,8 +4605,7 @@ async fn websocket_server_idletimeout() { fastwebsockets::handshake::client(&SpawnExecutor, req, stream) .await .unwrap(); - - assert!(child.wait().unwrap().success()); + assert_eq!(child.wait().unwrap().code(), Some(123)); } itest!(auto_discover_lockfile { |