From 9e0343cf9231c1d77ebd8137bc94beebc3a06c57 Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Mon, 26 Jun 2023 16:08:22 +0100 Subject: [PATCH] check_whence: Check link targets are valid This should catch a couple of common errors: reversing the two arguments to Link, and not making the second argument relative to the first. Signed-off-by: Adam Sampson Signed-off-by: Josh Boyer --- check_whence.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/check_whence.py b/check_whence.py index 2e6950a8..d45d90f8 100755 --- a/check_whence.py +++ b/check_whence.py @@ -91,6 +91,24 @@ def main(): sys.stderr.write('E: %s listed in WHENCE does not exist\n' % name) ret = 1 + # A link can point to another link, or to a file... + valid_targets = set(link[0] for link in links_list) | git_files + + # ... or to a directory + for target in set(valid_targets): + dirname = target + while True: + dirname = os.path.dirname(dirname) + if dirname == '': + break + valid_targets.add(dirname) + + for name, target in sorted(links_list): + if target not in valid_targets: + sys.stderr.write('E: target %s of link %s in WHENCE' + ' does not exist\n' % (target, name)) + ret = 1 + for name in sorted(list(git_files - known_files)): # Ignore subdirectory changelogs and GPG detached signatures if (name.endswith('/ChangeLog') or