use nu_test_support::nu;
#[test]
fn for_doesnt_auto_print_in_each_iteration() {
let actual = nu!("
for i in 1..2 {
$i
}");
assert!(!actual.out.contains('1'));
}
#[test]
fn for_break_on_external_failed() {
let actual = nu!("
for i in 1..2 {
print 1;
nu --testbin fail
}");
assert_eq!(actual.out, "1");
}
#[test]
fn failed_for_should_break_running() {
let actual = nu!("
for i in 1..2 {
nu --testbin fail
}
print 3");
assert!(!actual.out.contains('3'));
let actual = nu!("
let x = [1 2]
for i in $x {
nu --testbin fail
}
print 3");
assert!(!actual.out.contains('3'));
}
#[test]
fn for_loops_dont_collect_source() {
let actual = nu!("
for i in (seq 1 10 | each { print -n $in; $in}) {
print -n $i
if $i >= 5 { break }
}
");
assert_eq!(actual.out, "1122334455");
}
#[test]
fn for_with_non_block_body_errors_without_panic() {
for src in ["for i in [1 2 3] $i", "for i in [] $i"] {
let actual = nu!(src);
assert!(actual.err.contains("invalid_keyword_call"));
assert!(!actual.err.to_lowercase().contains("panic"));
}
}