()
| 345 | |
| 346 | @pytest.mark.anyio |
| 347 | async def test_shell_command(): |
| 348 | state: T_State |
| 349 | CMD = ("test",) |
| 350 | Message = FakeMessage |
| 351 | MessageSegment = Message.get_segment_class() |
| 352 | |
| 353 | test_not_cmd = shell_command(CMD) |
| 354 | dependent = next(iter(test_not_cmd.checkers)) |
| 355 | checker = dependent.call |
| 356 | assert isinstance(checker, ShellCommandRule) |
| 357 | message = Message() |
| 358 | event = make_fake_event(_message=message)() |
| 359 | state = {PREFIX_KEY: {CMD_KEY: ("not",), CMD_ARG_KEY: message}} |
| 360 | assert not await dependent(event=event, state=state) |
| 361 | |
| 362 | test_no_parser = shell_command(CMD) |
| 363 | dependent = next(iter(test_no_parser.checkers)) |
| 364 | checker = dependent.call |
| 365 | assert isinstance(checker, ShellCommandRule) |
| 366 | message = Message() |
| 367 | event = make_fake_event(_message=message)() |
| 368 | state = {PREFIX_KEY: {CMD_KEY: CMD, CMD_ARG_KEY: message}} |
| 369 | assert await dependent(event=event, state=state) |
| 370 | assert state[SHELL_ARGV] == [] |
| 371 | assert SHELL_ARGS not in state |
| 372 | |
| 373 | test_lexical_error = shell_command(CMD) |
| 374 | dependent = next(iter(test_lexical_error.checkers)) |
| 375 | checker = dependent.call |
| 376 | assert isinstance(checker, ShellCommandRule) |
| 377 | message = Message("-a '1") |
| 378 | event = make_fake_event(_message=message)() |
| 379 | state = {PREFIX_KEY: {CMD_KEY: CMD, CMD_ARG_KEY: message}} |
| 380 | assert await dependent(event=event, state=state) |
| 381 | assert state[SHELL_ARGV] is None |
| 382 | |
| 383 | parser = ArgumentParser("test") |
| 384 | parser.add_argument("-a", required=True) |
| 385 | |
| 386 | test_lexical_error_with_parser = shell_command(CMD, parser=ArgumentParser("test")) |
| 387 | dependent = next(iter(test_lexical_error_with_parser.checkers)) |
| 388 | checker = dependent.call |
| 389 | assert isinstance(checker, ShellCommandRule) |
| 390 | message = Message("-a '1") |
| 391 | event = make_fake_event(_message=message)() |
| 392 | state = {PREFIX_KEY: {CMD_KEY: CMD, CMD_ARG_KEY: message}} |
| 393 | assert await dependent(event=event, state=state) |
| 394 | assert state[SHELL_ARGV] is None |
| 395 | assert isinstance(state[SHELL_ARGS], ParserExit) |
| 396 | assert state[SHELL_ARGS].status != 0 |
| 397 | |
| 398 | test_simple_parser = shell_command(CMD, parser=parser) |
| 399 | dependent = next(iter(test_simple_parser.checkers)) |
| 400 | checker = dependent.call |
| 401 | assert isinstance(checker, ShellCommandRule) |
| 402 | message = Message("-a 1") |
| 403 | event = make_fake_event(_message=message)() |
| 404 | state = {PREFIX_KEY: {CMD_KEY: CMD, CMD_ARG_KEY: message}} |
nothing calls this directly
no test coverage detected