setuponly: remove printing out/err from capman
This commit is contained in:
		
							parent
							
								
									2e11ea6108
								
							
						
					
					
						commit
						e05b33ed16
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							| 
						 | 
					@ -267,5 +267,6 @@ Wouter van Ackooy
 | 
				
			||||||
Xixi Zhao
 | 
					Xixi Zhao
 | 
				
			||||||
Xuan Luong
 | 
					Xuan Luong
 | 
				
			||||||
Xuecong Liao
 | 
					Xuecong Liao
 | 
				
			||||||
 | 
					Yoav Caspi
 | 
				
			||||||
Zac Hatfield-Dodds
 | 
					Zac Hatfield-Dodds
 | 
				
			||||||
Zoltán Máté
 | 
					Zoltán Máté
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Fix crash with ``KeyboardInterrupt`` during ``--setup-show``.
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,3 @@
 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,7 +49,6 @@ def _show_fixture_action(fixturedef, msg):
 | 
				
			||||||
    capman = config.pluginmanager.getplugin("capturemanager")
 | 
					    capman = config.pluginmanager.getplugin("capturemanager")
 | 
				
			||||||
    if capman:
 | 
					    if capman:
 | 
				
			||||||
        capman.suspend_global_capture()
 | 
					        capman.suspend_global_capture()
 | 
				
			||||||
        out, err = capman.read_global_capture()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tw = config.get_terminal_writer()
 | 
					    tw = config.get_terminal_writer()
 | 
				
			||||||
    tw.line()
 | 
					    tw.line()
 | 
				
			||||||
| 
						 | 
					@ -74,8 +71,6 @@ def _show_fixture_action(fixturedef, msg):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if capman:
 | 
					    if capman:
 | 
				
			||||||
        capman.resume_global_capture()
 | 
					        capman.resume_global_capture()
 | 
				
			||||||
        sys.stdout.write(out)
 | 
					 | 
				
			||||||
        sys.stderr.write(err)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.hookimpl(tryfirst=True)
 | 
					@pytest.hookimpl(tryfirst=True)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,3 +267,39 @@ def test_show_fixtures_and_execute_test(testdir):
 | 
				
			||||||
    result.stdout.fnmatch_lines(
 | 
					    result.stdout.fnmatch_lines(
 | 
				
			||||||
        ["*SETUP    F arg*", "*test_arg (fixtures used: arg)F*", "*TEARDOWN F arg*"]
 | 
					        ["*SETUP    F arg*", "*test_arg (fixtures used: arg)F*", "*TEARDOWN F arg*"]
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_setup_show_with_KeyboardInterrupt_in_test(testdir):
 | 
				
			||||||
 | 
					    """ Verifies that setups are shown and tests are executed even if there was a KeyboardInterrupt in a test. """
 | 
				
			||||||
 | 
					    p = testdir.makepyfile(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        import pytest
 | 
				
			||||||
 | 
					        @pytest.fixture
 | 
				
			||||||
 | 
					        def arg():
 | 
				
			||||||
 | 
					            assert True
 | 
				
			||||||
 | 
					        def test_arg(arg):
 | 
				
			||||||
 | 
					            raise KeyboardInterrupt()
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    result = testdir.runpytest("--setup-show", p, no_reraise_ctrlc=True)
 | 
				
			||||||
 | 
					    assert result.ret == 2
 | 
				
			||||||
 | 
					    result.stdout.fnmatch_lines(
 | 
				
			||||||
 | 
					        ["*SETUP    F arg*", "*test_arg (fixtures used: arg)*", "*TEARDOWN F arg*"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_setup_show_with_KeyboardInterrupt_in_fixture(testdir):
 | 
				
			||||||
 | 
					    """ Verifies that setups are shown and tests are executed even if there was a KeyboardInterrupt in a fixture. """
 | 
				
			||||||
 | 
					    p = testdir.makepyfile(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        import pytest
 | 
				
			||||||
 | 
					        @pytest.fixture
 | 
				
			||||||
 | 
					        def arg():
 | 
				
			||||||
 | 
					            raise KeyboardInterrupt()
 | 
				
			||||||
 | 
					        def test_arg(arg):
 | 
				
			||||||
 | 
					            assert True
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    result = testdir.runpytest("--setup-show", p, no_reraise_ctrlc=True)
 | 
				
			||||||
 | 
					    assert result.ret == 2
 | 
				
			||||||
 | 
					    result.stdout.fnmatch_lines(["*SETUP    F arg*", "*KeyboardInterrupt*"])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue