Handle unknown stats in pytest_report_teststatus hook
Noticed that the pytest_report_teststatus of reportlog was not properly handling unknown statuses while taking a look at: https://github.com/pytest-dev/pytest-rerunfailures/issues/103
This commit is contained in:
		
							parent
							
								
									2b6740672d
								
							
						
					
					
						commit
						0c58ed2cc0
					
				| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Fix crash when plugins return an unknown stats while using the ``--reportlog`` option.
 | 
				
			||||||
| 
						 | 
					@ -77,10 +77,10 @@ class ResultLog:
 | 
				
			||||||
            longrepr = ""
 | 
					            longrepr = ""
 | 
				
			||||||
        elif report.passed:
 | 
					        elif report.passed:
 | 
				
			||||||
            longrepr = ""
 | 
					            longrepr = ""
 | 
				
			||||||
        elif report.failed:
 | 
					 | 
				
			||||||
            longrepr = str(report.longrepr)
 | 
					 | 
				
			||||||
        elif report.skipped:
 | 
					        elif report.skipped:
 | 
				
			||||||
            longrepr = str(report.longrepr[2])
 | 
					            longrepr = str(report.longrepr[2])
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            longrepr = str(report.longrepr)
 | 
				
			||||||
        self.log_outcome(report, code, longrepr)
 | 
					        self.log_outcome(report, code, longrepr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def pytest_collectreport(self, report):
 | 
					    def pytest_collectreport(self, report):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -193,6 +193,42 @@ def test_no_resultlog_on_slaves(testdir):
 | 
				
			||||||
    assert resultlog_key not in config._store
 | 
					    assert resultlog_key not in config._store
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_unknown_teststatus(testdir):
 | 
				
			||||||
 | 
					    """Ensure resultlog correctly handles unknown status from pytest_report_teststatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Inspired on pytest-rerunfailures.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    testdir.makepyfile(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        def test():
 | 
				
			||||||
 | 
					            assert 0
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    testdir.makeconftest(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def pytest_report_teststatus(report):
 | 
				
			||||||
 | 
					            if report.outcome == 'rerun':
 | 
				
			||||||
 | 
					                return "rerun", "r", "RERUN"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @pytest.hookimpl(hookwrapper=True)
 | 
				
			||||||
 | 
					        def pytest_runtest_makereport():
 | 
				
			||||||
 | 
					            res = yield
 | 
				
			||||||
 | 
					            report = res.get_result()
 | 
				
			||||||
 | 
					            if report.when == "call":
 | 
				
			||||||
 | 
					                report.outcome = 'rerun'
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    result = testdir.runpytest("--resultlog=result.log")
 | 
				
			||||||
 | 
					    result.stdout.fnmatch_lines(
 | 
				
			||||||
 | 
					        ["test_unknown_teststatus.py r *[[]100%[]]", "* 1 rerun *"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lines = testdir.tmpdir.join("result.log").readlines(cr=0)
 | 
				
			||||||
 | 
					    assert lines[0] == "r test_unknown_teststatus.py::test"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_failure_issue380(testdir):
 | 
					def test_failure_issue380(testdir):
 | 
				
			||||||
    testdir.makeconftest(
 | 
					    testdir.makeconftest(
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue