|  |  | @ -5,10 +5,17 @@ from __future__ import (absolute_import, division, print_function, | 
			
		
	
		
		
			
				
					
					|  |  |  | from datetime import datetime |  |  |  | from datetime import datetime | 
			
		
	
		
		
			
				
					
					|  |  |  | import time |  |  |  | import time | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import sys | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | is_py2 = sys.version[0] == '2' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | if is_py2: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     import Queue as queue | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | else: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     import queue as queue | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | from tests import fixtures, RQTestCase |  |  |  | from tests import fixtures, RQTestCase | 
			
		
	
		
		
			
				
					
					|  |  |  | from tests.helpers import strip_microseconds |  |  |  | from tests.helpers import strip_microseconds | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | from rq.compat import PY2, as_text |  |  |  | from rq.compat import PY2 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | from rq.exceptions import NoSuchJobError, UnpickleError |  |  |  | from rq.exceptions import NoSuchJobError, UnpickleError | 
			
		
	
		
		
			
				
					
					|  |  |  | from rq.job import Job, get_current_job, JobStatus, cancel_job, requeue_job |  |  |  | from rq.job import Job, get_current_job, JobStatus, cancel_job, requeue_job | 
			
		
	
		
		
			
				
					
					|  |  |  | from rq.queue import Queue, get_failed_queue |  |  |  | from rq.queue import Queue, get_failed_queue | 
			
		
	
	
		
		
			
				
					|  |  | @ -292,6 +299,13 @@ class TestJob(RQTestCase): | 
			
		
	
		
		
			
				
					
					|  |  |  |         serialized2.pop('meta') |  |  |  |         serialized2.pop('meta') | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.assertDictEqual(serialized, serialized2) |  |  |  |         self.assertDictEqual(serialized, serialized2) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_unpickleable_result(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         """Unpickleable job result doesn't crash job.to_dict()""" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         job = Job.create(func=fixtures.say_hello, args=('Lionel',)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         job._result = queue.Queue() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         data = job.to_dict() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertEqual(data['result'], 'Unpickleable return value') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def test_result_ttl_is_persisted(self): |  |  |  |     def test_result_ttl_is_persisted(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |         """Ensure that job's result_ttl is set properly""" |  |  |  |         """Ensure that job's result_ttl is set properly""" | 
			
		
	
		
		
			
				
					
					|  |  |  |         job = Job.create(func=fixtures.say_hello, args=('Lionel',), result_ttl=10) |  |  |  |         job = Job.create(func=fixtures.say_hello, args=('Lionel',), result_ttl=10) | 
			
		
	
	
		
		
			
				
					|  |  | 
 |