fix for queue delete issue
authorsalimfadhley <sal@stodge.org>
Thu, 18 Jul 2013 22:26:48 +0000 (23:26 +0100)
committersalimfadhley <sal@stodge.org>
Thu, 18 Jul 2013 22:26:48 +0000 (23:26 +0100)
jenkinsapi/queue.py
jenkinsapi_tests/systests/test_queue.py

index 20f4cf0..04b2596 100644 (file)
@@ -33,6 +33,9 @@ class Queue(JenkinsBase):
     def keys(self):
         return [i[0] for i in self.iteritems()]
 
+    def values(self):
+        return [i[1] for i in self.iteritems()]
+
     def __len__(self):
         return len(self._data['items'])
 
@@ -53,14 +56,8 @@ class Queue(JenkinsBase):
         self.delete_item_by_id(queue_item.id)
 
     def delete_item_by_id(self, item_id):
-        deleteurl = urlparse.urljoin(self.baseurl,
-                                     'cancelItem?id=%s' % item_id)
-        try:
-            self.post_data(deleteurl, '')
-        except urllib2.HTTPError:
-            # The request doesn't have a response, so it returns 404,
-            # it's the expected behaviour
-            pass
+        deleteurl = '%s/cancelItem?id=%s' % (self.baseurl, item_id)
+        self.get_jenkins_obj().requester.post_url(deleteurl)
 
 
 class QueueItem(object):
index e325cc4..5e92664 100644 (file)
@@ -36,6 +36,14 @@ class TestQueue(BaseSystemTest):
         reprString = repr(queue)
         self.assertIn(queue.baseurl, reprString)
 
+        for queueId, item in queue.iteritems():
+            queue.delete_item(item)
+
+        queue.poll()
+
+        self.assertEquals(len(queue), 0)
+
+
     def test_start_and_stop_long_running_job(self):
         job_name = random_string()
         j = self.jenkins.create_job(job_name, LONG_RUNNING_JOB)