mirror of
https://github.com/casey/just.git
synced 2024-11-26 00:24:22 +03:00
372 lines
3.9 KiB
Rust
372 lines
3.9 KiB
Rust
use super::*;
|
|
|
|
#[test]
|
|
fn unstable() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
[script('sh', '-u')]
|
|
foo:
|
|
echo FOO
|
|
",
|
|
)
|
|
.stderr_regex(r"error: The `\[script\]` attribute is currently unstable\..*")
|
|
.status(EXIT_FAILURE)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn script_interpreter_setting_is_unstable() {
|
|
Test::new()
|
|
.justfile("set script-interpreter := ['sh']")
|
|
.status(EXIT_FAILURE)
|
|
.stderr_regex(r"error: The `script-interpreter` setting is currently unstable\..*")
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn runs_with_command() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script('cat')]
|
|
foo:
|
|
FOO
|
|
",
|
|
)
|
|
.stdout(
|
|
"
|
|
|
|
|
|
|
|
|
|
FOO
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn no_arguments() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script('sh')]
|
|
foo:
|
|
echo foo
|
|
",
|
|
)
|
|
.stdout("foo\n")
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn with_arguments() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script('sh', '-x')]
|
|
foo:
|
|
echo foo
|
|
",
|
|
)
|
|
.stdout("foo\n")
|
|
.stderr("+ echo foo\n")
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn not_allowed_with_shebang() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script('sh', '-u')]
|
|
foo:
|
|
#!/bin/sh
|
|
|
|
",
|
|
)
|
|
.stderr(
|
|
"
|
|
error: Recipe `foo` has both shebang line and `[script]` attribute
|
|
——▶ justfile:4:1
|
|
│
|
|
4 │ foo:
|
|
│ ^^^
|
|
",
|
|
)
|
|
.status(EXIT_FAILURE)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn script_line_numbers() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script('cat')]
|
|
foo:
|
|
FOO
|
|
|
|
BAR
|
|
",
|
|
)
|
|
.stdout(
|
|
"
|
|
|
|
|
|
|
|
|
|
FOO
|
|
|
|
BAR
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn script_line_numbers_with_multi_line_recipe_signature() {
|
|
Test::new()
|
|
.justfile(
|
|
r"
|
|
set unstable
|
|
|
|
[script('cat')]
|
|
foo bar='baz' \
|
|
:
|
|
FOO
|
|
|
|
BAR
|
|
|
|
{{ \
|
|
bar \
|
|
}}
|
|
|
|
BAZ
|
|
",
|
|
)
|
|
.stdout(
|
|
"
|
|
|
|
|
|
|
|
|
|
|
|
FOO
|
|
|
|
BAR
|
|
|
|
baz
|
|
|
|
|
|
|
|
BAZ
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
#[test]
|
|
fn shebang_line_numbers() {
|
|
Test::new()
|
|
.justfile(
|
|
"foo:
|
|
#!/usr/bin/env cat
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
|
|
|
|
",
|
|
)
|
|
.stdout(
|
|
"#!/usr/bin/env cat
|
|
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
#[test]
|
|
fn shebang_line_numbers_with_multiline_constructs() {
|
|
Test::new()
|
|
.justfile(
|
|
r"foo b='b'\
|
|
:
|
|
#!/usr/bin/env cat
|
|
|
|
a
|
|
|
|
{{ \
|
|
b \
|
|
}}
|
|
|
|
|
|
c
|
|
|
|
|
|
",
|
|
)
|
|
.stdout(
|
|
"#!/usr/bin/env cat
|
|
|
|
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
|
|
|
|
c
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
#[test]
|
|
fn multiline_shebang_line_numbers() {
|
|
Test::new()
|
|
.justfile(
|
|
"foo:
|
|
#!/usr/bin/env cat
|
|
#!shebang
|
|
#!shebang
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
|
|
|
|
",
|
|
)
|
|
.stdout(
|
|
"#!/usr/bin/env cat
|
|
#!shebang
|
|
#!shebang
|
|
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[cfg(windows)]
|
|
#[test]
|
|
fn shebang_line_numbers() {
|
|
Test::new()
|
|
.justfile(
|
|
"foo:
|
|
#!/usr/bin/env cat
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
|
|
|
|
",
|
|
)
|
|
.stdout(
|
|
"
|
|
|
|
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
c
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn no_arguments_with_default_script_interpreter() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
[script]
|
|
foo:
|
|
case $- in
|
|
*e*) echo '-e is set';;
|
|
esac
|
|
|
|
case $- in
|
|
*u*) echo '-u is set';;
|
|
esac
|
|
",
|
|
)
|
|
.stdout(
|
|
"
|
|
-e is set
|
|
-u is set
|
|
",
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn no_arguments_with_non_default_script_interpreter() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set unstable
|
|
|
|
set script-interpreter := ['sh']
|
|
|
|
[script]
|
|
foo:
|
|
case $- in
|
|
*e*) echo '-e is set';;
|
|
esac
|
|
|
|
case $- in
|
|
*u*) echo '-u is set';;
|
|
esac
|
|
",
|
|
)
|
|
.run();
|
|
}
|