# HG changeset patch # User Bernhard Herzog # Date 1189518413 0 # Node ID 3ae54f99db26fda26eb8f4802f708aa3f8d413df # Parent 08d8ffd40f279de9e0dc510e644fc0a2ddd69fb0 Add methods RevisionPackager.list_source_files and RevisionPackager.list_binary_files to list the binary and source files of a revision. Also add corresponding tests. diff -r 08d8ffd40f27 -r 3ae54f99db26 test/test_packager.py --- a/test/test_packager.py Tue Sep 11 10:05:15 2007 +0000 +++ b/test/test_packager.py Tue Sep 11 13:46:53 2007 +0000 @@ -172,3 +172,65 @@ ("binary", [])])])]) track = PackageTrack("testtrack", self.trackdir, "", "", "", "", "") self.assertEquals(track.last_packaged_revision(), 704195) + + +class TestRevisionPackager(unittest.TestCase, FileTestMixin): + + def setUp(self): + self.trackdir = self.create_temp_dir(self.id() + "-track") + + def test_list_source_files(self): + # Note: The revisions in the pkg dir are not ordered so that we + # can check whether get_revision_numbers returns a sorted list + # of revisions + self.create_files(self.trackdir, + [("pkg", + [("704195-1", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", [("test_1.0.orig.tar.gz", ""), + ("test_1.0-1.diff.gz", ""), + ("test_1.0-1.dsc", "")]), + ("binary", [])]), + ("702432-1", + [("status", ""), + ("src", []), + ("binary", [])])])]) + track = PackageTrack("testtrack", self.trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195) + srcdir = os.path.join(self.trackdir, "pkg", "704195-1", "src") + self.assertEquals(revpkg.list_source_files(), + [os.path.join(srcdir, filename) + for filename in ["test_1.0-1.diff.gz", + "test_1.0-1.dsc", + "test_1.0.orig.tar.gz"]]) + + def test_list_binary_files(self): + # Note: The revisions in the pkg dir are not ordered so that we + # can check whether get_revision_numbers returns a sorted list + # of revisions + self.create_files(self.trackdir, + [("pkg", + [("704195-1", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", []), + ("binary", [("test_1.0-1_i386.deb", ""), + ("test_1.0-1_i386.changes", "")])]), + ("702432-1", + [("status", ""), + ("src", []), + ("binary", [])])])]) + track = PackageTrack("testtrack", self.trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195) + srcdir = os.path.join(self.trackdir, "pkg", "704195-1", "binary") + self.assertEquals(revpkg.list_binary_files(), + [os.path.join(srcdir, filename) + for filename in ["test_1.0-1_i386.changes", + "test_1.0-1_i386.deb"]]) diff -r 08d8ffd40f27 -r 3ae54f99db26 treepkg/packager.py --- a/treepkg/packager.py Tue Sep 11 10:05:15 2007 +0000 +++ b/treepkg/packager.py Tue Sep 11 13:46:53 2007 +0000 @@ -229,6 +229,20 @@ def has_build_log(self): return os.path.exists(self.build_log) + def list_source_files(self): + """Returns a list with the names of the files of the source package. + The implementation assumes that all files in self.src_dir belong + to the source package. + """ + return sorted(util.listdir_abs(self.src_dir)) + + def list_binary_files(self): + """Returns a list with the names of the files of the binary packages. + The implementation assumes that all files in self.binary_dir belong + to the binary packages. + """ + return sorted(util.listdir_abs(self.binary_dir)) + def package(self): try: util.ensure_directory(self.work_dir) diff -r 08d8ffd40f27 -r 3ae54f99db26 treepkg/util.py --- a/treepkg/util.py Tue Sep 11 10:05:15 2007 +0000 +++ b/treepkg/util.py Tue Sep 11 13:46:53 2007 +0000 @@ -50,6 +50,9 @@ if not os.path.isdir(directory): os.makedirs(directory) +def listdir_abs(directory): + """Like os.listdir, but returns a list of absolute pathnames""" + return [os.path.join(directory, d) for d in os.listdir(directory)] def copytree(src, dst, symlinks=False): """Recursively copy a directory tree using copy2().