Bugfix 5430 pass logs to junit report (#6274)
Bugfix 5430 pass logs to junit report
This commit is contained in:
		
						commit
						66c1a120ba
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							| 
						 | 
					@ -61,6 +61,7 @@ Christian Theunert
 | 
				
			||||||
Christian Tismer
 | 
					Christian Tismer
 | 
				
			||||||
Christopher Gilling
 | 
					Christopher Gilling
 | 
				
			||||||
Christopher Dignam
 | 
					Christopher Dignam
 | 
				
			||||||
 | 
					Claudio Madotto
 | 
				
			||||||
CrazyMerlyn
 | 
					CrazyMerlyn
 | 
				
			||||||
Cyrus Maden
 | 
					Cyrus Maden
 | 
				
			||||||
Damian Skrzypczak
 | 
					Damian Skrzypczak
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					junitxml: Logs for failed test are now passed to junit report in case the test fails during call phase.
 | 
				
			||||||
| 
						 | 
					@ -591,6 +591,8 @@ class LogXML:
 | 
				
			||||||
            if report.when == "call":
 | 
					            if report.when == "call":
 | 
				
			||||||
                reporter.append_failure(report)
 | 
					                reporter.append_failure(report)
 | 
				
			||||||
                self.open_reports.append(report)
 | 
					                self.open_reports.append(report)
 | 
				
			||||||
 | 
					                if not self.log_passing_tests:
 | 
				
			||||||
 | 
					                    reporter.write_captured_output(report)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                reporter.append_error(report)
 | 
					                reporter.append_error(report)
 | 
				
			||||||
        elif report.skipped:
 | 
					        elif report.skipped:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1477,3 +1477,45 @@ def test_logging_passing_tests_disabled_does_not_log_test_output(
 | 
				
			||||||
    node = dom.find_first_by_tag("testcase")
 | 
					    node = dom.find_first_by_tag("testcase")
 | 
				
			||||||
    assert len(node.find_by_tag("system-err")) == 0
 | 
					    assert len(node.find_by_tag("system-err")) == 0
 | 
				
			||||||
    assert len(node.find_by_tag("system-out")) == 0
 | 
					    assert len(node.find_by_tag("system-out")) == 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@parametrize_families
 | 
				
			||||||
 | 
					@pytest.mark.parametrize("junit_logging", ["no", "system-out", "system-err"])
 | 
				
			||||||
 | 
					def test_logging_passing_tests_disabled_logs_output_for_failing_test_issue5430(
 | 
				
			||||||
 | 
					    testdir, junit_logging, run_and_parse, xunit_family
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    testdir.makeini(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        [pytest]
 | 
				
			||||||
 | 
					        junit_log_passing_tests=False
 | 
				
			||||||
 | 
					        junit_family={family}
 | 
				
			||||||
 | 
					    """.format(
 | 
				
			||||||
 | 
					            family=xunit_family
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    testdir.makepyfile(
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        import pytest
 | 
				
			||||||
 | 
					        import logging
 | 
				
			||||||
 | 
					        import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def test_func():
 | 
				
			||||||
 | 
					            logging.warning('hello')
 | 
				
			||||||
 | 
					            assert 0
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    result, dom = run_and_parse(
 | 
				
			||||||
 | 
					        "-o", "junit_logging=%s" % junit_logging, family=xunit_family
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    assert result.ret == 1
 | 
				
			||||||
 | 
					    node = dom.find_first_by_tag("testcase")
 | 
				
			||||||
 | 
					    if junit_logging == "system-out":
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-err")) == 0
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-out")) == 1
 | 
				
			||||||
 | 
					    elif junit_logging == "system-err":
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-err")) == 1
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-out")) == 0
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        assert junit_logging == "no"
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-err")) == 0
 | 
				
			||||||
 | 
					        assert len(node.find_by_tag("system-out")) == 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue