Include execute_cmd in if statement, and add test

This commit is contained in:
Ben Longden 2025-09-02 16:28:41 +01:00
parent 1d746db2dd
commit 8501c478a2
2 changed files with 25 additions and 11 deletions

View file

@ -2263,3 +2263,16 @@ class TestSystemCommands(BaseEvenniaCommandTest):
multimatch.matches = matches
self.call(multimatch, "look", "")
class TestPreCmdOutputTestable(BaseEvenniaCommandTest):
def test_pre_cmd(self):
class CmdTest(Command):
def at_pre_cmd(self):
self.msg("This should be testable")
return True
def func(self):
self.msg("This should never be executed")
return
self.call(CmdTest(), "test", "This should be testable")

View file

@ -452,12 +452,13 @@ class EvenniaCommandTestMixin:
unmocked_msg_methods[receiver] = receiver.msg
# replace normal `.msg` with a mock
receiver.msg = Mock()
# Run the methods of the Command. This mimics what happens in the
# cmdhandler. This will have the mocked .msg be called as part of the
# execution. Mocks remembers what was sent to them so we will be able
# to retrieve what was sent later.
try:
if not cmdobj.at_pre_cmd():
try:
cmdobj.parse()
ret = cmdobj.func()
# handle func's with yield in them (making them generators)