54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
import py
 | 
						|
from py.__.misc.warn import WarningBus
 | 
						|
mypath = py.magic.autopath()
 | 
						|
 | 
						|
class TestWarningBus:
 | 
						|
    def setup_method(self, method):
 | 
						|
        self.wb = WarningBus()
 | 
						|
        self.warnings = []
 | 
						|
        self.wb.subscribe(self.warnings.append)
 | 
						|
 | 
						|
    def test_basic(self):
 | 
						|
        self.wb.warn("hello")
 | 
						|
        assert len(self.warnings) == 1
 | 
						|
        self.wb.unsubscribe(self.warnings.append)
 | 
						|
        self.wb.warn("this")
 | 
						|
        assert len(self.warnings) == 1
 | 
						|
        w = self.warnings[0]
 | 
						|
 | 
						|
    def test_location(self):
 | 
						|
        self.wb.warn("again")
 | 
						|
        warning = self.warnings[0] 
 | 
						|
        lno = self.test_location.im_func.func_code.co_firstlineno + 1
 | 
						|
        assert warning.lineno == lno
 | 
						|
        assert warning.path == mypath 
 | 
						|
        locstr = "%s:%d: " %(mypath, lno+1,)
 | 
						|
        assert repr(warning).startswith(locstr)
 | 
						|
        assert str(warning) == warning.msg 
 | 
						|
 | 
						|
    def test_stacklevel(self):
 | 
						|
        l = []
 | 
						|
        self.wb.subscribe(l.append)
 | 
						|
        def f():
 | 
						|
            self.wb.warn("x", stacklevel=2)
 | 
						|
        # 5
 | 
						|
        # 6
 | 
						|
        f()
 | 
						|
        lno = self.test_stacklevel.im_func.func_code.co_firstlineno + 7
 | 
						|
        warning = l[0]
 | 
						|
        assert warning.lineno == lno
 | 
						|
 | 
						|
    def test_forwarding_to_warnings_module(self):
 | 
						|
        self.wb._setforwarding()
 | 
						|
        py.test.deprecated_call(self.wb.warn, "x")
 | 
						|
 | 
						|
    def test_apiwarn(self):
 | 
						|
        self.wb.apiwarn("3.0", "xxx")
 | 
						|
        warning = self.warnings[0] 
 | 
						|
        assert warning.msg == "xxx (since version 3.0)"
 | 
						|
 | 
						|
def test_APIWARN():
 | 
						|
    from py.__.misc.warn import APIWARN
 | 
						|
    wb = APIWARN.im_self
 | 
						|
    assert wb._forward in wb._eventbus._subscribers 
 |