MCPcopy
hub / github.com/nonebot/nonebot2 / test_shell_command

Function test_shell_command

tests/test_rule.py:347–472  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

345
346@pytest.mark.anyio
347async 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}}

Callers

nothing calls this directly

Calls 7

shell_commandFunction · 0.90
make_fake_eventFunction · 0.90
ArgumentParserClass · 0.90
textMethod · 0.80
imageMethod · 0.80
MessageClass · 0.50
get_segment_classMethod · 0.45

Tested by

no test coverage detected