[Treepkg-commits] r23 - in trunk: test treepkg

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Mon Nov 26 16:17:04 CET 2007


Author: bh
Date: 2007-11-26 16:17:04 +0100 (Mon, 26 Nov 2007)
New Revision: 23

Modified:
   trunk/test/test_packager.py
   trunk/treepkg/packager.py
Log:
Make packaging a specific revision work even if newer revisions have already
been packaged.  Add corresponding tests

Modified: trunk/test/test_packager.py
===================================================================
--- trunk/test/test_packager.py	2007-11-26 14:45:19 UTC (rev 22)
+++ trunk/test/test_packager.py	2007-11-26 15:17:04 UTC (rev 23)
@@ -108,7 +108,7 @@
         for message, files in self.revisions:
             add_svn_files(self.svnworkdir, files, message)
 
-    def runtest(self, debrevision, **extra_track_args):
+    def runtest(self, debrevision, group_args=None, **extra_track_args):
         rootcmd = os.path.join(os.path.dirname(__file__), os.pardir, "test",
                                "mocksudopbuilder.py")
         track = PackageTrack(name="testpkg", base_dir=self.trackdir,
@@ -117,13 +117,16 @@
                              deb_email="treepkg at example.com",
                              deb_fullname="treepkg tester",
                              **extra_track_args)
-        group = PackagerGroup([track], 1)
+
+        if group_args is None:
+            group_args = {}
+        group = PackagerGroup([track], 1, **group_args)
         group.check_package_tracks()
 
         # determine version that has been packaged.  This assumes that
         # check_package_tracks will leave the checkout in the revision
         # that was actually packaged.
-        version = subversion.last_changed_revision(self.svn_url)
+        version = track.last_changed_revision()
 
         # Now check the source and binary package files
         pkgdir = os.path.join(self.trackdir, "pkg", "%d-1" % version)
@@ -151,6 +154,24 @@
     def test_custom_debrevision_prefix(self):
         self.runtest("kk1", debrevision_prefix="kk")
 
+
+class TestPackagerWithMultipleRevisions(PackagerTest):
+
+    revisions = [
+        ("Initial Revision",
+         [("README", "and miles to go before I sleep")]),
+        ("Add some code",
+         [("program.c", "int main(void) { return 0; }")]),
+        ("Add some more code",
+         [("another.c", "int main(void) { return 1; }")]),
+        ]
+
+    def test_packaging_specific_revision(self):
+        # Package the newest revision and then package an older one.
+        self.runtest("treepkg1")
+        self.runtest("treepkg1", group_args=dict(revision=3))
+
+
 class StoppingPackager(treepkg.packager.RevisionPackager):
 
     def package(self):

Modified: trunk/treepkg/packager.py
===================================================================
--- trunk/treepkg/packager.py	2007-11-26 14:45:19 UTC (rev 22)
+++ trunk/treepkg/packager.py	2007-11-26 15:17:04 UTC (rev 23)
@@ -378,13 +378,13 @@
         self.update_checkout(revision=revision)
         current_revision = self.last_changed_revision()
         logging.info("New revision is %d", current_revision)
-        previous_revision = self.last_packaged_revision()
-        logging.info("Previously packaged revision was %d", previous_revision)
-        if current_revision > previous_revision:
-            logging.info("New revision has not been packaged yet")
+        if current_revision not in self.get_revision_numbers():
+            logging.info("Revision %d has not been packaged yet",
+                         current_revision)
             return self.revision_packager_cls(self, current_revision)
         else:
-            logging.info("New revision already packaged.")
+            logging.info("Revision %d has already been packaged.",
+                         current_revision)
 
     def get_revisions(self):
         """Returns RevisionPackager objects for each packaged revision"""



More information about the Treepkg-commits mailing list