aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/tidy/servo_tidy/tidy.py11
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py18
2 files changed, 27 insertions, 2 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index fbc4952e1ee..2f638abe099 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -339,10 +339,17 @@ def check_lock(file_name, contents):
packages_by_name.setdefault(package["name"], []).append((package["version"], source))
for (name, packages) in packages_by_name.iteritems():
- if name in exceptions or len(packages) <= 1:
+ has_duplicates = len(packages) > 1
+ duplicates_allowed = name in exceptions
+
+ if has_duplicates == duplicates_allowed:
continue
- message = "duplicate versions for package `{}`".format(name)
+ if duplicates_allowed:
+ message = 'duplicates for `{}` are allowed, but only single version found'.format(name)
+ else:
+ message = "duplicate versions for package `{}`".format(name)
+
packages.sort()
packages_dependencies = list(find_reverse_dependencies(name, content))
for version, source in packages:
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index 3826e4537b5..dd4c06db4c0 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -233,6 +233,24 @@ class CheckTidiness(unittest.TestCase):
self.assertEqual(msg2, errors.next()[2])
self.assertNoMoreErrors(errors)
+ def test_lock_ignore_without_duplicates(self):
+ tidy.config["ignore"]["packages"] = ["test", "test2", "test3", "test5"]
+ errors = tidy.collect_errors_for_files(iterFile('duplicated_package.lock'), [tidy.check_lock], [], print_text=False)
+
+ msg = (
+ "duplicates for `test2` are allowed, but only single version found"
+ "\n\t\x1b[93mThe following packages depend on version 0.1.0 from 'https://github.com/user/test2':\x1b[0m"
+ )
+ self.assertEqual(msg, errors.next()[2])
+
+ msg2 = (
+ "duplicates for `test5` are allowed, but only single version found"
+ "\n\t\x1b[93mThe following packages depend on version 0.1.0 from 'https://github.com/':\x1b[0m"
+ )
+ self.assertEqual(msg2, errors.next()[2])
+
+ self.assertNoMoreErrors(errors)
+
def test_lint_runner(self):
test_path = base_path + 'lints/'
runner = tidy.LintRunner(only_changed_files=False, progress=False)