Add the capability to export the package data as test fixture

This commit is contained in:
Stephan Kulow
2022-10-21 09:48:31 +02:00
parent 87d9fcc131
commit ce3863e1b5
5 changed files with 25546 additions and 6 deletions

View File

@@ -1,3 +1,6 @@
from lib.request import Request
class DBRevision:
def __init__(self, row):
# need to stay in sync with the schema creation in db.py
@@ -22,6 +25,24 @@ class DBRevision:
def __repr__(self):
return f"[{self.__str__()}]"
def as_dict(self, db):
"""Return a dict we can put into YAML for test cases"""
ret = {
"project": self.project,
"package": self.package,
"rev": self.rev,
"unexpanded_srcmd5": self.unexpanded_srcmd5,
"commit_time": self.commit_time,
"userid": self.userid,
"comment": self.comment,
"broken": self.broken,
"expanded_srcmd5": self.expanded_srcmd5,
"files": self.files_list(db),
}
if self.request_id:
ret["request"] = Request.find(db, self.request_id).as_dict()
return ret
def links_to(self, db, project, package):
with db.cursor() as cur:
cur.execute(
@@ -124,14 +145,22 @@ class DBRevision:
),
)
def files_list(self, db):
cur = db.cursor()
cur.execute("SELECT * from files where revision_id=%s", (self.dbid,))
ret = []
for row in cur.fetchall():
(_, _, name, md5, size, mtime) = row
ret.append({"md5": md5, "size": size, "mtime": mtime, "name": name})
return ret
@staticmethod
def requests_to_fetch(db, project, package):
def requests_to_fetch(self, db, project, package):
with db.cursor() as cur:
cur.execute(
"""SELECT request_number FROM revisions revs left join requests
reqs on reqs.number=revs.request_number where reqs.id is null and
revs.request_number is not null and project=%s and package=%s;""",
"""SELECT request_number FROM revisions revs LEFT JOIN requests
reqs ON reqs.number=revs.request_number WHERE reqs.id is null AND
revs.request_number IS NOT NULL and project=%s AND package=%s;""",
(project, package),
)
ret = [row[0] for row in cur.fetchall()]
return ret
return [row[0] for row in cur.fetchall()]