just/tests/positional_arguments.rs
2024-06-13 19:35:14 +00:00

144 lines
2.1 KiB
Rust

test! {
name: linewise,
justfile: r#"
set positional-arguments
foo bar baz:
echo $0
echo $1
echo $2
echo "$@"
"#,
args: ("foo", "hello", "goodbye"),
stdout: "
foo
hello
goodbye
hello goodbye
",
stderr: r#"
echo $0
echo $1
echo $2
echo "$@"
"#,
}
test! {
name: linewise_with_attribute,
justfile: r#"
[positional-arguments]
foo bar baz:
echo $0
echo $1
echo $2
echo "$@"
"#,
args: ("foo", "hello", "goodbye"),
stdout: "
foo
hello
goodbye
hello goodbye
",
stderr: r#"
echo $0
echo $1
echo $2
echo "$@"
"#,
}
test! {
name: variadic_linewise,
justfile: r#"
set positional-arguments
foo *bar:
echo $1
echo "$@"
"#,
args: ("foo", "a", "b", "c"),
stdout: "a\na b c\n",
stderr: "echo $1\necho \"$@\"\n",
}
test! {
name: shebang,
justfile: "
set positional-arguments
foo bar:
#!/bin/sh
echo $1
",
args: ("foo", "hello"),
stdout: "hello\n",
}
test! {
name: shebang_with_attribute,
justfile: "
[positional-arguments]
foo bar:
#!/bin/sh
echo $1
",
args: ("foo", "hello"),
stdout: "hello\n",
}
test! {
name: variadic_shebang,
justfile: r#"
set positional-arguments
foo *bar:
#!/bin/sh
echo $1
echo "$@"
"#,
args: ("foo", "a", "b", "c"),
stdout: "a\na b c\n",
}
test! {
name: default_arguments,
justfile: r#"
set positional-arguments
foo bar='baz':
echo $1
"#,
args: (),
stdout: "baz\n",
stderr: "echo $1\n",
}
test! {
name: empty_variadic_is_undefined,
justfile: r#"
set positional-arguments
foo *bar:
if [ -n "${1+1}" ]; then echo defined; else echo undefined; fi
"#,
args: (),
stdout: "undefined\n",
stderr: "if [ -n \"${1+1}\" ]; then echo defined; else echo undefined; fi\n",
}
test! {
name: variadic_arguments_are_separate,
justfile: r#"
set positional-arguments
foo *bar:
echo $1
echo $2
"#,
args: ("foo", "a", "b"),
stdout: "a\nb\n",
stderr: "echo $1\necho $2\n",
}