|
1 | 1 | import unittest2 as unittest |
2 | 2 | import os |
3 | 3 | from argparse import Namespace |
| 4 | +from xml.etree import ElementTree |
4 | 5 |
|
5 | 6 | from pyfakefs import fake_filesystem_unittest |
6 | 7 | import mock |
|
11 | 12 |
|
12 | 13 | from jenkins_cli.cli import JenkinsCli, CliException, COLORS |
13 | 14 |
|
14 | | -GIT_SCM_XML = """ |
15 | | -<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.plugins.git.GitSCM" plugin="git@2.4.2">\n <configVersion>2</configVersion>\n <userRemoteConfigs>\n <hudson.plugins.git.UserRemoteConfig>\n <url>https://github.com/LD250/jenkins-cli-python/</url>\n </hudson.plugins.git.UserRemoteConfig>\n </userRemoteConfigs>\n <branches>\n <hudson.plugins.git.BranchSpec>\n <name>cli-tests</name>\n </hudson.plugins.git.BranchSpec>\n </branches>\n <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>\n <submoduleCfg class="list"/>\n <extensions/>\n </scm>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders>\n <hudson.tasks.Shell>\n <command></command>\n </hudson.tasks.Shell>\n <jenkins.plugins.shiningpanda.builders.VirtualenvBuilder plugin="shiningpanda@0.22">\n <pythonName>System-CPython-2.7</pythonName>\n <home></home>\n <clear>true</clear>\n <systemSitePackages>false</systemSitePackages>\n <nature>shell</nature>\n <command>pip install -U pip\npip install -U setuptools\npip install -U wheel\npip install -r requirements.txt\npip list -o\n\nflake8 jenkins_cli\npython setup.py test</command>\n <ignoreExitCode>false</ignoreExitCode>\n </jenkins.plugins.shiningpanda.builders.VirtualenvBuilder>\n </builders>\n <publishers/>\n <buildWrappers/>\n</project> |
| 15 | +GIT_SCM_XML = """<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.plugins.git.GitSCM" plugin="git@2.4.2">\n <configVersion>2</configVersion>\n <userRemoteConfigs>\n <hudson.plugins.git.UserRemoteConfig>\n <url>https://github.com/LD250/jenkins-cli-python/</url>\n </hudson.plugins.git.UserRemoteConfig>\n </userRemoteConfigs>\n <branches>\n <hudson.plugins.git.BranchSpec>\n <name>cli-tests</name>\n </hudson.plugins.git.BranchSpec>\n </branches>\n <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>\n <submoduleCfg class="list"/>\n <extensions/>\n </scm>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders>\n <hudson.tasks.Shell>\n <command></command>\n </hudson.tasks.Shell>\n <jenkins.plugins.shiningpanda.builders.VirtualenvBuilder plugin="shiningpanda@0.22">\n <pythonName>System-CPython-2.7</pythonName>\n <home></home>\n <clear>true</clear>\n <systemSitePackages>false</systemSitePackages>\n <nature>shell</nature>\n <command>pip install -U pip\npip install -U setuptools\npip install -U wheel\npip install -r requirements.txt\npip list -o\n\nflake8 jenkins_cli\npython setup.py test</command>\n <ignoreExitCode>false</ignoreExitCode>\n </jenkins.plugins.shiningpanda.builders.VirtualenvBuilder>\n </builders>\n <publishers/>\n <buildWrappers/>\n</project> |
16 | 16 | """ |
17 | 17 |
|
18 | | -HG_SCM_XML = """ |
19 | | -<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.plugins.mercurial.MercurialSCM" plugin="mercurial@1.54">\n <modules></modules>\n <revisionType>BRANCH</revisionType>\n <revision>v123</revision>\n <clean>false</clean>\n <credentialsId></credentialsId>\n <disableChangeLog>false</disableChangeLog>\n </scm>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders/>\n <publishers/>\n <buildWrappers/>\n</project> |
| 18 | +HG_SCM_XML = """<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.plugins.mercurial.MercurialSCM" plugin="mercurial@1.54">\n <modules></modules>\n <revisionType>BRANCH</revisionType>\n <revision>v123</revision>\n <clean>false</clean>\n <credentialsId></credentialsId>\n <disableChangeLog>false</disableChangeLog>\n </scm>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders/>\n <publishers/>\n <buildWrappers/>\n</project> |
20 | 19 | """ |
21 | 20 |
|
22 | | -EMPTY_SCM_XML = """ |
23 | | -<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.scm.NullSCM"/>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders/>\n <publishers/>\n <buildWrappers/>\n</project> |
| 21 | +EMPTY_SCM_XML = """<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<project>\n <actions/>\n <description></description>\n <keepDependencies>false</keepDependencies>\n <properties/>\n <scm class="hudson.scm.NullSCM"/>\n <canRoam>true</canRoam>\n <disabled>false</disabled>\n <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n <triggers/>\n <concurrentBuild>false</concurrentBuild>\n <builders/>\n <publishers/>\n <buildWrappers/>\n</project> |
24 | 22 | """ |
25 | 23 |
|
26 | 24 |
|
@@ -177,5 +175,21 @@ def test_check_job(self, patched_get_job_name): |
177 | 175 | job_name = JenkinsCli(self.args)._check_job('Job1') |
178 | 176 | self.assertEqual(job_name, 'Job1') |
179 | 177 |
|
| 178 | + def test_get_scm_name_and_node(self): |
| 179 | + root = ElementTree.fromstring(GIT_SCM_XML.encode('utf-8')) |
| 180 | + name, branch_node = JenkinsCli(self.args)._get_scm_name_and_node(root) |
| 181 | + self.assertEqual(name, 'Git') |
| 182 | + self.assertEqual(branch_node.text, 'cli-tests') |
| 183 | + |
| 184 | + root = ElementTree.fromstring(HG_SCM_XML.encode('utf-8')) |
| 185 | + name, branch_node = JenkinsCli(self.args)._get_scm_name_and_node(root) |
| 186 | + self.assertEqual(name, 'Mercurial') |
| 187 | + self.assertEqual(branch_node.text, 'v123') |
| 188 | + |
| 189 | + root = ElementTree.fromstring(EMPTY_SCM_XML.encode('utf-8')) |
| 190 | + name, branch_node = JenkinsCli(self.args)._get_scm_name_and_node(root) |
| 191 | + self.assertEqual(name, 'UnknownSCM') |
| 192 | + self.assertEqual(branch_node, None) |
| 193 | + |
180 | 194 | if __name__ == '__main__': |
181 | 195 | unittest.main() |
0 commit comments