Add the capability to export the package data as test fixture
This commit is contained in:
@@ -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()]
|
||||
|
Reference in New Issue
Block a user