From b34f4c1f4baa62265a0e8392fd9e81cdb58f8476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Adri=C3=A1n=20Ontivero?= Date: Sun, 13 Jan 2019 16:18:39 +0100 Subject: [PATCH] Silence SC2103 when using 'set -e' (fixes #667) --- src/ShellCheck/Analytics.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs index c82fe31..26f198c 100644 --- a/src/ShellCheck/Analytics.hs +++ b/src/ShellCheck/Analytics.hs @@ -2133,6 +2133,8 @@ prop_checkCdAndBack2 = verifyNot checkCdAndBack "for f in *; do cd $f || continu prop_checkCdAndBack3 = verifyNot checkCdAndBack "while [[ $PWD != / ]]; do cd ..; done" prop_checkCdAndBack4 = verify checkCdAndBack "cd $tmp; foo; cd -" prop_checkCdAndBack5 = verifyNot checkCdAndBack "cd ..; foo; cd .." +prop_checkCdAndBack6 = verify checkCdAndBack "for dir in */; do cd \"$dir\"; some_cmd; cd ..; done" +prop_checkCdAndBack7 = verifyNot checkCdAndBack "set -e; for dir in */; do cd \"$dir\"; some_cmd; cd ..; done" checkCdAndBack params = doLists where shell = shellType params @@ -2163,14 +2165,13 @@ checkCdAndBack params = doLists else findCdPair (b:rest) _ -> Nothing - doList list = - let cds = filter ((== Just "cd") . getCmd) list in - potentially $ do - cd <- findCdPair cds - return $ info cd 2103 message - - message = "Use a ( subshell ) to avoid having to cd back." + if hasSetE params + then return () + else let cds = filter ((== Just "cd") . getCmd) list + in potentially $ do + cd <- findCdPair cds + return $ info cd 2103 "Use a ( subshell ) to avoid having to cd back." prop_checkLoopKeywordScope1 = verify checkLoopKeywordScope "continue 2" prop_checkLoopKeywordScope2 = verify checkLoopKeywordScope "for f; do ( break; ); done"