aurweb/util/fix-coverage
Kevin Morris db2718fcba
fix: util/fix-coverage sys.stderr typo
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-09-09 16:21:11 -07:00

68 lines
1.6 KiB
Python
Executable file

#!/usr/bin/env python3
""" A simple script which updates paths for .coverage executed
in another directory. This is particularly useful for fixing
.coverage files received via ./cache/.coverage after Docker runs.
Copyright (C) 2021 aurweb Development
All Rights Reserved.
"""
import os
import re
import sqlite3
import sys
import traceback
import aurweb.config
def eprint(*args, **kwargs):
print(*args, **kwargs, file=sys.stderr)
def main():
if len(sys.argv) == 1:
print(f"usage: {sys.argv[0]} .coverage")
return 1
coverage_db = sys.argv[1]
if not os.path.exists(coverage_db):
eprint("error: coverage file not found")
return 2
aurwebdir = aurweb.config.get("options", "aurwebdir")
new_coverage_db = os.path.join(aurwebdir, ".coverage")
with open(coverage_db, "rb") as i:
with open(new_coverage_db, "wb") as f:
f.write(i.read())
print(f"Copied coverage db to {new_coverage_db}.")
coverage_db = new_coverage_db
sqlite3.paramstyle = "format"
db = sqlite3.connect(coverage_db)
cursor = db.cursor()
results = cursor.execute("SELECT * FROM file")
files = dict()
for i, path in results:
files[i] = path
for _, i in enumerate(files.keys()):
new_path = re.sub(r'^/aurweb', aurwebdir, files[i])
cursor.execute("UPDATE file SET path = ? WHERE id = ?", (
new_path, i))
db.commit()
db.close()
return 0
if __name__ == "__main__":
e = 1
try:
e = main()
except Exception:
traceback.print_exc()
e = 1
sys.exit(e)