mirror of
https://github.com/nushell/nushell.git
synced 2025-04-29 15:44:28 +02:00
Add job messaging tests
This commit is contained in:
parent
d126914aca
commit
669f2456fe
@ -19,6 +19,181 @@ fn jobs_do_run() {
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_send_root_job_works() {
|
||||
let actual = nu!(r#"
|
||||
job spawn { 'beep' | job send 0 }
|
||||
job recv --timeout 10sec"#);
|
||||
|
||||
assert_eq!(actual.out, "beep");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_send_background_job_works() {
|
||||
let actual = nu!(r#"
|
||||
let job = job spawn { job recv | job send 0 }
|
||||
'boop' | job send $job
|
||||
job recv --timeout 10sec"#);
|
||||
|
||||
assert_eq!(actual.out, "boop");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_send_to_self_works() {
|
||||
let actual = nu!(r#"
|
||||
"meep" | job send 0
|
||||
job recv"#);
|
||||
|
||||
assert_eq!(actual.out, "meep");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_send_to_self_from_background_works() {
|
||||
let actual = nu!(r#"
|
||||
job spawn {
|
||||
'beep' | job send (job id)
|
||||
job recv | job send 0
|
||||
}
|
||||
|
||||
job recv --timeout 10sec"#);
|
||||
|
||||
assert_eq!(actual.out, "beep");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_id_of_root_job_is_zero() {
|
||||
let actual = nu!(r#"job id"#);
|
||||
|
||||
assert_eq!(actual.out, "0");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_id_of_background_jobs_works() {
|
||||
let actual = nu!(r#"
|
||||
let job1 = job spawn { job id | job send 0 }
|
||||
let id1 = job recv --timeout 5sec
|
||||
|
||||
let job2 = job spawn { job id | job send 0 }
|
||||
let id2 = job recv --timeout 5sec
|
||||
|
||||
let job3 = job spawn { job id | job send 0 }
|
||||
let id3 = job recv --timeout 5sec
|
||||
|
||||
[($job1 == $id1) ($job2 == $id2) ($job3 == $id3)] | to nuon
|
||||
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "[true, true, true]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn untagged_job_recv_accepts_tagged_messages() {
|
||||
let actual = nu!(r#"
|
||||
job spawn { "boop" | job send 0 --tag 123 }
|
||||
job recv --timeout 10sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "boop");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tagged_job_recv_filters_untagged_messages() {
|
||||
let actual = nu!(r#"
|
||||
job spawn { "boop" | job send 0 }
|
||||
job recv --tag 123 --timeout 1sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "");
|
||||
assert!(actual.err.contains("timeout"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tagged_job_recv_filters_badly_tagged_messages() {
|
||||
let actual = nu!(r#"
|
||||
job spawn { "boop" | job send 0 --tag 321 }
|
||||
job recv --tag 123 --timeout 1sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "");
|
||||
assert!(actual.err.contains("timeout"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tagged_job_recv_accepts_properly_tagged_messages() {
|
||||
let actual = nu!(r#"
|
||||
job spawn { "boop" | job send 0 --tag 123 }
|
||||
job recv --tag 123 --timeout 5sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "boop");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn filtered_messages_are_not_erased() {
|
||||
let actual = nu!(r#"
|
||||
"msg1" | job send 0 --tag 123
|
||||
"msg2" | job send 0 --tag 456
|
||||
"msg3" | job send 0 --tag 789
|
||||
|
||||
let first = job recv --tag 789 --timeout 5sec
|
||||
let second = job recv --timeout 1sec
|
||||
let third = job recv --timeout 1sec
|
||||
|
||||
|
||||
[($first) ($second) ($third)] | to nuon
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, r#"["msg3", "msg1", "msg2"]"#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_recv_timeout_works() {
|
||||
let actual = nu!(r#"
|
||||
job spawn {
|
||||
sleep 2sec
|
||||
"boop" | job send 0
|
||||
}
|
||||
|
||||
job recv --timeout 1sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "");
|
||||
assert!(actual.err.contains("timeout"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_flush_clears_messages() {
|
||||
let actual = nu!(r#"
|
||||
"SALE!!!" | job send 0
|
||||
"[HYPERLINK BLOCKED]" | job send 0
|
||||
|
||||
job flush
|
||||
|
||||
job recv --timeout 1sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "");
|
||||
assert!(actual.err.contains("timeout"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn job_flush_clears_filtered_messages() {
|
||||
let actual = nu!(r#"
|
||||
"msg1" | job send 0 --tag 123
|
||||
"msg2" | job send 0 --tag 456
|
||||
"msg3" | job send 0 --tag 789
|
||||
|
||||
job recv --tag 789 --timeout 1sec
|
||||
|
||||
job flush
|
||||
|
||||
job recv --timeout 1sec
|
||||
"#);
|
||||
|
||||
assert_eq!(actual.out, "");
|
||||
assert!(actual.err.contains("timeout"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn first_job_id_is_one() {
|
||||
let actual = nu!(r#"job spawn {} | to nuon"#);
|
||||
|
Loading…
Reference in New Issue
Block a user