'Collects keypresses via TestTerminal and test file, compares log results.'
_client_cls = _TestClientKnowingTui
_clients: list[_TestClientKnowingTui]
- _path_config = None
+ _path_config: Optional[Path] = None
_path_logs = None
_path_test: Path
def __init__(self, **kwargs) -> None:
- super().__init__(**kwargs)
self._clients = []
- assert isinstance(self._term, TestTerminal)
- self._q_keypresses = self._term._q_keypresses
with self._path_test.open('r', encoding='utf8') as f:
self._playbook = [line.rstrip() for line in f.readlines()]
self._playbook_anchors: dict[str, int] = {}
break
if not inserts:
break
- self._playbook_idx = -1
- self._play_till_next_log()
+ self._playbook_idx = 0
+ super().__init__(**kwargs)
+ assert isinstance(self._term, TestTerminal)
+ self._q_keypresses = self._term._q_keypresses
+ if self._playbook_idx == 0: # __init__ called no ._play_till_next_log
+ self._play_till_next_log()
@staticmethod
def split_active_line(line: str) -> Optional[tuple[str, ...]]:
return tuple(line.split(' ', maxsplit=1))
@classmethod
- def on_file(cls, path_test: Path):
+ def on_files(cls, path_test: Path, path_config: Optional[Path] = None):
'Return cls with ._path_test set.'
class _Bound(TestingClientTui):
_path_test = path_test
+ _path_config = path_config
return _Bound
def _new_client(self, conn_setup: IrcConnSetup, channels: set[str]):
client.close()
+_PATH_TESTS = Path('tests')
+
+
if __name__ == '__main__':
if len(argv) > 1 and argv[1] == 'test':
- for path in Path('tests').iterdir():
+ for path in _PATH_TESTS.iterdir():
+ fname = path.parts[-1]
+ if fname.endswith('.toml'):
+ continue
print(f'running test: {path}')
- main_loop(TestTerminal, TestingClientTui.on_file(path))
+ path_toml = (None if fname[0] != '_'
+ else _PATH_TESTS.joinpath(fname.split('_')[1]))
+ main_loop(TestTerminal, TestingClientTui.on_files(path, path_toml))
print('(success!)')
else:
main_loop(Terminal, ClientTui)
--- /dev/null
+0 # Found config at tests/test.toml, reading …
+0 # Connecting: {'hostname': 'irc.test0.net', 'nickname': 'foo', 'password': 'bar', 'username': 'baz', 'realname': 'quux', 'port': 1234, 'channels': ['#test', '##testtest']}
+1 $ isupport cleared
+1 $ isupport:CHANTYPES set to: [#&]
+1 $ isupport:PREFIX set to: [(ov)@+]
+1 $ isupport:USERLEN set to: [10]
+1 $ caps cleared
+1 $ users cleared
+1 $ channels cleared
+, $ DISCONNECTED
+1 $ hostname set to: [irc.test0.net]
+1 $ port set to: [1234]
+1 $ nick_wanted set to: [foo]
+1 $ user_wanted set to: [baz]
+1 $ realname set to: [quux]
+1 $ password set to: [bar]
+1 $ connection_state set to: [connecting]
+1 $ connection_state set to: [connected]
+, $ CONNECTED
+1 > CAP LS :302
+1 > USER baz 0 * :quux
+1 > NICK :foo
+
+> /quit
+0 <