Split the tests between the core and plugin
The tests for _assertionnew are much better, the ones for pytest_assert_compare() are still not great. --HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									2b3ac35780
								
							
						
					
					
						commit
						6fb56443a9
					
				|  | @ -9,66 +9,36 @@ def getframe(): | ||||||
|     return py.code.Frame(sys._getframe(1)) |     return py.code.Frame(sys._getframe(1)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def setup_module(mod): | def pytest_funcarg__hook(request): | ||||||
|     py.code.patch_builtins(assertion=True, compile=False) |     class MockHook(object): | ||||||
|  |         def __init__(self): | ||||||
|  |             self.called = False | ||||||
|  |             self.args = tuple() | ||||||
|  |             self.kwargs = dict() | ||||||
|  | 
 | ||||||
|  |         def __call__(self, op, left, right): | ||||||
|  |             self.called = True | ||||||
|  |             self.op = op | ||||||
|  |             self.left = left | ||||||
|  |             self.right = right | ||||||
|  |     return MockHook() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def teardown_module(mod): | def test_pytest_assert_compare_called(monkeypatch, hook): | ||||||
|     py.code.unpatch_builtins(assertion=True, compile=False) |     monkeypatch.setattr(py._plugin.pytest_assertion, | ||||||
|  |                         'pytest_assert_compare', hook) | ||||||
|  |     interpret('assert 0 == 1', getframe()) | ||||||
|  |     assert hook.called | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_assert_simple(): | def test_pytest_assert_compare_args(monkeypatch, hook): | ||||||
|     # Simply test that this way of testing works |     print hook.called | ||||||
|     a = 0 |     monkeypatch.setattr(py._plugin.pytest_assertion, | ||||||
|     b = 1 |                         'pytest_assert_compare', hook) | ||||||
|     r = interpret('assert a == b', getframe()) |     interpret('assert [0, 1] == [0, 2]', getframe()) | ||||||
|     assert r == 'assert 0 == 1' |     print hook.called | ||||||
| 
 |     print hook.left | ||||||
| 
 |     print hook.right | ||||||
| def test_assert_list(): |     assert hook.op == '==' | ||||||
|     r = interpret('assert [0, 1] == [0, 2]', getframe()) |     assert hook.left == [0, 1] | ||||||
|     msg = ('assert [0, 1] == [0, 2]\n' |     assert hook.right == [0, 2] | ||||||
|            '  First differing item 1: 1 != 2\n' |  | ||||||
|            '  - [0, 1]\n' |  | ||||||
|            '  ?     ^\n' |  | ||||||
|            '  + [0, 2]\n' |  | ||||||
|            '  ?     ^') |  | ||||||
|     print r |  | ||||||
|     assert r == msg |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_assert_string(): |  | ||||||
|     r = interpret('assert "foo and bar" == "foo or bar"', getframe()) |  | ||||||
|     msg = ("assert 'foo and bar' == 'foo or bar'\n" |  | ||||||
|            "  - foo and bar\n" |  | ||||||
|            "  ?     ^^^\n" |  | ||||||
|            "  + foo or bar\n" |  | ||||||
|            "  ?     ^^") |  | ||||||
|     print r |  | ||||||
|     assert r == msg |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_assert_multiline_string(): |  | ||||||
|     a = 'foo\nand bar\nbaz' |  | ||||||
|     b = 'foo\nor bar\nbaz' |  | ||||||
|     r = interpret('assert a == b', getframe()) |  | ||||||
|     msg = ("assert 'foo\\nand bar\\nbaz' == 'foo\\nor bar\\nbaz'\n" |  | ||||||
|            '    foo\n' |  | ||||||
|            '  - and bar\n' |  | ||||||
|            '  + or bar\n' |  | ||||||
|            '    baz') |  | ||||||
|     print r |  | ||||||
|     assert r == msg |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_assert_dict(): |  | ||||||
|     a = {'a': 0, 'b': 1} |  | ||||||
|     b = {'a': 0, 'c': 2} |  | ||||||
|     r = interpret('assert a == b', getframe()) |  | ||||||
|     msg = ("assert {'a': 0, 'b': 1} == {'a': 0, 'c': 2}\n" |  | ||||||
|            "  - {'a': 0, 'b': 1}\n" |  | ||||||
|            "  ?           ^   ^\n" |  | ||||||
|            "  + {'a': 0, 'c': 2}\n" |  | ||||||
|            "  ?           ^   ^") |  | ||||||
|     print r |  | ||||||
|     assert r == msg |  | ||||||
|  |  | ||||||
|  | @ -1,3 +1,7 @@ | ||||||
|  | import py | ||||||
|  | import py._plugin.pytest_assertion as plugin | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_functional(testdir): | def test_functional(testdir): | ||||||
|     testdir.makepyfile(""" |     testdir.makepyfile(""" | ||||||
|         def test_hello(): |         def test_hello(): | ||||||
|  | @ -49,3 +53,31 @@ def test_traceback_failure(testdir): | ||||||
|         "*test_traceback_failure.py:4: AssertionError" |         "*test_traceback_failure.py:4: AssertionError" | ||||||
|     ]) |     ]) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | class Test_pytest_assert_compare: | ||||||
|  |     def test_different_types(self): | ||||||
|  |         assert plugin.pytest_assert_compare('==', [0, 1], 'foo') is None | ||||||
|  | 
 | ||||||
|  |     def test_summary(self): | ||||||
|  |         summary = plugin.pytest_assert_compare('==', [0, 1], [0, 2])[0] | ||||||
|  |         assert len(summary) < 65 | ||||||
|  | 
 | ||||||
|  |     def test_text_diff(self): | ||||||
|  |         diff = plugin.pytest_assert_compare('==', 'spam', 'eggs')[1:] | ||||||
|  |         assert '- spam' in diff | ||||||
|  |         assert '+ eggs' in diff | ||||||
|  | 
 | ||||||
|  |     def test_multiline_text_diff(self): | ||||||
|  |         left = 'foo\nspam\nbar' | ||||||
|  |         right = 'foo\neggs\nbar' | ||||||
|  |         diff = plugin.pytest_assert_compare('==', left, right) | ||||||
|  |         assert '- spam' in diff | ||||||
|  |         assert '+ eggs' in diff | ||||||
|  | 
 | ||||||
|  |     def test_list(self): | ||||||
|  |         expl = plugin.pytest_assert_compare('==', [0, 1], [0, 2]) | ||||||
|  |         assert len(expl) > 1 | ||||||
|  | 
 | ||||||
|  |     def test_dict(self): | ||||||
|  |         expl = plugin.pytest_assert_compare('==', {'a': 0}, {'a': 1}) | ||||||
|  |         assert len(expl) > 1 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue