Merge branch 'master' into trial-envs
This commit is contained in:
		
						commit
						3766060893
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							| 
						 | 
					@ -141,3 +141,4 @@ Tyler Goodlet
 | 
				
			||||||
Vasily Kuznetsov
 | 
					Vasily Kuznetsov
 | 
				
			||||||
Wouter van Ackooy
 | 
					Wouter van Ackooy
 | 
				
			||||||
Xuecong Liao
 | 
					Xuecong Liao
 | 
				
			||||||
 | 
					Eli Boyarski
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,17 +17,26 @@
 | 
				
			||||||
* Fix ``pytester`` internal plugin to work correctly with latest versions of
 | 
					* Fix ``pytester`` internal plugin to work correctly with latest versions of
 | 
				
			||||||
  ``zope.interface`` (`#1989`_). Thanks `@nicoddemus`_ for the PR.
 | 
					  ``zope.interface`` (`#1989`_). Thanks `@nicoddemus`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Assert statements of the ``pytester`` plugin again benefit from assertion rewriting (`#1920`_).
 | 
				
			||||||
 | 
					  Thanks `@RonnyPfannschmidt`_ for the report and `@nicoddemus`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Specifying tests with colons like ``test_foo.py::test_bar`` for tests in
 | 
					* Specifying tests with colons like ``test_foo.py::test_bar`` for tests in
 | 
				
			||||||
  subdirectories with ini configuration files now uses the correct ini file
 | 
					  subdirectories with ini configuration files now uses the correct ini file
 | 
				
			||||||
  (`#2148`_).  Thanks `@pelme`_.
 | 
					  (`#2148`_).  Thanks `@pelme`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Fail ``testdir.runpytest().assert_outcomes()`` explicitly if the pytest
 | 
				
			||||||
 | 
					  terminal output it relies on is missing. Thanks to `@eli-b`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _@lesteve: https://github.com/lesteve
 | 
					.. _@lesteve: https://github.com/lesteve
 | 
				
			||||||
.. _@malinoff: https://github.com/malinoff
 | 
					.. _@malinoff: https://github.com/malinoff
 | 
				
			||||||
.. _@pelme: https://github.com/pelme
 | 
					.. _@pelme: https://github.com/pelme
 | 
				
			||||||
 | 
					.. _@eli-b: https://github.com/eli-b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _#1989: https://github.com/pytest-dev/pytest/issues/1989
 | 
					.. _#1989: https://github.com/pytest-dev/pytest/issues/1989
 | 
				
			||||||
 | 
					.. _#1920: https://github.com/pytest-dev/pytest/issues/1920
 | 
				
			||||||
.. _#2129: https://github.com/pytest-dev/pytest/issues/2129
 | 
					.. _#2129: https://github.com/pytest-dev/pytest/issues/2129
 | 
				
			||||||
.. _#2148: https://github.com/pytest-dev/pytest/issues/2148
 | 
					.. _#2148: https://github.com/pytest-dev/pytest/issues/2148
 | 
				
			||||||
.. _#2150: https://github.com/pytest-dev/pytest/issues/2150
 | 
					.. _#2150: https://github.com/pytest-dev/pytest/issues/2150
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -421,7 +421,7 @@ class PytestPluginManager(PluginManager):
 | 
				
			||||||
            importspec = "_pytest." + modname
 | 
					            importspec = "_pytest." + modname
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            importspec = modname
 | 
					            importspec = modname
 | 
				
			||||||
        self.rewrite_hook.mark_rewrite(modname)
 | 
					        self.rewrite_hook.mark_rewrite(importspec)
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            __import__(importspec)
 | 
					            __import__(importspec)
 | 
				
			||||||
        except ImportError as e:
 | 
					        except ImportError as e:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -367,6 +367,7 @@ class RunResult:
 | 
				
			||||||
                    for num, cat in outcomes:
 | 
					                    for num, cat in outcomes:
 | 
				
			||||||
                        d[cat] = int(num)
 | 
					                        d[cat] = int(num)
 | 
				
			||||||
                    return d
 | 
					                    return d
 | 
				
			||||||
 | 
					        raise ValueError("Pytest terminal report not found")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def assert_outcomes(self, passed=0, skipped=0, failed=0):
 | 
					    def assert_outcomes(self, passed=0, skipped=0, failed=0):
 | 
				
			||||||
        """ assert that the specified outcomes appear with the respective
 | 
					        """ assert that the specified outcomes appear with the respective
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,23 @@ class TestImportHookInstallation:
 | 
				
			||||||
            assert 0
 | 
					            assert 0
 | 
				
			||||||
        result.stdout.fnmatch_lines([expected])
 | 
					        result.stdout.fnmatch_lines([expected])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_rewrite_assertions_pytester_plugin(self, testdir):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Assertions in the pytester plugin must also benefit from assertion
 | 
				
			||||||
 | 
					        rewriting (#1920).
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
 | 
					            pytest_plugins = ['pytester']
 | 
				
			||||||
 | 
					            def test_dummy_failure(testdir):  # how meta!
 | 
				
			||||||
 | 
					                testdir.makepyfile('def test(): assert 0')
 | 
				
			||||||
 | 
					                r = testdir.inline_run()
 | 
				
			||||||
 | 
					                r.assertoutcome(passed=1)
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        result = testdir.runpytest_subprocess()
 | 
				
			||||||
 | 
					        result.stdout.fnmatch_lines([
 | 
				
			||||||
 | 
					            '*assert 1 == 0*',
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.mark.parametrize('mode', ['plain', 'rewrite'])
 | 
					    @pytest.mark.parametrize('mode', ['plain', 'rewrite'])
 | 
				
			||||||
    def test_pytest_plugins_rewrite(self, testdir, mode):
 | 
					    def test_pytest_plugins_rewrite(self, testdir, mode):
 | 
				
			||||||
        contents = {
 | 
					        contents = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,3 +124,10 @@ def test_inline_run_clean_modules(testdir):
 | 
				
			||||||
    test_mod.write("def test_foo(): assert False")
 | 
					    test_mod.write("def test_foo(): assert False")
 | 
				
			||||||
    result2 = testdir.inline_run(str(test_mod))
 | 
					    result2 = testdir.inline_run(str(test_mod))
 | 
				
			||||||
    assert result2.ret == EXIT_TESTSFAILED
 | 
					    assert result2.ret == EXIT_TESTSFAILED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_assert_outcomes_after_pytest_erro(testdir):
 | 
				
			||||||
 | 
					    testdir.makepyfile("def test_foo(): assert True")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    result = testdir.runpytest('--unexpected-argument')
 | 
				
			||||||
 | 
					    with pytest.raises(ValueError, message="Pytest terminal report not found"):
 | 
				
			||||||
 | 
					        result.assert_outcomes(passed=0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue