From: lechat Date: Tue, 9 Jul 2013 17:13:06 +0000 (+0800) Subject: Added nested-view plugin and systest for it X-Git-Tag: v0.2.23~109^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f09e3af06606c59f8e19f548e2f1358e857b6ead;p=tools%2Fpython-jenkinsapi.git Added nested-view plugin and systest for it Plus added __contains__ for View --- diff --git a/jenkinsapi/view.py b/jenkinsapi/view.py index e9363d1..2df75d0 100644 --- a/jenkinsapi/view.py +++ b/jenkinsapi/view.py @@ -18,10 +18,16 @@ class View(JenkinsBase): def __str__(self): return self.name - 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) + 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) + + def __contains__(self, job_name): + """ + True if view_name is the name of a defined view + """ + return job_name in self.keys() def delete(self): """ diff --git a/jenkinsapi_tests/systests/__init__.py b/jenkinsapi_tests/systests/__init__.py index 3d9eb34..81b87ed 100644 --- a/jenkinsapi_tests/systests/__init__.py +++ b/jenkinsapi_tests/systests/__init__.py @@ -5,7 +5,8 @@ state={} # Extra plugins required by the systests PLUGIN_DEPENDENCIES = ["http://updates.jenkins-ci.org/latest/git.hpi", - "http://updates.jenkins-ci.org/latest/git-client.hpi"] + "http://updates.jenkins-ci.org/latest/git-client.hpi", + "https://updates.jenkins-ci.org/latest/nested-view.hpi"] def setUpPackage(): systests_dir, _ = os.path.split(__file__) diff --git a/jenkinsapi_tests/systests/test_views.py b/jenkinsapi_tests/systests/test_views.py index ca15a02..dda09bd 100644 --- a/jenkinsapi_tests/systests/test_views.py +++ b/jenkinsapi_tests/systests/test_views.py @@ -5,6 +5,7 @@ import logging import unittest from jenkinsapi.view import View +from jenkinsapi.views import Views from jenkinsapi.api import get_view_from_url from jenkinsapi_tests.systests.base import BaseSystemTest from jenkinsapi_tests.test_utils.random_strings import random_string @@ -21,7 +22,7 @@ class TestViews(BaseSystemTest): self.assertIn(view_name, self.jenkins.views()) self.assertIsInstance(v, View) - # Can we use the API comnvenience methods + # Can we use the API convenience methods v2 = get_view_from_url(v.baseurl) self.assertEquals(v, v2) @@ -42,6 +43,33 @@ class TestViews(BaseSystemTest): del self.jenkins.views()[view1_name] self.assertNotIn(view1_name, self.jenkins.views()) + def test_make_nested_views(self): + job = self._create_job() + top_view_name = random_string() + sub1_view_name = random_string() + sub2_view_name = random_string() + + self.assertNotIn(top_view_name, self.jenkins.views()) + tv = self.jenkins.views().create(top_view_name, Views.NESTED_VIEW) + self.assertIn(top_view_name, self.jenkins.views()) + self.assertIsInstance(tv, View) + + # Empty sub view + sv1 = tv.views().create(sub1_view_name) + self.assertIn(sub1_view_name, tv.views()) + self.assertIsInstance(sv1, View) + + # Sub view with job in it + tv.views()[sub2_view_name] = job.name + self.assertIn(sub2_view_name, tv.views()) + sv2 = tv.views()[sub2_view_name] + self.assertIsInstance(sv2, View) + print 'job.name, type(job.name)=', job.name, type(job.name) + self.assertTrue(job.name in sv2) + + # Can we use the API convenience methods + v = get_view_from_url(sv2.baseurl) + self.assertEquals(v, sv2) if __name__ == '__main__': logging.basicConfig()