1
1
mirror of https://github.com/casey/just.git synced 2024-11-28 22:00:18 +03:00
just/tests/error_messages.rs

130 lines
2.5 KiB
Rust
Raw Normal View History

use super::*;
test! {
name: invalid_alias_attribute,
justfile: "[private]\n[linux]\nalias t := test\n\ntest:\n",
stderr: "
error: Alias `t` has invalid attribute `linux`
justfile:3:7
3 alias t := test
^
",
status: EXIT_FAILURE,
}
test! {
name: expected_keyword,
justfile: "foo := if '' == '' { '' } arlo { '' }",
stderr: "
error: Expected keyword `else` but found identifier `arlo`
justfile:1:27
1 foo := if '' == '' { '' } arlo { '' }
^^^^
",
status: EXIT_FAILURE,
}
test! {
name: unexpected_character,
2023-01-13 06:25:28 +03:00
justfile: "&~",
stderr: "
2023-01-13 06:25:28 +03:00
error: Expected character `&`
justfile:1:2
1 &~
^
",
status: EXIT_FAILURE,
}
#[test]
fn argument_count_mismatch() {
Test::new()
.justfile("foo a b:")
2023-01-04 09:31:56 +03:00
.args(["foo"])
.stderr(
"
error: Recipe `foo` got 0 arguments but takes 2
usage:
just foo a b
",
)
.status(EXIT_FAILURE)
.run();
}
#[test]
fn file_path_is_indented_if_justfile_is_long() {
Test::new()
.justfile("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfoo")
.status(EXIT_FAILURE)
.stderr(
"
error: Expected '*', ':', '$', identifier, or '+', but found end of file
justfile:20:4
20 foo
^
",
)
.run();
}
#[test]
fn file_paths_are_relative() {
Test::new()
.justfile("import 'foo/bar.just'")
.write("foo/bar.just", "baz")
.status(EXIT_FAILURE)
.stderr(format!(
"
error: Expected '*', ':', '$', identifier, or '+', but found end of file
2024-07-28 01:00:19 +03:00
foo{MAIN_SEPARATOR}bar.just:1:4
1 baz
^
",
))
.run();
}
#[test]
#[cfg(not(windows))]
fn file_paths_not_in_subdir_are_absolute() {
Test::new()
.write("foo/justfile", "import '../bar.just'")
.write("bar.just", "baz")
.no_justfile()
.args(["--justfile", "foo/justfile"])
.status(EXIT_FAILURE)
.stderr_regex(
r"error: Expected '\*', ':', '\$', identifier, or '\+', but found end of file
/.*/bar.just:1:4
1 baz
\^
",
)
.run();
}
#[test]
fn redefinition_errors_properly_swap_types() {
Test::new()
.write("foo.just", "foo:")
.justfile("foo:\n echo foo\n\nmod foo 'foo.just'")
.status(EXIT_FAILURE)
.stderr(
"
error: Recipe `foo` defined on line 1 is redefined as a module on line 4
justfile:4:5
4 mod foo 'foo.just'
^^^
",
)
.run();
}