From 4fec98722158e9816a4b3f83c7f6e38abcc5fa50 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Wed, 20 May 2020 14:19:47 -0400 Subject: [PATCH] Fix output of test-tidy with duplicated packages. --- python/tidy/servo_tidy/tidy.py | 12 +++++++----- python/tidy/servo_tidy_tests/duplicated_package.lock | 5 ++++- python/tidy/servo_tidy_tests/test_tidy.py | 9 +++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index 168ff0a9b6cc..9beb0d943cd9 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -352,8 +352,10 @@ def check_lock(file_name, contents): def find_reverse_dependencies(name, content): for package in itertools.chain([content.get("root", {})], content["package"]): for dependency in package.get("dependencies", []): - if dependency.startswith("{} ".format(name)): - yield package["name"], dependency + parts = dependency.split() + dependency = (parts[0], parts[1] if len(parts) > 1 else None, parts[2] if len(parts) > 2 else None) + if dependency[0] == name: + yield package["name"], package["version"], dependency if not file_name.endswith(".lock"): raise StopIteration @@ -394,9 +396,9 @@ def find_reverse_dependencies(name, content): short_source = source.split("#")[0].replace("git+", "") message += "\n\t\033[93mThe following packages depend on version {} from '{}':\033[0m" \ .format(version, short_source) - for name, dependency in packages_dependencies: - if version in dependency and short_source in dependency: - message += "\n\t\t" + name + for pname, package_version, dependency in packages_dependencies: + if version in dependency[1] and (not dependency[2] or short_source in dependency[2]): + message += "\n\t\t" + pname + " " + package_version yield (1, message) # Check to see if we are transitively using any blocked packages diff --git a/python/tidy/servo_tidy_tests/duplicated_package.lock b/python/tidy/servo_tidy_tests/duplicated_package.lock index 6075f99164c9..22acce4257ca 100644 --- a/python/tidy/servo_tidy_tests/duplicated_package.lock +++ b/python/tidy/servo_tidy_tests/duplicated_package.lock @@ -17,13 +17,16 @@ name = "test2" version = "0.1.0" source = "git+https://github.com/user/test2#c54edsf" dependencies = [ - "test 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "test 0.4.9", ] [[package]] name = "test3" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "test 0.5.1", +] [[package]] name = "test3" diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py index 12f384b8674f..3189250143ab 100644 --- a/python/tidy/servo_tidy_tests/test_tidy.py +++ b/python/tidy/servo_tidy_tests/test_tidy.py @@ -195,14 +195,15 @@ def test_lock(self): errors = tidy.collect_errors_for_files(iterFile('duplicated_package.lock'), [tidy.check_lock], [], print_text=False) msg = """duplicate versions for package `test` \t\x1b[93mThe following packages depend on version 0.4.9 from 'crates.io':\x1b[0m -\t\ttest2 -\t\x1b[93mThe following packages depend on version 0.5.1 from 'crates.io':\x1b[0m""" +\t\ttest2 0.1.0 +\t\x1b[93mThe following packages depend on version 0.5.1 from 'crates.io':\x1b[0m +\t\ttest3 0.5.1""" self.assertEqual(msg, next(errors)[2]) msg2 = """duplicate versions for package `test3` \t\x1b[93mThe following packages depend on version 0.5.1 from 'crates.io':\x1b[0m -\t\ttest4 +\t\ttest4 0.1.0 \t\x1b[93mThe following packages depend on version 0.5.1 from 'https://github.com/user/test3':\x1b[0m -\t\ttest5""" +\t\ttest5 0.1.0""" self.assertEqual(msg2, next(errors)[2]) self.assertNoMoreErrors(errors)