From f366712c2f85b8d1c665fee9f612217a7965b170 Mon Sep 17 00:00:00 2001 From: Lucas Colley Date: Tue, 8 Apr 2025 12:17:30 +0100 Subject: [PATCH 1/2] fix: reserved word substrings closes gh-256 --- crates/deno_task_shell/src/grammar.pest | 4 ++-- crates/tests/src/lib.rs | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/deno_task_shell/src/grammar.pest b/crates/deno_task_shell/src/grammar.pest index dc82856..f00ecd5 100644 --- a/crates/deno_task_shell/src/grammar.pest +++ b/crates/deno_task_shell/src/grammar.pest @@ -177,10 +177,10 @@ Stdout = ${ "|" ~ !"|" ~ !"&"} StdoutStderr = { "|&" } RESERVED_WORD = _{ - If | Then | Else | Elif | Fi | Do | Done | + (If | Then | Else | Elif | Fi | Done | Do | Case | Esac | While | Until | For | Lbrace | Rbrace | Bang | In | - StdoutStderr | Stdout + StdoutStderr | Stdout) ~ &(WHITESPACE | NEWLINE | EOI) } // Main grammar rules diff --git a/crates/tests/src/lib.rs b/crates/tests/src/lib.rs index 19f2560..d1d844d 100644 --- a/crates/tests/src/lib.rs +++ b/crates/tests/src/lib.rs @@ -1463,6 +1463,16 @@ async fn test_set() { .await; } +#[tokio::test] +async fn test_reserved_substring() { + // Test that there is no panic (prefix-dev/shell#256) + TestBuilder::new() + .command(r#"find . -name 'platform*'"#) + .assert_exit_code(1) + .run() + .await; +} + #[cfg(test)] fn no_such_file_error_text() -> &'static str { if cfg!(windows) { From ab4a656d35dfb0ada63159e1f64dcd918174e590 Mon Sep 17 00:00:00 2001 From: Lucas Colley Date: Tue, 8 Apr 2025 13:28:45 +0100 Subject: [PATCH 2/2] edit test --- crates/tests/src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/tests/src/lib.rs b/crates/tests/src/lib.rs index d1d844d..c472fbb 100644 --- a/crates/tests/src/lib.rs +++ b/crates/tests/src/lib.rs @@ -1467,8 +1467,14 @@ async fn test_set() { async fn test_reserved_substring() { // Test that there is no panic (prefix-dev/shell#256) TestBuilder::new() - .command(r#"find . -name 'platform*'"#) - .assert_exit_code(1) + .command(r#"fiqwertymnbvc bla"#) + .assert_exit_code(127) + .run() + .await; + + TestBuilder::new() + .command(r#"forplmoknib bla"#) + .assert_exit_code(127) .run() .await; }