use super::harness::*;
#[rstest::rstest]
#[case::test_if_else_has_lexical_block_scope(
r#"pipeline t(harness: Harness, task: unknown) {
const x = "outer"
if true {
const x = "inner"
harness.stdio.log(x)
} else {
const x = "other"
harness.stdio.log(x)
}
harness.stdio.log(x)
}"#,
"[harn] inner\n[harn] outer"
)]
#[case::test_loop_and_catch_bindings_are_block_scoped(
r#"pipeline t(harness: Harness, task: unknown) {
const label = "outer"
for item in [1, 2] {
const label = "loop ${item}"
harness.stdio.log(label)
}
try {
throw("boom")
} catch (label) {
harness.stdio.log(label)
}
harness.stdio.log(label)
}"#,
"[harn] loop 1\n[harn] loop 2\n[harn] boom\n[harn] outer"
)]
fn output_run_output(#[case] source: &str, #[case] expected: &str) {
assert_eq!(run_output(source), expected);
}