use super::RULE;
use crate::log::init_test_log;
#[test]
fn ignore_command_position() {
init_test_log();
let code = r#"
def main [] {
".md"
}
"#;
RULE.assert_ignores(code);
}
#[test]
fn ignore_command_position_if() {
init_test_log();
let code = r#"
def main [] {
if $in {
".md"
}
}
"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_bare_words() {
let code = r#"echo hello world"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_with_spaces() {
let code = r#"echo "hello world""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_dash() {
let code = r#"echo "-flag""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_dollar() {
let code = r#"echo "$variable""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_with_pipe() {
let code = r#"echo "a|b""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_interpolation() {
let code = r#"let name = world; echo $"hello ($name)""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_backtick_strings() {
let code = r#"ls `test`"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_raw_strings() {
let code = r#"echo r#'test'#"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_empty_string() {
let code = r#"echo """#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_quoted_number() {
let code = r#"echo "123""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_quoted_float() {
let code = r#"echo "3.14""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_quoted_true() {
let code = r#"echo "true""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_quoted_false() {
let code = r#"echo "false""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_quoted_null() {
let code = r#"echo "null""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_with_semicolon() {
let code = r#"echo "a;b""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_with_single_quote() {
let code = r#"echo "it's""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_hash() {
let code = "echo \"#comment\"";
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_with_hash_in_middle() {
let code = r#"echo "foo#bar""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_paren() {
let code = r#"echo "(1 + 2)""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_bracket() {
let code = r#"echo "[1, 2]""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_starting_with_brace() {
let code = r#"echo "{a: 1}""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_double_ampersand() {
let code = r#"echo "&&""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_command_position_let() {
let code = r#"let foo = "bar""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_command_position_if_block() {
let code = r#"if true {"fizz"}"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_command_position_else_block() {
let code = r#"if false {} else {"buzz"}"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_command_position_closure() {
let code = r#"[1 2] | each {|x| "result"}"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_command_position_match_arm() {
let code = r#"match $x { 1 => "one" }"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_let_rhs() {
let code = r#"let x = "my_variable""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_in_let_rhs_with_dash() {
let code = r#"let x = "my-command""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_glob_pattern_with_asterisk() {
let code = r#"echo "*.txt""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_glob_pattern_with_question_mark() {
let code = r#"echo "?.txt""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_glob_pattern_with_multiple_wildcards() {
let code = r#"echo "**/*.rs""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_glob_pattern_in_string() {
let code = r#"echo "file?.txt""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_glob_pattern_asterisk_in_middle() {
let code = r#"echo "test*file""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_range_expression() {
let code = r#"echo "0..10""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_range_expression_with_step() {
let code = r#"echo "1..2..10""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_unbounded_range() {
let code = r#"echo "0..""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_tilde_path() {
let code = r#"echo "~""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_tilde_with_path() {
let code = r#"echo "~/documents""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_scientific_notation() {
let code = r#"echo "1e5""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_scientific_notation_negative() {
let code = r#"echo "1e-5""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_infinity() {
let code = r#"echo "inf""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_nan() {
let code = r#"echo "nan""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_iso_date() {
let code = r#"echo "2024-01-15""#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_as_lhs_of_binary_expression() {
let code = r#"let foo = "bar" + baz"#;
RULE.assert_ignores(code);
}
#[test]
fn ignores_string_as_lhs_of_binary_expression_comparison() {
let code = r#"if "test" == $var { }"#;
RULE.assert_ignores(code);
}