aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy
diff options
context:
space:
mode:
authorAneesh Agrawal <aneeshusa@gmail.com>2016-08-05 09:42:04 -0400
committerAneesh Agrawal <aneeshusa@gmail.com>2016-08-05 09:42:04 -0400
commitf07d8f188a0621545957a0f348271d29b08704ec (patch)
tree588cf61bdc7b92ba628d5341d9e28bb40be46e7d /python/tidy
parent9231ca1c6991c2eaf0d7e08674b2fc9c84a31695 (diff)
downloadservo-f07d8f188a0621545957a0f348271d29b08704ec.tar.gz
servo-f07d8f188a0621545957a0f348271d29b08704ec.zip
Add lint for `[` instead of `[[` in shells scripts
Diffstat (limited to 'python/tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py3
-rw-r--r--python/tidy/servo_tidy_tests/shell_tidy.sh4
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py2
3 files changed, 9 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index 50fd7ca8a5c..3433e8265ed 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -347,6 +347,9 @@ def check_shell(file_name, lines):
if "`" in stripped:
yield (idx + 1, "script should not use backticks for command substitution")
+ if " [ " in stripped or stripped.startswith("[ "):
+ yield (idx + 1, "script should use `[[` instead of `[` for conditional testing")
+
for dollar in re.finditer('\$', stripped):
next_idx = dollar.end()
if next_idx < len(stripped):
diff --git a/python/tidy/servo_tidy_tests/shell_tidy.sh b/python/tidy/servo_tidy_tests/shell_tidy.sh
index e24b361fe16..e38358fc3b6 100644
--- a/python/tidy/servo_tidy_tests/shell_tidy.sh
+++ b/python/tidy/servo_tidy_tests/shell_tidy.sh
@@ -8,3 +8,7 @@ set -o nounset
echo "hello world"
some_var=`echo "command substitution"`
another_var="$some_var"
+if [ -z "${some_var}" ]; then
+ echo "should have used [["
+fi
+[ -z "${another_var}" ]
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index 2eee04a19a3..92b304a5c1a 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -54,6 +54,8 @@ class CheckTidiness(unittest.TestCase):
self.assertEqual('script is missing options "set -o errexit", "set -o pipefail"', errors.next()[2])
self.assertEqual('script should not use backticks for command substitution', errors.next()[2])
self.assertEqual('variable substitutions should use the full \"${VAR}\" form', errors.next()[2])
+ self.assertEqual('script should use `[[` instead of `[` for conditional testing', errors.next()[2])
+ self.assertEqual('script should use `[[` instead of `[` for conditional testing', errors.next()[2])
self.assertNoMoreErrors(errors)
def test_rust(self):