X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=mudpy%2Ftests%2Fselftest.py;h=520f2fd45674c359e54208f9118d4ebcef61875c;hp=2cbed03485a2f18c996a8861188823ad3bfd587d;hb=de65a162dc402df0e052c9a6e79a533a00036902;hpb=6d10b4e795679965dfd7f5e4ff027151ff629b8f diff --git a/mudpy/tests/selftest.py b/mudpy/tests/selftest.py index 2cbed03..520f2fd 100644 --- a/mudpy/tests/selftest.py +++ b/mudpy/tests/selftest.py @@ -111,6 +111,11 @@ test_forbid_ansi_input = ( (1, r'says, "\[35mfoo\[0m\."', ""), ) +test_escape_macros = ( + (0, '> ', "say $(red)bar$(nrm)"), + (1, r'says, "\$\(red\)bar\$\(nrm\)."', ""), +) + test_movement = ( (0, "> ", "move north"), (0, r"You exit to the north\.", ""), @@ -160,9 +165,10 @@ test_admin_setup = ( test_preferences = ( (0, "> ", "preferences"), - (0, r"prompt \x1b\[32m.*> ", "preferences prompt #"), - (0, r"# ", "preferences prompt"), - (0, r"#.*# ", "preferences prompt >"), + (0, r"prompt \x1b\[32m.*> ", "preferences prompt $(foo)"), + (0, r"\$\(foo\) ", "preferences prompt"), + (0, r"\$\(foo\).*\$\(foo\) ", "preferences prompt $(time)>"), + (0, "[0-9]> ", "preferences prompt >"), (2, "> ", "preferences loglevel 0"), (2, "> ", "preferences"), (2, r"loglevel \x1b\[32m0\x1b\[0m.*> ", "preferences loglevel zero"), @@ -181,7 +187,7 @@ test_telnet_iac = ( # unescaped and deduplicated to a single \xff in the buffer and then # the line of input discarded as a non-ASCII sequence (2, "> ", b"say argle\xff\xffbargle\r\0"), - (2, r"Non-ASCII characters from admin: b'say argle\\xffbargle'.*> ", ""), + (2, r"Non-ASCII characters from admin: b'say.*argle\\xffbargle'.*> ", ""), ) test_telnet_unknown_command = ( @@ -209,6 +215,12 @@ test_admin_help = ( (2, "This will save all active accounts", ""), ) +test_abbrev = ( + (0, "> ", "help mov"), + (0, r"Move in a specific direction\.", "mov north"), + (0, r"You exit to the north\.", ""), +) + test_reload = ( (2, "> ", "reload"), (2, r"Reloading all code modules, configs and data\." @@ -316,6 +328,7 @@ dialogue = ( (test_chat_mode, "chat mode"), (test_wrapping, "wrapping"), (test_forbid_ansi_input, "raw escape input is filtered"), + (test_escape_macros, "replacement macros are escaped"), (test_movement, "movement"), (test_actor_disappears, "actor spontaneous disappearance"), (test_account1_teardown, "second account teardown"), @@ -327,6 +340,7 @@ dialogue = ( (test_telnet_unknown_option, "log unknown telnet option"), (test_admin_restriction, "restricted admin commands"), (test_admin_help, "admin help"), + (test_abbrev, "command abbreviation"), (test_reload, "reload"), (test_set_facet, "set facet"), (test_set_refused, "refuse altering read-only element"), @@ -432,9 +446,9 @@ def option_callback(telnet_socket, command, option): # any response to avoid endlessly looping pass elif command in (telnetlib.DO, telnetlib.DONT): - telnet_socket.send(b"%s%s%s" % (telnetlib.IAC, telnetlib.WONT, option)) + telnet_socket.send(telnetlib.IAC + telnetlib.WONT + option) elif command in (telnetlib.WILL, telnetlib.WONT): - telnet_socket.send(b"%s%s%s" % (telnetlib.IAC, telnetlib.DONT, option)) + telnet_socket.send(telnetlib.IAC + telnetlib.DONT + option) def main():