[PATCH v2 3/6] chainlint: recognize multi-line $(...) when command cuddled with "$("
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Aug 13, 2018, 08:47 UTC
- Message-ID
- <20180813084739.16134-4-sunshine@sunshineco.com>
- In-Reply-To
- <20180813084739.16134-1-sunshine@sunshineco.com>
For multi-line $(...) expressions nested within subshells, chainlint.sed only recognizes:
x=$(
echo foo &&
...but it is not unlikely that test authors may also cuddle the command with the opening "$(", so support that style, as well:
x=$(echo foo &&
...The closing ")" is already correctly recognized when cuddled or not.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- t/chainlint.sed | 2 +- .../multi-line-nested-command-substitution.expect | 11 ++++++++++- .../multi-line-nested-command-substitution.test | 11 ++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/t/chainlint.sed b/t/chainlint.sed index 2901494e8a..afb2443a9c 100644 --- a/t/chainlint.sed +++ b/t/chainlint.sed @@ -216,7 +216,7 @@ s/.*\n// # "$(...)" -- command substitution; not closing ")" /\$([^)][^)]*)[^)]*$/bcheckchain # multi-line "$(...\n...)" -- command substitution; treat as nested subshell -/\$([ ]*$/bnest +/\$([^)]*$/bnest # "=(...)" -- Bash array assignment; not closing ")" /=(/bcheckchain # closing "...) &&" diff --git a/t/chainlint/multi-line-nested-command-substitution.expect b/t/chainlint/multi-line-nested-command-substitution.expect index 19c023b1c8..59b6c8b850 100644 --- a/t/chainlint/multi-line-nested-command-substitution.expect +++ b/t/chainlint/multi-line-nested-command-substitution.expect @@ -6,4 +6,13 @@ >> ) && echo ok >) | -sort +sort && +( + bar && + x=$(echo bar | + cat +>> ) && + y=$(echo baz | +>> fip) && + echo fail +>) diff --git a/t/chainlint/multi-line-nested-command-substitution.test b/t/chainlint/multi-line-nested-command-substitution.test index ca0620ab6b..300058341b 100644 --- a/t/chainlint/multi-line-nested-command-substitution.test +++ b/t/chainlint/multi-line-nested-command-substitution.test @@ -6,4 +6,13 @@ ) && echo ok ) | -sort +sort && +( + bar && + x=$(echo bar | + cat + ) && + y=$(echo baz | + fip) && + echo fail +)
-- 2.18.0.267.gbc8be36ecb