diff options
author | Siddhartha Mishra <sidm1999@gmail.com> | 2019-09-21 18:12:41 +0530 |
---|---|---|
committer | Siddhartha Mishra <sidm1999@gmail.com> | 2019-09-22 14:16:46 +0530 |
commit | aa7ba1a850543a147074ec0c693d7bfcdfda9797 (patch) | |
tree | 4befbac409916500fcf8bb2b6d00666252d03810 /python/tidy/servo_tidy/tidy.py | |
parent | 3ced8d4ddcc7328e27231f9db9ce2f441b01d37e (diff) | |
download | servo-aa7ba1a850543a147074ec0c693d7bfcdfda9797.tar.gz servo-aa7ba1a850543a147074ec0c693d7bfcdfda9797.zip |
report when blocked package exception is not needed
Diffstat (limited to 'python/tidy/servo_tidy/tidy.py')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index 1477fe188ab..0069f344fa7 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -402,18 +402,32 @@ def check_lock(file_name, contents): yield (1, message) # Check to see if we are transitively using any blocked packages + blocked_packages = config["blocked-packages"] + # Create map to keep track of visited exception packages + visited_whitelisted_packages = {package: {} for package in blocked_packages.keys()} + for package in content.get("package", []): package_name = package.get("name") package_version = package.get("version") for dependency in package.get("dependencies", []): dependency = dependency.split() dependency_name = dependency[0] - whitelist = config['blocked-packages'].get(dependency_name) + whitelist = blocked_packages.get(dependency_name) if whitelist is not None: if package_name not in whitelist: fmt = "Package {} {} depends on blocked package {}." message = fmt.format(package_name, package_version, dependency_name) yield (1, message) + else: + visited_whitelisted_packages[dependency_name][package_name] = True + + # Check if all the exceptions to blocked packages actually depend on the blocked package + for dependency_name, package_names in blocked_packages.iteritems(): + for package_name in package_names: + if not visited_whitelisted_packages[dependency_name].get(package_name): + fmt = "Package {} is not required to be an exception of blocked package {}." + message = fmt.format(package_name, dependency_name) + yield (1, message) def check_toml(file_name, lines): |