mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Issue 20968. unittest.mock.MagicMock now supports division
This commit is contained in:
		
							parent
							
								
									604453c9ce
								
							
						
					
					
						commit
						d2623d7786
					
				
					 3 changed files with 31 additions and 1 deletions
				
			
		|  | @ -1634,7 +1634,9 @@ def _patch_stopall(): | ||||||
|     "bool next " |     "bool next " | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| numerics = "add sub mul div floordiv mod lshift rshift and xor or pow " | numerics = ( | ||||||
|  |     "add sub mul div floordiv mod lshift rshift and xor or pow truediv" | ||||||
|  | ) | ||||||
| inplace = ' '.join('i%s' % n for n in numerics.split()) | inplace = ' '.join('i%s' % n for n in numerics.split()) | ||||||
| right = ' '.join('r%s' % n for n in numerics.split()) | right = ' '.join('r%s' % n for n in numerics.split()) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -126,6 +126,31 @@ def iadd(mock): | ||||||
|         self.assertEqual(7 + mock, mock) |         self.assertEqual(7 + mock, mock) | ||||||
|         self.assertEqual(mock.value, 16) |         self.assertEqual(mock.value, 16) | ||||||
| 
 | 
 | ||||||
|  |     def test_division(self): | ||||||
|  |         original = mock = Mock() | ||||||
|  |         mock.value = 32 | ||||||
|  |         self.assertRaises(TypeError, lambda: mock / 2) | ||||||
|  | 
 | ||||||
|  |         def truediv(self, other): | ||||||
|  |             mock.value /= other | ||||||
|  |             return self | ||||||
|  |         mock.__truediv__ = truediv | ||||||
|  |         self.assertEqual(mock / 2, mock) | ||||||
|  |         self.assertEqual(mock.value, 16) | ||||||
|  | 
 | ||||||
|  |         del mock.__truediv__ | ||||||
|  |         def itruediv(mock): | ||||||
|  |             mock /= 4 | ||||||
|  |         self.assertRaises(TypeError, itruediv, mock) | ||||||
|  |         mock.__itruediv__ = truediv | ||||||
|  |         mock /= 8 | ||||||
|  |         self.assertEqual(mock, original) | ||||||
|  |         self.assertEqual(mock.value, 2) | ||||||
|  | 
 | ||||||
|  |         self.assertRaises(TypeError, lambda: 8 / mock) | ||||||
|  |         mock.__rtruediv__ = truediv | ||||||
|  |         self.assertEqual(0.5 / mock, mock) | ||||||
|  |         self.assertEqual(mock.value, 4) | ||||||
| 
 | 
 | ||||||
|     def test_hash(self): |     def test_hash(self): | ||||||
|         mock = Mock() |         mock = Mock() | ||||||
|  |  | ||||||
|  | @ -30,6 +30,9 @@ Core and Builtins | ||||||
| Library | Library | ||||||
| ------- | ------- | ||||||
| 
 | 
 | ||||||
|  | - Issue #20968: unittest.mock.MagicMock now supports division. | ||||||
|  |   Patch by Johannes Baiter. | ||||||
|  | 
 | ||||||
| - Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second | - Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second | ||||||
|   parameter. Bug reported by Guido Vranken. |   parameter. Bug reported by Guido Vranken. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michael Foord
						Michael Foord