aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-10-02 12:00:36 -0500
committerGitHub <noreply@github.com>2016-10-02 12:00:36 -0500
commit3a5fd8b49a45b4647e9823d3e10243d9f4b2277b (patch)
tree91b1b2a70305f26c4bbf88a9687f15c799fb0209
parentc4021a6765661335080b05f713d3571a8286ef3a (diff)
parent62d98821856f8610c78712f8e0baef5c330fb1f9 (diff)
downloadservo-3a5fd8b49a45b4647e9823d3e10243d9f4b2277b.tar.gz
servo-3a5fd8b49a45b4647e9823d3e10243d9f4b2277b.zip
Auto merge of #13447 - gterzian:check_webidls_folder_files, r=Wafflespeanut
Have tidy ensure that the there are no extra files in the webidls folder #13427 <!-- Please describe your changes on the following line: --> Have tidy ensure that the there are no extra files in the webidls folder #13427 --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #13427 (github issue number if applicable). <!-- Either: --> - [x] There are tests for these changes <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13447) <!-- Reviewable:end -->
-rw-r--r--python/tidy/README.rst5
-rw-r--r--python/tidy/servo_tidy/tidy.py33
-rw-r--r--python/tidy/servo_tidy_tests/dir_check/only_webidl/test.webidl0
-rw-r--r--python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.rs0
-rw-r--r--python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.test0
-rw-r--r--python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.webidl0
-rw-r--r--python/tidy/servo_tidy_tests/dir_check/webidl_plus/test2.rs0
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py12
-rw-r--r--servo-tidy.toml5
9 files changed, 52 insertions, 3 deletions
diff --git a/python/tidy/README.rst b/python/tidy/README.rst
index 2d9f0e8f6e8..c296afd09a0 100644
--- a/python/tidy/README.rst
+++ b/python/tidy/README.rst
@@ -9,4 +9,9 @@ Install from PyPI (coming soon) or
pip install -e git+https://github.com/servo/servo.git#egg=servo_tidy&subdirectory=python/tidy
```
+To run the tests
+++++++++++++++++
+```
+./mach test-tidy --self-test
+```
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index 410c0af7ac3..91de7229d43 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -35,7 +35,8 @@ config = {
"./.", # ignore hidden directories
],
"packages": [],
- }
+ },
+ "check_ext": {}
}
COMMENTS = ["// ", "# ", " *", "/* "]
@@ -687,7 +688,7 @@ def check_config_file(config_file, print_text=True):
# Check for invalid tables
if re.match("\[(.*?)\]", line.strip()):
table_name = re.findall(r"\[(.*?)\]", line)[0].strip()
- if table_name not in ("configs", "ignore"):
+ if table_name not in ("configs", "ignore", "check_ext"):
yield config_file, idx + 1, "invalid config table [%s]" % table_name
current_table = table_name
continue
@@ -724,6 +725,13 @@ def parse_config(content):
config['ignore']['directories'] = map(lambda path: os.path.join(*path.split('/')),
config['ignore']['directories'])
+ # Add dict of dir, list of expected ext to config
+ dirs_to_check = config_file.get("check_ext", {})
+ # Fix the paths (OS-dependent)
+ for path, exts in dirs_to_check.items():
+ fixed_path = os.path.join(*path.split('/'))
+ config['check_ext'][fixed_path] = exts
+
# Override default configs
user_configs = config_file.get("configs", [])
for pref in user_configs:
@@ -731,6 +739,23 @@ def parse_config(content):
config[pref] = user_configs[pref]
+def check_directory_files(directories, print_text=True):
+ if print_text:
+ print '\rChecking directories for correct file extensions...'
+ for directory, file_extensions in directories.items():
+ files = sorted(os.listdir(directory))
+ for filename in files:
+ if not any(filename.endswith(ext) for ext in file_extensions):
+ details = {
+ "name": os.path.basename(filename),
+ "ext": ", ".join(file_extensions),
+ "dir_name": directory
+ }
+ message = '''Unexpected extension found for {name}. \
+We only expect files with {ext} extensions in {dir_name}'''.format(**details)
+ yield (filename, 1, message)
+
+
def collect_errors_for_files(files_to_check, checking_functions, line_checking_functions, print_text=True):
(has_element, files_to_check) = is_iter_empty(files_to_check)
if not has_element:
@@ -831,6 +856,8 @@ def get_file_list(directory, only_changed_files=False, exclude_dirs=[]):
def scan(only_changed_files=False, progress=True):
# check config file for errors
config_errors = check_config_file(CONFIG_FILE_PATH)
+ # check directories contain expected files
+ directory_errors = check_directory_files(config['check_ext'])
# standard checks
files_to_check = filter_files('.', only_changed_files, progress)
checking_functions = (check_flake8, check_lock, check_webidl_spec, check_json)
@@ -842,7 +869,7 @@ def scan(only_changed_files=False, progress=True):
# wpt lint checks
wpt_lint_errors = check_wpt_lint_errors(get_wpt_files(only_changed_files, progress))
# chain all the iterators
- errors = itertools.chain(config_errors, file_errors, dep_license_errors, wpt_lint_errors)
+ errors = itertools.chain(config_errors, directory_errors, file_errors, dep_license_errors, wpt_lint_errors)
error = None
for error in errors:
diff --git a/python/tidy/servo_tidy_tests/dir_check/only_webidl/test.webidl b/python/tidy/servo_tidy_tests/dir_check/only_webidl/test.webidl
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/dir_check/only_webidl/test.webidl
diff --git a/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.rs b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.rs
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.rs
diff --git a/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.test b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.test
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.test
diff --git a/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.webidl b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.webidl
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test.webidl
diff --git a/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test2.rs b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test2.rs
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/dir_check/webidl_plus/test2.rs
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index 4bf21cfa5e4..dca0c5765b1 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -9,6 +9,7 @@
import os
import unittest
+
from servo_tidy import tidy
base_path = 'servo_tidy_tests/' if os.path.exists('servo_tidy_tests/') else 'python/tidy/servo_tidy_tests/'
@@ -30,6 +31,17 @@ class CheckTidiness(unittest.TestCase):
self.assertEqual('invalid config table [wrong]', errors.next()[2])
self.assertNoMoreErrors(errors)
+ def test_directory_checks(self):
+ dirs = {
+ os.path.join(base_path, "dir_check/webidl_plus"): ['webidl', 'test'],
+ os.path.join(base_path, "dir_check/only_webidl"): ['webidl']
+ }
+ errors = tidy.check_directory_files(dirs)
+ error_dir = os.path.join(base_path, "dir_check/webidl_plus")
+ self.assertEqual("Unexpected extension found for test.rs. We only expect files with webidl, test extensions in {0}".format(error_dir), errors.next()[2])
+ self.assertEqual("Unexpected extension found for test2.rs. We only expect files with webidl, test extensions in {0}".format(error_dir), errors.next()[2])
+ self.assertNoMoreErrors(errors)
+
def test_spaces_correctnes(self):
errors = tidy.collect_errors_for_files(iterFile('wrong_space.rs'), [], [tidy.check_by_line], print_text=False)
self.assertEqual('trailing whitespace', errors.next()[2])
diff --git a/servo-tidy.toml b/servo-tidy.toml
index 3792a77ad72..d2317d17b9f 100644
--- a/servo-tidy.toml
+++ b/servo-tidy.toml
@@ -46,3 +46,8 @@ directories = [
"./target",
"./ports/cef",
]
+
+# Directories that are checked for correct file extension
+[check_ext]
+# directory, list of expected file extensions
+"components/script/dom/webidls" = [".webidl"]