[pypy-commit] buildbot default: store the original revsion and eventually set the final_file_name in the parse_revision step

bivab noreply at buildbot.pypy.org
Sun Sep 8 20:00:02 CEST 2013


Author: David Schneider <david.schneider at picle.org>
Branch: 
Changeset: r861:098f9a97951d
Date: 2013-09-08 19:58 +0200
http://bitbucket.org/pypy/buildbot/changeset/098f9a97951d/

Log:	store the original revsion and eventually set the final_file_name in
	the parse_revision step

diff --git a/bot2/pypybuildbot/builds.py b/bot2/pypybuildbot/builds.py
--- a/bot2/pypybuildbot/builds.py
+++ b/bot2/pypybuildbot/builds.py
@@ -203,8 +203,9 @@
             # ':' should not be part of filenames --- too many issues
             self.build.setProperty('got_revision', got_revision,
                                    'got_revision')
-            self.build.setProperty('final_file_name', final_file_name,
-                                   'got_revision')
+            if not self.build.hasProperty('final_file_name'):
+                self.build.setProperty('final_file_name', final_file_name,
+                                       'got_revision')
 
 class ParseRevision(BuildStep):
     """Parse the revision property of the source stamp and extract the global
@@ -226,12 +227,20 @@
 
     def start(self):
         stamp = self.build.getSourceStamp()
-        revision = stamp.revision
-        if isinstance(revision, (unicode, str)) and ':' in revision:
-            parts = revision.split(':')
-            self.build.setProperty('revision', parts[1], 'parse_revision')
-            stamp.revision = parts[1]
-            self.finished(SUCCESS)
+        revision = stamp.revision if stamp.revision is not None else ''
+        #
+        if not isinstance(revision, (unicode, str)) or ":" not in revision:
+            self.finished(SKIPPED)
+            return
+        #
+        self.build.setProperty('original_revision', revision, 'parse_revision')
+        self.build.setProperty('final_file_name',
+                                revision.replace(':', '-'), 'parse_revision')
+        #
+        parts = revision.split(':')
+        self.build.setProperty('revision', parts[1], 'parse_revision')
+        stamp.revision = parts[1]
+        self.finished(SUCCESS)
 
 
 def update_hg(platform, factory, repourl, workdir, use_branch,
diff --git a/bot2/pypybuildbot/test/test_builds.py b/bot2/pypybuildbot/test/test_builds.py
--- a/bot2/pypybuildbot/test/test_builds.py
+++ b/bot2/pypybuildbot/test/test_builds.py
@@ -192,6 +192,8 @@
         self.rebuilt.build = FakeBuild({'revision':u'123:ea5ca8'})
         self.rebuilt.start()
         assert self.rebuilt.build.getProperties()['revision'] == 'ea5ca8'
+        assert self.rebuilt.build.getProperties()['original_revision'] == '123:ea5ca8'
+        assert self.rebuilt.build.getProperties()['final_file_name'] == '123-ea5ca8'
 
     def test_no_revision(self):
         self.rebuilt.build = FakeBuild()


More information about the pypy-commit mailing list