def test_attributes(self): ''' <root> <alpha four="4" one="1" three="3" two="2">Alpha</alpha> <bravo> <charlie three="3"/> </bravo> </root> ''' factory = XmlFactory('root') factory['alpha'] = 'Alpha' factory['alpha@one'] = '1' factory['alpha@two'] = '2' factory['alpha@three'] = '3' factory['alpha@four'] = '4' factory['bravo/charlie@three'] = '3' assert (factory.get_contents() == dedent(self.test_attributes.__doc__)) # We're ignoring attributes and empty tags for now. assert factory.as_dict() == { 'alpha': { 'one': '1', 'two': '2', 'three': '3', 'four': '4' }, 'bravo': { 'charlie': { 'three': '3' } } } assert factory.as_json() == \ '{"alpha": {"four": "4", "one": "1", "three": "3", "two": "2"}, "bravo": {"charlie": {"three": "3"}}}'
def test_simple(self): ''' <user> <name>Alpha</name> <login>Bravo</login> <location> <city>Charlie</city> </location> </user> ''' factory = XmlFactory('user') factory['name'] = 'Alpha' factory['login'] = '******' factory['location/city'] = 'Charlie' assert (factory.get_contents() == dedent(self.test_simple.__doc__)) assert factory.as_dict() == { "name": "Alpha", "login": "******", "location": { "city": "Charlie" } } assert factory.as_json( ) == '{"name": "Alpha", "login": "******", "location": {"city": "Charlie"}}'
def test_trigger_class(self): ''' <root> <triggers class="vector"/> </root> ''' # Simulating the use for HudsonJobGenerator._CreateTriggers factory = XmlFactory('root') triggers = factory['triggers'] triggers['@class'] = 'vector' assert (factory.get_contents() == dedent( self.test_trigger_class.__doc__))
def test_repeating_tags(self): ''' <root> <elements> <name>Alpha</name> <name>Bravo</name> <name>Charlie</name> </elements> <components> <component> <name>Alpha</name> </component> <component> <name>Bravo</name> </component> <component> <name>Charlie</name> </component> </components> </root> ''' factory = XmlFactory('root') factory['elements/name'] = 'Alpha' factory['elements/name+'] = 'Bravo' factory['elements/name+'] = 'Charlie' factory['components/component+/name'] = 'Alpha' factory['components/component+/name'] = 'Bravo' factory['components/component+/name'] = 'Charlie' assert (factory.get_contents() == dedent( self.test_repeating_tags.__doc__)) assert factory.as_dict() == { "elements": { "name": ["Alpha", "Bravo", "Charlie"] }, "components": { "component": [{ "name": "Alpha" }, { "name": "Bravo" }, { "name": "Charlie" }] } } assert factory.as_json() == '{"elements": {"name": ["Alpha", "Bravo", "Charlie"]}, "components": '\ '{"component": [{"name": "Alpha"}, {"name": "Bravo"}, {"name": "Charlie"}]}}'
def test_simplest(self): ''' <?xml version="1.0" ?> <user> <name>Alpha</name> <login>Bravo</login> </user> ''' factory = XmlFactory('user') factory['name'] = 'Alpha' factory['login'] = '******' assert (factory.get_contents(xml_header=True) == dedent( self.test_simplest.__doc__)) assert factory.as_dict() == {"name": "Alpha", "login": "******"} assert factory.as_json() == '{"name": "Alpha", "login": "******"}'
def test_hudson_job(self): ''' <project> <actions/> <description/> <logRotator> <daysToKeep>7</daysToKeep> <numToKeep>7</numToKeep> </logRotator> <keepDependencies>false</keepDependencies> <properties/> <scm class="hudson.scm.SubversionSCM"> <useUpdate>true</useUpdate> <excludedRegions/> <excludedUsers/> <excludedRevprop/> </scm> <assignedNode>KATARN</assignedNode> <canRoam>false</canRoam> <disabled>false</disabled> <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> <concurrentBuild>false</concurrentBuild> <buildWrappers/> <customWorkspace>WORKSPACE</customWorkspace> </project> ''' factory = XmlFactory('project') factory['actions'] factory['description'] factory['logRotator/daysToKeep'] = '7' factory['logRotator/numToKeep'] = '7' factory['keepDependencies'] = 'false' factory['properties'] factory['scm@class'] = 'hudson.scm.SubversionSCM' factory['scm/useUpdate'] = 'true' factory['scm/excludedRegions'] factory['scm/excludedUsers'] factory['scm/excludedRevprop'] factory['assignedNode'] = 'KATARN' factory['canRoam'] = 'false' factory['disabled'] = 'false' factory['blockBuildWhenUpstreamBuilding'] = 'true' factory['concurrentBuild'] = 'false' factory['buildWrappers'] factory['customWorkspace'] = 'WORKSPACE' assert (factory.get_contents() == dedent(self.test_hudson_job.__doc__))
def test_pretty_xml_to_stream(self, datadir): ''' <root> <alpha enabled="true"> <bravo> <charlie/> </bravo> <bravo.one/> <delta>XXX</delta> </alpha> </root> ''' iss = open(datadir['input.xml'], 'r') oss = StringIO() WritePrettyXML(iss, oss) assert oss.getvalue() == dedent(self.test_pretty_xml_to_stream.__doc__)