Implemented checksum test in the travis script (#298)

* Implemented checksum test in the travis script
* Added workaround for squashed forced pushes
* Made test possible to run locally
* Match multiple git versions for the working directory message
This commit is contained in:
Martijn Braam 2017-07-30 21:43:02 +02:00 committed by Oliver Smith
parent 915da12dd1
commit c0a70cce3f
2 changed files with 66 additions and 1 deletions

View File

@ -1,5 +1,6 @@
language: "python"
python: "3.6"
sudo: required
addons:
apt:
sources:
@ -7,5 +8,8 @@ addons:
packages:
- shellcheck
install: "pip install flake8"
script: "test/static_code_analysis.sh"
script:
- test/static_code_analysis.sh
- yes "" | ./pmbootstrap.py init
- test/check_checksums.py

61
test/check_checksums.py Executable file
View File

@ -0,0 +1,61 @@
#!/usr/bin/env python3
import os
import subprocess
def get_changed_files():
try:
raw = subprocess.check_output(['git', 'diff', '--name-only', os.environ['TRAVIS_COMMIT_RANGE']])
except (KeyError, subprocess.CalledProcessError) as e:
raw = subprocess.check_output(['git', 'diff', '--name-only', 'HEAD~1'])
return raw.decode().splitlines()
def get_changed_packages():
files = get_changed_files()
packages = set()
for file in files:
if not file.startswith("aports/"):
continue
name = file.split("/")[2]
packages.add(name)
return packages
def check_output_always(command):
try:
return subprocess.check_output(command)
except subprocess.CalledProcessError as e:
return e.output
def check_checksums(package):
command = ['./pmbootstrap.py', 'checksum', package]
try:
subprocess.check_output(command)
except subprocess.CalledProcessError as e:
print("Something gone wrong in pmbootstrap. Log:")
logfile = os.path.expanduser("~/.local/var/pmbootstrap/log.txt")
with open(logfile) as log:
print(log.read())
result = check_output_always(['git', 'status', '--porcelain', '--untracked-files=no']).decode()
if result == "":
print("** The checksums are correct")
else:
print(result)
print("** The checksums are not correct")
exit(1)
if __name__ == "__main__":
packages = get_changed_packages()
if len(packages) == 0:
print("No aports packages changed in this commit")
exit(0)
for package in packages:
print("Checking {} for correct checksums".format(package))
check_checksums(package)