1
1
mirror of https://github.com/casey/just.git synced 2024-11-26 00:24:22 +03:00
just/tests/script.rs
2024-07-31 02:21:41 +00:00

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();
}