Improve/revisit CallInfo.__repr__
This commit is contained in:
		
							parent
							
								
									94c4dd6ad7
								
							
						
					
					
						commit
						15f9568694
					
				| 
						 | 
					@ -236,16 +236,9 @@ class CallInfo:
 | 
				
			||||||
        return cls(start=start, stop=stop, when=when, result=result, excinfo=excinfo)
 | 
					        return cls(start=start, stop=stop, when=when, result=result, excinfo=excinfo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __repr__(self):
 | 
					    def __repr__(self):
 | 
				
			||||||
        if self.excinfo is not None:
 | 
					        if self.excinfo is None:
 | 
				
			||||||
            status = "exception"
 | 
					            return "<CallInfo when={!r} result: {!r}>".format(self.when, self._result)
 | 
				
			||||||
            value = self.excinfo.value
 | 
					        return "<CallInfo when={!r} excinfo={!r}>".format(self.when, self.excinfo)
 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            # TODO: investigate unification
 | 
					 | 
				
			||||||
            value = repr(self._result)
 | 
					 | 
				
			||||||
            status = "result"
 | 
					 | 
				
			||||||
        return "<CallInfo when={when!r} {status}: {value}>".format(
 | 
					 | 
				
			||||||
            when=self.when, value=value, status=status
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def pytest_runtest_makereport(item, call):
 | 
					def pytest_runtest_makereport(item, call):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -483,13 +483,22 @@ def test_callinfo():
 | 
				
			||||||
    assert ci.result == 0
 | 
					    assert ci.result == 0
 | 
				
			||||||
    assert "result" in repr(ci)
 | 
					    assert "result" in repr(ci)
 | 
				
			||||||
    assert repr(ci) == "<CallInfo when='123' result: 0>"
 | 
					    assert repr(ci) == "<CallInfo when='123' result: 0>"
 | 
				
			||||||
 | 
					    assert str(ci) == "<CallInfo when='123' result: 0>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ci = runner.CallInfo.from_call(lambda: 0 / 0, "123")
 | 
					    ci = runner.CallInfo.from_call(lambda: 0 / 0, "123")
 | 
				
			||||||
    assert ci.when == "123"
 | 
					    assert ci.when == "123"
 | 
				
			||||||
    assert not hasattr(ci, "result")
 | 
					    assert not hasattr(ci, "result")
 | 
				
			||||||
    assert repr(ci) == "<CallInfo when='123' exception: division by zero>"
 | 
					    assert repr(ci) == "<CallInfo when='123' excinfo={!r}>".format(ci.excinfo)
 | 
				
			||||||
 | 
					    assert str(ci) == repr(ci)
 | 
				
			||||||
    assert ci.excinfo
 | 
					    assert ci.excinfo
 | 
				
			||||||
    assert "exc" in repr(ci)
 | 
					
 | 
				
			||||||
 | 
					    # Newlines are escaped.
 | 
				
			||||||
 | 
					    def raise_assertion():
 | 
				
			||||||
 | 
					        assert 0, "assert_msg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ci = runner.CallInfo.from_call(raise_assertion, "call")
 | 
				
			||||||
 | 
					    assert repr(ci) == "<CallInfo when='call' excinfo={!r}>".format(ci.excinfo)
 | 
				
			||||||
 | 
					    assert "\n" not in repr(ci)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# design question: do we want general hooks in python files?
 | 
					# design question: do we want general hooks in python files?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue