mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 15:37:45 +00:00
coverage++
This commit is contained in:
parent
667cacba3f
commit
90df4168f8
3
docs/scripts/events.py
Normal file → Executable file
3
docs/scripts/events.py
Normal file → Executable file
@ -49,7 +49,8 @@ def category(name: str, hooks: List[Type[events.MitmproxyEvent]]) -> None:
|
|||||||
first = False
|
first = False
|
||||||
else:
|
else:
|
||||||
print()
|
print()
|
||||||
assert hook.name not in known
|
if hook.name in known:
|
||||||
|
raise RuntimeError(f"Already documented: {hook}")
|
||||||
known.add(hook.name)
|
known.add(hook.name)
|
||||||
doc = inspect.getdoc(hook)
|
doc = inspect.getdoc(hook)
|
||||||
print(f"def {hook.name}({', '.join(str(p) for p in params)}):")
|
print(f"def {hook.name}({', '.join(str(p) for p in params)}):")
|
||||||
|
@ -9,7 +9,6 @@ if TYPE_CHECKING:
|
|||||||
import mitmproxy.log
|
import mitmproxy.log
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class MitmproxyEvent:
|
class MitmproxyEvent:
|
||||||
name: ClassVar[str]
|
name: ClassVar[str]
|
||||||
|
|
||||||
@ -28,7 +27,7 @@ class MitmproxyEvent:
|
|||||||
|
|
||||||
def __init_subclass__(cls, **kwargs):
|
def __init_subclass__(cls, **kwargs):
|
||||||
# initialize .name attribute. HttpRequestHook -> http_request
|
# initialize .name attribute. HttpRequestHook -> http_request
|
||||||
if not getattr(cls, "name", None):
|
if cls.__dict__.get("name", None) is None:
|
||||||
name = cls.__name__.replace("Hook", "").replace("Event", "")
|
name = cls.__name__.replace("Hook", "").replace("Event", "")
|
||||||
cls.name = re.sub('(?!^)([A-Z]+)', r'_\1', name).lower()
|
cls.name = re.sub('(?!^)([A-Z]+)', r'_\1', name).lower()
|
||||||
if cls.name in all_events:
|
if cls.name in all_events:
|
||||||
|
@ -97,9 +97,6 @@ class Hook(Command, mitmproxy.events.MitmproxyEvent):
|
|||||||
raise TypeError("Hook may not be instantiated directly.")
|
raise TypeError("Hook may not be instantiated directly.")
|
||||||
return super().__new__(cls, *args, **kwargs)
|
return super().__new__(cls, *args, **kwargs)
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"Hook({self.name})"
|
|
||||||
|
|
||||||
|
|
||||||
class GetSocket(ConnectionCommand):
|
class GetSocket(ConnectionCommand):
|
||||||
"""
|
"""
|
||||||
|
@ -24,15 +24,9 @@ def test_hook():
|
|||||||
commands.Hook()
|
commands.Hook()
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class FooHook(commands.Hook):
|
class TestHook(commands.Hook):
|
||||||
data: bytes
|
data: bytes
|
||||||
|
|
||||||
f = FooHook(b"foo")
|
f = TestHook(b"foo")
|
||||||
assert repr(f)
|
|
||||||
assert f.args() == [b"foo"]
|
assert f.args() == [b"foo"]
|
||||||
assert FooHook in all_events.values()
|
assert TestHook in all_events.values()
|
||||||
|
|
||||||
with pytest.raises(RuntimeError, match="Two conflicting event classes"):
|
|
||||||
@dataclass
|
|
||||||
class FooHook2(commands.Hook):
|
|
||||||
name = "foo"
|
|
||||||
|
36
test/mitmproxy/test_events.py
Normal file
36
test/mitmproxy/test_events.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from mitmproxy import events
|
||||||
|
|
||||||
|
|
||||||
|
def test_event():
|
||||||
|
with pytest.raises(TypeError, match="may not be instantiated directly"):
|
||||||
|
events.MitmproxyEvent()
|
||||||
|
|
||||||
|
class NoDataClass(events.MitmproxyEvent):
|
||||||
|
pass
|
||||||
|
|
||||||
|
with pytest.raises(TypeError, match="not a dataclass"):
|
||||||
|
NoDataClass()
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class FooEvent(events.MitmproxyEvent):
|
||||||
|
data: bytes
|
||||||
|
|
||||||
|
e = FooEvent(b"foo")
|
||||||
|
assert repr(e)
|
||||||
|
assert e.args() == [b"foo"]
|
||||||
|
assert FooEvent in events.all_events.values()
|
||||||
|
|
||||||
|
with pytest.raises(RuntimeError, match="Two conflicting event classes"):
|
||||||
|
@dataclass
|
||||||
|
class FooEvent2(events.MitmproxyEvent):
|
||||||
|
name = "foo"
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class AnotherABC(events.MitmproxyEvent):
|
||||||
|
name = ""
|
||||||
|
|
||||||
|
assert AnotherABC not in events.all_events.values()
|
Loading…
Reference in New Issue
Block a user