File: test_jenkins.py

package info (click to toggle)
python-jenkinsapi 0.3.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,500 kB
  • sloc: python: 10,001; xml: 50; makefile: 31; sh: 26
file content (195 lines) | stat: -rw-r--r-- 5,731 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
"""
System tests for `jenkinsapi.jenkins` module.
"""

import pytest
from jenkinsapi.job import Job
from jenkinsapi.jobs import Jobs
from jenkinsapi.build import Build
from jenkinsapi.queue import QueueItem
from jenkinsapi_tests.systests.job_configs import EMPTY_JOB
from jenkinsapi_tests.test_utils.random_strings import random_string
from jenkinsapi.custom_exceptions import UnknownJob


def job_present(jenkins, name):
    jenkins.poll()
    assert name in jenkins, "Job %r is absent in jenkins." % name
    assert isinstance(jenkins.get_job(name), Job) is True
    assert isinstance(jenkins[name], Job) is True


def job_absent(jenkins, name):
    jenkins.poll()
    assert name not in jenkins, "Job %r is present in jenkins." % name


def test_create_job(jenkins):
    job_name = "create_%s" % random_string()
    jenkins.create_job(job_name, EMPTY_JOB)
    job_present(jenkins, job_name)


def test_create_job_with_plus(jenkins):
    job_name = "create+%s" % random_string()
    jenkins.create_job(job_name, EMPTY_JOB)
    job_present(jenkins, job_name)
    job = jenkins[job_name]
    assert job_name in job.url


def test_create_dup_job(jenkins):
    job_name = "create_%s" % random_string()
    old_job = jenkins.create_job(job_name, EMPTY_JOB)
    job_present(jenkins, job_name)
    new_job = jenkins.create_job(job_name, EMPTY_JOB)
    assert new_job == old_job


def test_get_jobs_info(jenkins):
    job_name = "create_%s" % random_string()
    job = jenkins.create_job(job_name, EMPTY_JOB)

    jobs_info = list(jenkins.get_jobs_info())
    assert len(jobs_info) == 1
    for url, name in jobs_info:
        assert url == job.url
        assert name == job.name


def test_create_job_through_jobs_dict(jenkins):
    job_name = "create_%s" % random_string()
    jenkins.jobs[job_name] = EMPTY_JOB
    job_present(jenkins, job_name)


def test_enable_disable_job(jenkins):
    job_name = "create_%s" % random_string()
    jenkins.create_job(job_name, EMPTY_JOB)
    job_present(jenkins, job_name)

    j = jenkins[job_name]
    j.invoke(block=True)  # run this at least once
    # Ensure job begins as enabled
    assert j.is_enabled() is True, "An enabled job is reporting incorrectly"

    j.disable()
    assert j.is_enabled() is False, "A disabled job is reporting incorrectly"

    j.enable()
    assert j.is_enabled() is True, "An enabled job is reporting incorrectly"


def test_get_job_and_update_config(jenkins):
    job_name = "config_%s" % random_string()
    jenkins.create_job(job_name, EMPTY_JOB)
    job_present(jenkins, job_name)
    config = jenkins[job_name].get_config()
    assert config.strip() == EMPTY_JOB.strip()
    jenkins[job_name].update_config(EMPTY_JOB)


def test_invoke_job(jenkins):
    job_name = "create_%s" % random_string()
    job = jenkins.create_job(job_name, EMPTY_JOB)
    job.invoke(block=True)
    assert isinstance(job.get_build(1), Build)


def test_invocation_object(jenkins):
    job_name = "create_%s" % random_string()
    job = jenkins.create_job(job_name, EMPTY_JOB)
    ii = job.invoke()
    assert isinstance(ii, QueueItem) is True


def test_get_jobs_list(jenkins):
    job1_name = "first_%s" % random_string()
    job2_name = "second_%s" % random_string()

    jenkins.create_job(job1_name, EMPTY_JOB)
    jenkins.create_job(job2_name, EMPTY_JOB)
    assert len(jenkins.jobs) >= 2
    job_list = jenkins.get_jobs_list()
    assert [job1_name, job2_name] == job_list


def test_get_job(jenkins):
    job1_name = "first_%s" % random_string()

    jenkins.create_job(job1_name, EMPTY_JOB)
    job = jenkins[job1_name]
    assert isinstance(job, Job) is True
    assert job.name == job1_name


def test_get_jobs(jenkins):
    job1_name = "first_%s" % random_string()
    job2_name = "second_%s" % random_string()

    jenkins.create_job(job1_name, EMPTY_JOB)
    jenkins.create_job(job2_name, EMPTY_JOB)
    jobs = jenkins.jobs
    assert isinstance(jobs, Jobs) is True
    assert len(jobs) >= 2
    for job_name, job in jobs.iteritems():
        assert isinstance(job_name, str) is True
        assert isinstance(job, Job) is True


def test_get_job_that_does_not_exist(jenkins):
    with pytest.raises(UnknownJob):
        jenkins["doesnot_exist"]


def test_has_job(jenkins):
    job1_name = "first_%s" % random_string()
    jenkins.create_job(job1_name, EMPTY_JOB)
    assert jenkins.has_job(job1_name) is True
    assert job1_name in jenkins


def test_has_no_job(jenkins):
    assert jenkins.has_job("doesnt_exist") is False
    assert "doesnt_exist" not in jenkins


def test_delete_job(jenkins):
    job1_name = "delete_me_%s" % random_string()

    jenkins.create_job(job1_name, EMPTY_JOB)
    jenkins.delete_job(job1_name)
    job_absent(jenkins, job1_name)


def test_rename_job(jenkins):
    job1_name = "A__%s" % random_string()
    job2_name = "B__%s" % random_string()

    jenkins.create_job(job1_name, EMPTY_JOB)
    jenkins.rename_job(job1_name, job2_name)
    job_absent(jenkins, job1_name)
    job_present(jenkins, job2_name)


def test_copy_job(jenkins):
    template_job_name = "TPL%s" % random_string()
    copied_job_name = "CPY%s" % random_string()

    jenkins.create_job(template_job_name, EMPTY_JOB)
    j = jenkins.copy_job(template_job_name, copied_job_name)
    job_present(jenkins, template_job_name)
    job_present(jenkins, copied_job_name)
    assert isinstance(j, Job) is True
    assert j.name == copied_job_name


def test_get_master_data(jenkins):
    master_data = jenkins.get_master_data()
    assert master_data["totalExecutors"] == 2


def test_run_groovy_script(jenkins):
    expected_result = "Hello world!"
    result = jenkins.run_groovy_script('print "%s"' % expected_result)
    assert result.strip() == "Hello world!"