From ed2320261d651609fbf290b2d9117a0215987406 Mon Sep 17 00:00:00 2001 From: salimfadhley Date: Tue, 11 Jun 2013 00:54:44 +0100 Subject: [PATCH] More small fixes to jobs, I've begun work on a test for artifacts however I know this class is very wrong atm. --- jenkinsapi/job.py | 8 ++- jenkinsapi_tests/systests/test_jenkins.py | 3 +- .../systests/test_jenkins_artifacts.py | 58 ++++++++++++++++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 jenkinsapi_tests/systests/test_jenkins_artifacts.py diff --git a/jenkinsapi/job.py b/jenkinsapi/job.py index f61d269..49a40e8 100644 --- a/jenkinsapi/job.py +++ b/jenkinsapi/job.py @@ -331,14 +331,18 @@ class Job(JenkinsBase, MutableJenkinsThing): scm_url.text = new_source_url self.update_config(ET.tostring(element_tree)) + def get_config_xml_url(self): + return '%s/config.xml' % self.baseurl + def update_config(self, config): """ Update the config.xml to the job Also refresh the ElementTree object since the config has changed """ - post_data = self.post_data("%(baseurl)s/config.xml" % self.__dict__, config) + url = self.get_config_xml_url() + response = self.jenkins.requester.post_url(url, params={}, data='') self._element_tree = ET.fromstring(config) - return post_data + return response.text def get_downstream_jobs(self): """ diff --git a/jenkinsapi_tests/systests/test_jenkins.py b/jenkinsapi_tests/systests/test_jenkins.py index 6fca863..7f52eef 100644 --- a/jenkinsapi_tests/systests/test_jenkins.py +++ b/jenkinsapi_tests/systests/test_jenkins.py @@ -14,12 +14,13 @@ class JobTests(BaseSystemTest): self.jenkins.create_job(job_name, EMPTY_JOB_CONFIG) self.assertJobIsPresent(job_name) - def test_get_job_config(self): + def test_get_job_and_update_config(self): job_name = 'config_%s' % random_string() self.jenkins.create_job(job_name, EMPTY_JOB_CONFIG) self.assertJobIsPresent(job_name) config = self.jenkins[job_name].get_config() self.assertEquals(config.strip(), EMPTY_JOB_CONFIG.strip()) + self.jenkins[job_name].update_config(EMPTY_JOB_CONFIG) def test_invoke_job(self): job_name = 'create_%s' % random_string() diff --git a/jenkinsapi_tests/systests/test_jenkins_artifacts.py b/jenkinsapi_tests/systests/test_jenkins_artifacts.py new file mode 100644 index 0000000..282c175 --- /dev/null +++ b/jenkinsapi_tests/systests/test_jenkins_artifacts.py @@ -0,0 +1,58 @@ +''' +System tests for `jenkinsapi.jenkins` module. +''' +import time +import unittest +from jenkinsapi_tests.test_utils.random_strings import random_string +from jenkinsapi_tests.systests.base import BaseSystemTest + +PINGER_JOB_CONFIG = """ + + + + Ping a load of stuff for about 10s + false + + + true + false + false + false + + false + + + ping -c 5 localhost | tee out.txt + + + + + *.txt + false + + + +""".strip() + +class TestPingerJob(BaseSystemTest): + + def test_invoke_job(self): + job_name = 'create_%s' % random_string() + job = self.jenkins.create_job(job_name, PINGER_JOB_CONFIG) + job.invoke(block=True) + + b = job.get_last_build() + + while b.is_running(): + time.sleep(0.25) + + artifacts = b.get_artifact_dict() + self.assertIsInstance(artifacts, dict) + + outfile = artifacts['out.txt'] + + # TODO: Actually verify the download + + +if __name__ == '__main__': + unittest.main() -- 2.7.4