aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy
diff options
context:
space:
mode:
authorUK992 <urbankrajnc92@gmail.com>2017-01-16 01:13:44 +0100
committerUK992 <urbankrajnc92@gmail.com>2017-01-18 21:51:56 +0100
commit8a1aa354d6a86b250e409927a4b876a0574891e6 (patch)
tree5ec926b08257044363fa0997530af2bf45ce781f /python/tidy
parent747e130295bc6dce8448a69bfdb01d2216f71738 (diff)
downloadservo-8a1aa354d6a86b250e409927a4b876a0574891e6.tar.gz
servo-8a1aa354d6a86b250e409927a4b876a0574891e6.zip
Tidy: Report invalid listed ignored directories and files
Diffstat (limited to 'python/tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py39
-rw-r--r--python/tidy/servo_tidy_tests/servo-tidy.toml8
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py2
3 files changed, 42 insertions, 7 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index dde357fda37..8a3626e6225 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -92,7 +92,10 @@ def is_iter_empty(iterator):
def normilize_paths(paths):
- return [os.path.join(*path.split('/')) for path in paths]
+ if isinstance(paths, basestring):
+ return os.path.join(*paths.split('/'))
+ else:
+ return [os.path.join(*path.split('/')) for path in paths]
# A simple wrapper for iterators to show progress
@@ -827,6 +830,17 @@ def check_config_file(config_file, print_text=True):
if print_text:
print '\rChecking the config file...'
+ config_content = toml.loads(conf_file)
+ exclude = config_content.get("ignore", {})
+
+ # Check for invalid listed ignored directories
+ exclude_dirs = exclude.get("directories", [])
+ skip_dirs = ["./target", "./tests"]
+ invalid_dirs = [d for d in exclude_dirs if not os.path.isdir(d) and not any(s in d for s in skip_dirs)]
+
+ # Check for invalid listed ignored files
+ invalid_files = [f for f in exclude.get("files", []) if not os.path.exists(f)]
+
current_table = ""
for idx, line in enumerate(lines):
# Ignore comment lines
@@ -841,6 +855,22 @@ def check_config_file(config_file, print_text=True):
current_table = table_name
continue
+ # Print invalid listed ignored directories
+ if current_table == "ignore" and invalid_dirs:
+ for d in invalid_dirs:
+ if line.strip().strip('\'",') == d:
+ yield config_file, idx + 1, "ignored directory '%s' doesn't exist" % d
+ invalid_dirs.remove(d)
+ break
+
+ # Print invalid listed ignored files
+ if current_table == "ignore" and invalid_files:
+ for f in invalid_files:
+ if line.strip().strip('\'",') == f:
+ yield config_file, idx + 1, "ignored file '%s' doesn't exist" % f
+ invalid_files.remove(f)
+ break
+
# Skip if there is no equal sign in line, assuming it's not a key
if "=" not in line:
continue
@@ -855,11 +885,10 @@ def check_config_file(config_file, print_text=True):
yield config_file, idx + 1, "invalid config key '%s'" % key
# Parse config file
- parse_config(conf_file)
+ parse_config(config_content)
-def parse_config(content):
- config_file = toml.loads(content)
+def parse_config(config_file):
exclude = config_file.get("ignore", {})
# Add list of ignored directories to config
config["ignore"]["directories"] += normilize_paths(exclude.get("directories", []))
@@ -872,7 +901,7 @@ def parse_config(content):
dirs_to_check = config_file.get("check_ext", {})
# Fix the paths (OS-dependent)
for path, exts in dirs_to_check.items():
- config['check_ext'][normilize_paths([path])[0]] = exts
+ config['check_ext'][normilize_paths(path)] = exts
# Add list of blocked packages
config["blocked-packages"] = config_file.get("blocked-packages", {})
diff --git a/python/tidy/servo_tidy_tests/servo-tidy.toml b/python/tidy/servo_tidy_tests/servo-tidy.toml
index 855ea554c72..690098b0e44 100644
--- a/python/tidy/servo_tidy_tests/servo-tidy.toml
+++ b/python/tidy/servo_tidy_tests/servo-tidy.toml
@@ -11,5 +11,9 @@ wrong-key = false
wrong-key = true
[ignore]
-files = []
-directories = []
+files = [
+ "./fake/file.html",
+]
+directories = [
+ "./fake/dir",
+]
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index d8738b08981..f9ccf889ec0 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -29,6 +29,8 @@ class CheckTidiness(unittest.TestCase):
self.assertEqual("invalid config key 'key-outside'", errors.next()[2])
self.assertEqual("invalid config key 'wrong-key'", errors.next()[2])
self.assertEqual('invalid config table [wrong]', errors.next()[2])
+ self.assertEqual("ignored file './fake/file.html' doesn't exist", errors.next()[2])
+ self.assertEqual("ignored directory './fake/dir' doesn't exist", errors.next()[2])
self.assertNoMoreErrors(errors)
def test_directory_checks(self):