forked from importers/git-importer
		
	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