X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/352cba96de3b4cd138ead4a765756fb169f40fe5..02f83340ee894eae5a661870c2af377abf8a195b:/pinch.py diff --git a/pinch.py b/pinch.py index 5eb107b..bda7633 100644 --- a/pinch.py +++ b/pinch.py @@ -266,15 +266,29 @@ def parse_channel(v: Verification, channel_html: str) \ d = xml.dom.minidom.parseString(channel_html) v.ok() - v.status('Extracting release name:') - title_name = d.getElementsByTagName( - 'title')[0].firstChild.nodeValue.split()[2] - h1_name = d.getElementsByTagName('h1')[0].firstChild.nodeValue.split()[2] - v.status(title_name) - v.result(title_name == h1_name) - - v.status('Extracting git commit:') + v.status('Finding release name (1)') + title = d.getElementsByTagName('title')[0].firstChild + v.result(isinstance(title, xml.dom.minidom.CharacterData)) + assert isinstance(title, xml.dom.minidom.CharacterData) + release_name = title.nodeValue.split()[2] + v.status('Finding release name (2)') + h1 = d.getElementsByTagName('h1')[0].firstChild + v.result(isinstance(h1, xml.dom.minidom.CharacterData)) + assert isinstance(h1, xml.dom.minidom.CharacterData) + v.status('Verifying release name:') + v.status(release_name) + v.result(release_name == h1.nodeValue.split()[2]) + + v.status('Finding git commit') git_commit_node = d.getElementsByTagName('tt')[0] + v.result( + isinstance( + git_commit_node.firstChild, + xml.dom.minidom.CharacterData)) + assert isinstance( + git_commit_node.firstChild, + xml.dom.minidom.CharacterData) + v.status('Extracting git commit:') git_revision = git_commit_node.firstChild.nodeValue v.status(git_revision) v.ok() @@ -290,7 +304,7 @@ def parse_channel(v: Verification, channel_html: str) \ digest = Digest16(row.childNodes[2].firstChild.firstChild.nodeValue) table[name] = ChannelTableEntry(url=url, digest=digest, size=size) v.ok() - return table, GitPin(release_name=title_name, git_revision=git_revision) + return table, GitPin(release_name=release_name, git_revision=git_revision) def digest_string(s: bytes) -> Digest16: @@ -417,15 +431,28 @@ def compare_tarball_and_git( 'nixpkgs', 'programs.sqlite', 'svn-revision'] - benign_errors = [] + permitted_errors = [ + 'pkgs/test/nixpkgs-check-by-name/tests/symlink-invalid/pkgs/by-name/fo/foo/foo.nix', + ] + benign_expected_errors = [] + benign_permitted_errors = [] for ee in expected_errors: if ee in errors: errors.remove(ee) - benign_errors.append(ee) - v.check(f'{len(errors)} unexpected incomparable files', len(errors) == 0) + benign_expected_errors.append(ee) + for pe in permitted_errors: + if pe in errors: + errors.remove(pe) + benign_permitted_errors.append(ee) + v.check( + f'{len(errors)} unexpected incomparable files: {errors}', + len(errors) == 0) + v.check( + f'({len(benign_expected_errors)} of {len(expected_errors)} expected incomparable files)', + len(benign_expected_errors) == len(expected_errors)) v.check( - f'({len(benign_errors)} of {len(expected_errors)} expected incomparable files)', - len(benign_errors) == len(expected_errors)) + f'({len(benign_permitted_errors)} of {len(permitted_errors)} permitted incomparable files)', + len(benign_permitted_errors) <= len(permitted_errors)) def extract_tarball(