Re: [PATCH v2 2/6] chainlint: match 'quoted' here-doc tags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes:

> A here-doc tag can be quoted ('EOF') or escaped (\EOF) to suppress
> interpolation within the body. Although, chainlint recognizes escaped
> tags, it does not know about quoted tags. For completeness, teach it to
> recognize quoted tags, as well.

Is this step merely completeness and future-proofing, or do we have
existing instances that the linter would be confused without this
patch?  I am primarily wondering what the reason is that <<"EOF" is
not looked for while we are at it (the answer could be that we
have tests that use <<'EOF' but not <<"EOF").

> Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx>
> ---
>  t/chainlint.sed                      | 8 ++++----
>  t/chainlint/here-doc.expect          | 2 ++
>  t/chainlint/here-doc.test            | 7 +++++++
>  t/chainlint/subshell-here-doc.expect | 1 +
>  t/chainlint/subshell-here-doc.test   | 4 ++++
>  5 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/t/chainlint.sed b/t/chainlint.sed
> index 2af1a687f8..2901494e8a 100644
> --- a/t/chainlint.sed
> +++ b/t/chainlint.sed
> @@ -94,8 +94,8 @@
>  
>  # here-doc -- swallow it to avoid false hits within its body (but keep the
>  # command to which it was attached)
> -/<<[ 	]*[-\\]*[A-Za-z0-9_]/ {
> -	s/^\(.*\)<<[ 	]*[-\\]*\([A-Za-z0-9_][A-Za-z0-9_]*\)/<\2>\1<</
> +/<<[ 	]*[-\\']*[A-Za-z0-9_]/ {
> +	s/^\(.*\)<<[ 	]*[-\\']*\([A-Za-z0-9_][A-Za-z0-9_]*\)'*/<\2>\1<</
>  	s/[ 	]*<<//
>  	:hereslurp
>  	N
> @@ -158,7 +158,7 @@ s/.*\n//
>  	/"[^'"]*'[^'"]*"/!bsqstring
>  }
>  # here-doc -- swallow it
> -/<<[ 	]*[-\\]*[A-Za-z0-9_]/bheredoc
> +/<<[ 	]*[-\\']*[A-Za-z0-9_]/bheredoc
>  # comment or empty line -- discard since final non-comment, non-empty line
>  # before closing ")", "done", "elsif", "else", or "fi" will need to be
>  # re-visited to drop "suspect" marking since final line of those constructs
> @@ -268,7 +268,7 @@ bcheckchain
>  # found here-doc -- swallow it to avoid false hits within its body (but keep
>  # the command to which it was attached)
>  :heredoc
> -s/^\(.*\)<<[ 	]*[-\\]*\([A-Za-z0-9_][A-Za-z0-9_]*\)/<\2>\1<</
> +s/^\(.*\)<<[ 	]*[-\\']*\([A-Za-z0-9_][A-Za-z0-9_]*\)'*/<\2>\1<</
>  s/[ 	]*<<//
>  :hereslurpsub
>  N
> diff --git a/t/chainlint/here-doc.expect b/t/chainlint/here-doc.expect
> index 33bc3cc0b4..aff6568716 100644
> --- a/t/chainlint/here-doc.expect
> +++ b/t/chainlint/here-doc.expect
> @@ -2,4 +2,6 @@ boodle wobba        gorgo snoot        wafta snurb &&
>  
>  cat >foo &&
>  
> +cat >bar &&
> +
>  horticulture
> diff --git a/t/chainlint/here-doc.test b/t/chainlint/here-doc.test
> index 8986eefe74..f2bb14b693 100644
> --- a/t/chainlint/here-doc.test
> +++ b/t/chainlint/here-doc.test
> @@ -14,6 +14,13 @@ boz
>  woz
>  Arbitrary_Tag_42
>  
> +# LINT: swallow 'quoted' here-doc
> +cat <<'FUMP' >bar &&
> +snoz
> +boz
> +woz
> +FUMP
> +
>  # LINT: swallow here-doc (EOF is last line of test)
>  horticulture <<\EOF
>  gomez
> diff --git a/t/chainlint/subshell-here-doc.expect b/t/chainlint/subshell-here-doc.expect
> index 7c2da63bc7..7663ea7fc4 100644
> --- a/t/chainlint/subshell-here-doc.expect
> +++ b/t/chainlint/subshell-here-doc.expect
> @@ -5,5 +5,6 @@
>  >) &&
>  (
>  	cat >bup &&
> +	cat >bup2 &&
>  	meep
>  >)
> diff --git a/t/chainlint/subshell-here-doc.test b/t/chainlint/subshell-here-doc.test
> index 05139af0b5..b6b5a9b33a 100644
> --- a/t/chainlint/subshell-here-doc.test
> +++ b/t/chainlint/subshell-here-doc.test
> @@ -27,5 +27,9 @@
>  	glink
>  	FIZZ
>  	ARBITRARY
> +	cat <<-'ARBITRARY2' >bup2 &&
> +	glink
> +	FIZZ
> +	ARBITRARY2
>  	meep
>  )



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux