Add basic Build class

This commit is contained in:
R. Tyler Ballance 2010-01-03 12:23:22 -08:00
parent 5cacfc009e
commit 2332ed605c
2 changed files with 376 additions and 0 deletions

66
hudson/build.py Normal file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env python
import sys
try:
from xml.etree import cElementTree as ElementTree
except ImportError:
from xml.etree import ElementTree
class Build(object):
result = None
builtOn = None
keepLog = None
number = None
duration = None
workspace = None
hudsonVersion = None
charset = None
def _handle_result(self, e):
module = sys.modules.get(__name__)
self.result = getattr(module, e.text, UNKNOWN)
def _handle_builtOn(self, e):
self.builtOn = e.text
def _handle_keepLog(self, e):
self.keepLog = e.text == 'true'
def _handle_workspace(self, e):
self.workspace = e.text
def _handle_number(self, e):
self.number = int(e.text)
def _handle_charset(self, e):
self.charset = e.text
def _handle_duration(self, e):
self.duration = int(e.text)
def _handle_hudsonVersion(self, e):
self.hudsonVersion = e.text
@classmethod
def from_xml(cls, xml):
instance = cls()
elem = ElementTree.fromstring(xml)
for node in elem:
method = '_handle_%s' % node.tag
if hasattr(instance, method):
getattr(instance, method)(node)
continue
return instance
def from_string(xml):
return Build.from_xml(xml)
SUCCESS = 1
FAILED = 2
UNSTABLE = 3
ABORTED = 4
UNKNOWN = 5

310
tests/test_parse_build.py Normal file
View File

@ -0,0 +1,310 @@
#!/usr/bin/env python
import unittest
from hudson import build
class BasicBuildTest(unittest.TestCase):
buildxml = '''<?xml version='1.0' encoding='UTF-8'?>
<build>
<actions>
<hudson.model.CauseAction>
<causes>
<hudson.model.Cause_-UserCause>
<authenticationName>anonymous</authenticationName>
</hudson.model.Cause_-UserCause>
</causes>
</hudson.model.CauseAction>
<hudson.plugins.git.util.BuildData>
<buildsByBranchName>
<entry>
<string>origin/next</string>
<hudson.plugins.git.util.Build>
<revision>
<sha1>
<byte-array>QnenrfUeJ2+HD+cl2B8VlS3QAlU=</byte-array>
</sha1>
<branches class="list">
<hudson.plugins.git.Branch>
<sha1 reference="../../../sha1"/>
<name>origin/next</name>
</hudson.plugins.git.Branch>
</branches>
</revision>
<hudsonBuildNumber>10</hudsonBuildNumber>
</hudson.plugins.git.util.Build>
</entry>
</buildsByBranchName>
<lastBuild reference="../buildsByBranchName/entry/hudson.plugins.git.util.Build"/>
</hudson.plugins.git.util.BuildData>
<hudson.tasks.junit.TestResultAction>
<owner class="build" reference="../../.."/>
<failCount>0</failCount>
<skipCount>0</skipCount>
<totalCount>2123</totalCount>
<testData/>
<descriptions class="java.util.concurrent.ConcurrentHashMap" serialization="custom">
<unserializable-parents/>
<java.util.concurrent.ConcurrentHashMap>
<default>
<segmentMask>15</segmentMask>
<segmentShift>28</segmentShift>
<segments>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
<java.util.concurrent.ConcurrentHashMap_-Segment>
<sync class="java.util.concurrent.locks.ReentrantLock$NonfairSync" serialization="custom">
<java.util.concurrent.locks.AbstractQueuedSynchronizer>
<default>
<state>0</state>
</default>
</java.util.concurrent.locks.AbstractQueuedSynchronizer>
<java.util.concurrent.locks.ReentrantLock_-Sync>
<default/>
</java.util.concurrent.locks.ReentrantLock_-Sync>
</sync>
<loadFactor>0.75</loadFactor>
</java.util.concurrent.ConcurrentHashMap_-Segment>
</segments>
</default>
<null/>
<null/>
</java.util.concurrent.ConcurrentHashMap>
</descriptions>
</hudson.tasks.junit.TestResultAction>
</actions>
<number>10</number>
<result>SUCCESS</result>
<duration>88390</duration>
<charset>UTF-8</charset>
<keepLog>false</keepLog>
<builtOn>openSUSE</builtOn>
<workspace>/home/tyler/hudson/workspace/next</workspace>
<hudsonVersion>1.339</hudsonVersion>
<scm class="hudson.plugins.git.GitChangeLogParser"/>
<culprits/>
</build>'''
def setUp(self):
self.b = build.from_string(self.buildxml)
def test_result(self):
self.assertEquals(self.b.result, build.SUCCESS)
def test_builtOn(self):
self.assertEquals(self.b.builtOn, 'openSUSE')
def test_keepLog(self):
self.assertTrue(self.b.keepLog is False)
def test_workspace(self):
self.assertEquals(self.b.workspace, '/home/tyler/hudson/workspace/next')
def test_hudsonVersion(self):
self.assertEquals(self.b.hudsonVersion, '1.339')
def test_charset(self):
self.assertEquals(self.b.charset, 'UTF-8')
def test_number(self):
self.assertEquals(self.b.number, 10)
def test_duration(self):
self.assertEquals(self.b.duration, 88390)
if __name__ == '__main__':
unittest.main()