2
System tests for `jenkinsapi.jenkins` module.
6
from StringIO import StringIO
7
from jenkinsapi_tests.systests.base import BaseSystemTest
8
from jenkinsapi_tests.test_utils.random_strings import random_string
9
from jenkinsapi_tests.systests.job_configs import JOB_WITH_FILE
10
from jenkinsapi_tests.systests.job_configs import JOB_WITH_PARAMETERS
11
from jenkinsapi.custom_exceptions import WillNotBuild
14
class TestParameterizedBuilds(BaseSystemTest):
16
def test_invoke_job_with_file(self):
17
file_data = random_string()
18
param_file = StringIO(file_data)
20
job_name = 'create_%s' % random_string()
21
job = self.jenkins.create_job(job_name, JOB_WITH_FILE)
22
job.invoke(block=True, files={'file.txt': param_file})
24
b = job.get_last_build()
28
artifacts = b.get_artifact_dict()
29
self.assertIsInstance(artifacts, dict)
30
art_file = artifacts['file.txt']
31
self.assertTrue(art_file.get_data().strip(), file_data)
33
def test_invoke_job_parameterized(self):
34
param_B = random_string()
36
job_name = 'create_%s' % random_string()
37
job = self.jenkins.create_job(job_name, JOB_WITH_PARAMETERS)
38
job.invoke(block=True, build_params={'B': param_B})
40
b = job.get_last_build()
44
artifacts = b.get_artifact_dict()
45
self.assertIsInstance(artifacts, dict)
46
artB = artifacts['b.txt']
47
self.assertTrue(artB.get_data().strip(), param_B)
49
self.assertIn(param_B, b.get_console())
51
def test_parameterized_job_build_queuing(self):
52
"""Accept multiple builds of parameterized jobs with unique
54
job_name = 'create_%s' % random_string()
55
job = self.jenkins.create_job(job_name, JOB_WITH_PARAMETERS)
58
param_B = random_string()
59
params = {'B': param_B}
60
job.invoke(build_params=params)
62
self.assertTrue(job.has_queued_build(params))
64
while(job.has_queued_build(params)):
67
b = job.get_last_build()
71
artifacts = b.get_artifact_dict()
72
self.assertIsInstance(artifacts, dict)
73
artB = artifacts['b.txt']
74
self.assertTrue(artB.get_data().strip(), param_B)
76
self.assertIn(param_B, b.get_console())
78
def test_parameterized_job_build_rejection(self):
79
"""Reject build of paramterized job when existing build with same
80
parameters is queued, raising WillNotBuild."""
81
job_name = 'create_%s' % random_string()
82
job = self.jenkins.create_job(job_name, JOB_WITH_PARAMETERS)
85
params = {'B': random_string()}
86
job.invoke(build_params=params)
88
with self.assertRaises(WillNotBuild) as na:
89
job.invoke(build_params=params)
90
expected_msg = 'A build with these parameters is already queued.'
91
self.assertEqual(na.exception.message, expected_msg)
94
if __name__ == '__main__':