diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 11 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 18 |
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) |