v.status(git_revision)
v.ok()
v.status('Verifying git commit label')
+ assert git_commit_node.previousSibling is not None
v.result(git_commit_node.previousSibling.nodeValue == 'Git commit ')
v.status('Parsing table')
table: Dict[str, ChannelTableEntry] = {}
for row in d.getElementsByTagName('tr')[1:]:
+ assert isinstance(
+ row.childNodes[0].firstChild, xml.dom.minidom.Element)
+ assert isinstance(
+ row.childNodes[0].firstChild.firstChild, xml.dom.minidom.Text)
name = row.childNodes[0].firstChild.firstChild.nodeValue
+ assert name is not None
url = row.childNodes[0].firstChild.getAttribute('href')
+ assert row.childNodes[1].firstChild is not None
+ assert row.childNodes[1].firstChild.nodeValue is not None
size = int(row.childNodes[1].firstChild.nodeValue)
+ assert row.childNodes[2].firstChild is not None
+ assert row.childNodes[2].firstChild.firstChild is not None
+ assert row.childNodes[2].firstChild.firstChild.nodeValue is not None
digest = Digest16(row.childNodes[2].firstChild.firstChild.nodeValue)
table[name] = ChannelTableEntry(url=url, digest=digest, size=size)
v.ok()
return Digest16(hasher.hexdigest())
-@functools.lru_cache
-def _experimental_flag_needed(v: Verification) -> bool:
- v.status('Checking Nix version')
- process = subprocess.run(['nix', '--help'], stdout=subprocess.PIPE)
- v.result(process.returncode == 0)
- return b'--experimental-features' in process.stdout
-
-
-def _nix_command(v: Verification) -> List[str]:
- return ['nix', '--experimental-features',
- 'nix-command'] if _experimental_flag_needed(v) else ['nix']
+_NIX_COMMAND = ['nix', '--experimental-features', 'nix-command']
def to_Digest16(v: Verification, digest32: Digest32) -> Digest16:
v.status('Converting digest to base16')
- process = subprocess.run(_nix_command(v) + [
- 'to-base16',
- '--type',
+ process = subprocess.run(_NIX_COMMAND + [
+ 'hash',
+ 'convert',
+ '--hash-algo',
'sha256',
+ '--to',
+ 'base16',
digest32],
stdout=subprocess.PIPE)
v.result(process.returncode == 0)
return Digest16(process.stdout.decode().strip())
-def to_Digest32(v: Verification, digest16: Digest16) -> Digest32:
- v.status('Converting digest to base32')
- process = subprocess.run(_nix_command(v) + [
- 'to-base32',
- '--type',
- 'sha256',
- digest16],
- stdout=subprocess.PIPE)
- v.result(process.returncode == 0)
- return Digest32(process.stdout.decode().strip())
-
-
def fetch_with_nix_prefetch_url(
v: Verification,
url: str,