tests/functional/qemu_test: Use Python hashlib instead of external programs

Some systems (like OpenBSD) do not have the sha256sum or sha512sum programs
installed by default, or use different names for those. Use the Python
hashlib instead so we don't have to rely on the external programs.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Message-ID: <20240910201742.239559-1-thuth@redhat.com>
Reviewed-by: Brian Cain <bcain@quicinc.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2024-09-10 22:17:42 +02:00
parent 59d100243d
commit 05e303210d
1 changed files with 11 additions and 5 deletions

View File

@ -43,15 +43,21 @@ class Asset:
if self.hash is None:
return True
if len(self.hash) == 64:
sum_prog = 'sha256sum'
hl = hashlib.sha256()
elif len(self.hash) == 128:
sum_prog = 'sha512sum'
hl = hashlib.sha512()
else:
raise Exception("unknown hash type")
checksum = subprocess.check_output(
[sum_prog, str(cache_file)]).split()[0]
return self.hash == checksum.decode("utf-8")
# Calculate the hash of the file:
with open(cache_file, 'rb') as file:
while True:
chunk = file.read(1 << 20)
if not chunk:
break
hl.update(chunk)
return hl.hexdigest()
def valid(self):
return self.cache_file.exists() and self._check(self.cache_file)