コード例 #1
0
ファイル: view.py プロジェクト: Pawpaw-CI/AutomateJenkins
    def iteritems(self):
        try:
            it = self.get_job_dict().iteritems()
        except AttributeError:
            # Python3
            it = self.get_job_dict().items()

        for name, url in it:
            yield name, Job(url, name, self.jenkins_obj)
コード例 #2
0
def job(jenkins, monkeypatch):
    def fake_get_data(cls, url, tree=None):  # pylint: disable=unused-argument
        return configs.JOB_DATA

    monkeypatch.setattr(JenkinsBase, 'get_data', fake_get_data)

    new_job = Job('http://halob:8080/job/foo/', 'foo', jenkins)

    return new_job
コード例 #3
0
def job_tree_empty(jenkins, monkeypatch):
    def fake_get_data(cls, url, tree=None):  # pylint: disable=unused-argument
        return {}

    monkeypatch.setattr(Job, 'get_data', fake_get_data)

    new_job = Job('http://halob:8080/job/foo/', 'foo', jenkins)

    return new_job
コード例 #4
0
    def __getitem__(self, job_name):
        for row in self.jenkins._data.get('jobs', []):
            if row['name'] == job_name:
                return Job(
                    row['url'],
                    row['name'],
                    self.jenkins)

        raise UnknownJob(job_name)
コード例 #5
0
ファイル: test_job.py プロジェクト: manishas/jenkinsapi
 def test_empty_field__add_missing_builds(self, get_data):
     url = 'http://halob:8080/job/foo/%s' % config.JENKINS_API
     data = TestJob.URL_DATA[url].copy()
     data.update({'firstBuild': None})
     get_data.return_value = data
     j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     initial_call_count = get_data.call_count
     j._add_missing_builds(data)
     self.assertEquals(get_data.call_count, initial_call_count)
コード例 #6
0
def test_nobuilds_get_last_build(jenkins, monkeypatch):
    def fake_poll(cls, tree=None):  # pylint: disable=unused-argument
        return {"name": "foo"}

    monkeypatch.setattr(Job, '_poll', fake_poll)

    job = Job('http://halob:8080/job/foo/', 'foo', jenkins)
    with pytest.raises(NoBuildData):
        job.get_last_build()
コード例 #7
0
 def test_lazy_builds_list_will_not_call_jenkins_twice(self):
     # The job data contains only one build, so we expect that the
     # remaining jobs will be fetched automatically, and to have two calls
     # to the Jenkins API
     TestJobGetAllBuilds.__get_data_call_count = 0
     self.J.lazy = True
     self.j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     self.assertEqual(TestJobGetAllBuilds.__get_data_call_count, 1)
     self.J.lazy = False
コード例 #8
0
    def iteritems(self):
        """
        Get the names & objects for all jobs
        """
        self.jenkins.poll()
        for row in self.jenkins._data.get('jobs', []):
            name = row['name']
            url = row['url']

            yield name, Job(url, name, self.jenkins)
コード例 #9
0
 def test__add_missing_builds_no_builds(self, get_data):
     url = 'http://halob:8080/job/foo/%s' % config.JENKINS_API
     data = TestJob.URL_DATA[url].copy()
     get_data.return_value = data
     j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     initial_call_count = get_data.call_count
     mock_data = TestJob.URL_DATA[url].copy()
     mock_data['builds'] = None
     j._add_missing_builds(mock_data)
     self.assertEquals(initial_call_count, get_data.call_count)
コード例 #10
0
ファイル: jenkins.py プロジェクト: ruben-nieva/jenkinsapi
 def __getitem__(self, jobname):
     """
     Get a job by name
     :param jobname: name of job, str
     :return: Job obj
     """
     for url, name in self.get_jobs_info():
         if name == jobname:
             return Job(url, name, jenkins_obj=self)
     raise UnknownJob(jobname)
コード例 #11
0
 def __getitem__(self, jobname):
     """
     Get a job by name
     :param jobname: name of job, str
     :return: Job obj
     """
     for info in self._data["jobs"]:
         if info["name"] == jobname:
             return Job(info["url"], info["name"], jenkins_obj=self)
     raise UnknownJob(jobname)
コード例 #12
0
ファイル: jobs.py プロジェクト: huangchao20/Jenkins_Learn
 def __getitem__(self, job_name):
     if job_name in self:
         job_data = [job_row for job_row in self._data
                     if job_row['name'] == job_name or
                     Job.get_full_name_from_url_and_baseurl(
                         job_row['url'],
                         self.jenkins.baseurl) == job_name][0]
         return Job(job_data['url'], job_data['name'], self.jenkins)
     else:
         raise UnknownJob(job_name)
コード例 #13
0
    def test_get_params_list(self, get_data):
        url = 'http://halob:8080/job/foo/%s' % config.JENKINS_API
        get_data.return_value = TestJob.URL_DATA[url].copy()
        j = Job('http://halob:8080/job/foo/', 'foo', self.J)

        params = j.get_params_list()

        self.assertIsInstance(params, list)
        self.assertEquals(len(params), 2)
        self.assertEquals(params, ['param1', 'param2'])
コード例 #14
0
ファイル: test_job.py プロジェクト: hokadiri/jenkinsapi
def job_tree(jenkins, monkeypatch):
    def fake_get_data(cls, url, tree=None):  # pylint: disable=unused-argument
        if tree is not None and 'builds' in tree:
            return {'builds': configs.JOB_DATA['builds']}
        else:
            return {'lastBuild': configs.JOB_DATA['lastBuild']}

    monkeypatch.setattr(Job, 'get_data', fake_get_data)
    new_job = Job('http://halob:8080/job/foo/', 'foo', jenkins)

    return new_job
コード例 #15
0
ファイル: jenkins.py プロジェクト: earlye/jenkinsapi
 def __getitem__(self, jobname):
     """
     Get a job by name
     :param jobname: name of job, str
     :return: Job obj
     """
     # We have to ask for 'color' here because folder resolution
     # relies on it
     jobs = self.poll(tree='jobs[name,url,color]')['jobs']
     for info in jobs:
         if info["name"] == jobname:
             return Job(info["url"], info["name"], jenkins_obj=self)
     raise UnknownJob(jobname)
コード例 #16
0
 def __getitem__(self, jobname):
     """
     Get a job by name
     :param jobname: name of job, str
     :return: Job obj
     """
     for url, name in self.get_jobs_info():
         if name == jobname:
             preferred_scheme = urlparse.urlsplit(self.baseurl).scheme
             url_split = urlparse.urlsplit(url)
             preferred_url = urlparse.urlunsplit([
                 preferred_scheme, url_split.netloc, url_split.path,
                 url_split.query, url_split.fragment
             ])
             return Job(preferred_url, name, jenkins_obj=self)
     raise UnknownJob(jobname)
コード例 #17
0
 def test__add_missing_builds_not_all_loaded(self, get_data):
     url = 'http://halob:8080/job/foo/%s' % config.JENKINS_API
     data = TestJob.URL_DATA[url].copy()
     get_data.return_value = data
     j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     # to test this function we change data to not have one build
     # and set it to mark that firstBuild was not loaded
     # in that condition function will call j.get_data
     # and will use syntetic field 'allBuilds' to
     # repopulate 'builds' field with all builds
     mock_data = TestJob.URL_DATA[url].copy()
     mock_data['firstBuild'] = {'number': 1}
     del mock_data['builds'][-1]
     self.assertEquals(len(mock_data['builds']), 2)
     new_data = j._add_missing_builds(mock_data)
     self.assertEquals(len(new_data['builds']), 3)
コード例 #18
0
def test__add_missing_builds_not_all_loaded(jenkins, monkeypatch):
    def fake_get_data(cls, url, tree):  # pylint: disable=unused-argument
        return configs.JOB_DATA.copy()

    monkeypatch.setattr(JenkinsBase, 'get_data', fake_get_data)
    job = Job('http://halob:8080/job/foo/', 'foo', jenkins)

    # to test this function we change data to not have one build
    # and set it to mark that firstBuild was not loaded
    # in that condition function will call j.get_data
    # and will use syntetic field 'allBuilds' to
    # repopulate 'builds' field with all builds
    mock_data = configs.JOB_DATA.copy()
    mock_data['firstBuild'] = {'number': 1}
    del mock_data['builds'][-1]
    job._data = mock_data

    assert len(mock_data['builds']) == 2
    new_data = job._add_missing_builds(mock_data)
    assert len(new_data['builds']) == 3
コード例 #19
0
ファイル: test_job.py プロジェクト: hokadiri/jenkinsapi
def test_get_build_by_params_not_found(jenkins, monkeypatch, mocker):
    build_params = {'param1': 'value1'}
    fake_builds = (mocker.Mock(get_params=lambda: {}),
                   mocker.Mock(get_params=lambda: {}),
                   mocker.Mock(get_params=lambda: {}))

    build_call_count = [0]

    def fake_get_build(cls, number):  # pylint: disable=unused-argument
        build_call_count[0] += 1
        return fake_builds[number - 1]

    monkeypatch.setattr(Job, 'get_first_buildnumber', lambda x: 1)
    monkeypatch.setattr(Job, 'get_last_buildnumber', lambda x: 3)
    monkeypatch.setattr(Job, 'get_build', fake_get_build)
    mocker.spy(Build, 'get_params')
    mocker.spy(Job, 'get_build')
    job = Job('http://localhost/jobs/foo', 'foo', jenkins)

    with pytest.raises(NoBuildData):
        job.get_build_by_params(build_params)

    assert job.get_build.call_count == 3
    assert build_call_count[0] == 3
コード例 #20
0
 def test_nobuilds_get_build_dict(self):
     j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     with self.assertRaises(NoBuildData):
         j.get_build_dict()
コード例 #21
0
    def iteritems(self):
        it = six.iteritems(self.get_job_dict())

        for name, url in it:
            yield name, Job(url, name, self.jenkins_obj)
コード例 #22
0
 def setUp(self):
     self.J = mock.MagicMock()  # Jenkins object
     self.j = Job('http://halob:8080/job/foo/', 'foo', self.J)
コード例 #23
0
ファイル: jobs.py プロジェクト: plavjanik/jenkinsapi
 def __getitem__(self, job_name):
     if job_name in self:
         return Job(None, job_name, self.jenkins)
     else:
         raise UnknownJob(job_name)
コード例 #24
0
 def test_complete_builds_list_will_call_jenkins_once(self):
     # The job data contains all builds, so we will not gather remaining
     # builds
     TestJobGetAllBuilds.__get_data_call_count = 0
     self.j = Job('http://halob:8080/job/fullfoo/', 'fullfoo', self.J)
     self.assertEquals(TestJobGetAllBuilds.__get_data_call_count, 1)
コード例 #25
0
 def setUp(self):
     TestJobGetAllBuilds.__get_data_call_count = 0
     self.J = mock.MagicMock()  # Jenkins object
     self.j = Job('http://halob:8080/job/foo/', 'foo', self.J)
コード例 #26
0
 def test_get_params(self, get_data):
     url = 'http://halob:8080/job/foo/%s' % config.JENKINS_API
     get_data.return_value = TestJob.URL_DATA[url].copy()
     j = Job('http://halob:8080/job/foo/', 'foo', self.J)
     params = list(j.get_params())
     self.assertEquals(len(params), 2)
コード例 #27
0
ファイル: jobs.py プロジェクト: plavjanik/jenkinsapi
 def iteritems(self):
     """
     Iterate over the names & objects for all jobs
     """
     for job_url, job_name in self.iter_urls_names():
         yield job_name, Job(job_url, job_name, self.jenkins)
コード例 #28
0
ファイル: view.py プロジェクト: makewhatis/commons
 def __getitem__(self, job_name):
     assert isinstance(job_name, str)
     api_url = self.python_api_url(self.get_job_url(job_name))
     return Job(api_url, job_name, self.jenkins_obj)
コード例 #29
0
ファイル: view.py プロジェクト: makewhatis/commons
 def iteritems(self):
     for name, url in self.get_job_dict().iteritems():
         api_url = self.python_api_url(url)
         yield name, Job(api_url, name, self.jenkins_obj)
コード例 #30
0
ファイル: view.py プロジェクト: ruben-nieva/jenkinsapi
 def __getitem__(self, str_job_id):
     assert isinstance(str_job_id, str)
     api_url = self.python_api_url(self.get_job_url(str_job_id))
     return Job(api_url, str_job_id, self.jenkins_obj)