diff options
author | UK992 <urbankrajnc92@gmail.com> | 2017-01-16 01:13:44 +0100 |
---|---|---|
committer | UK992 <urbankrajnc92@gmail.com> | 2017-01-18 21:51:56 +0100 |
commit | 8a1aa354d6a86b250e409927a4b876a0574891e6 (patch) | |
tree | 5ec926b08257044363fa0997530af2bf45ce781f /python/tidy | |
parent | 747e130295bc6dce8448a69bfdb01d2216f71738 (diff) | |
download | servo-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.py | 39 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/servo-tidy.toml | 8 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 2 |
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): |