X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=mudpy%2Ftests%2Fselftest.py;h=a7fefc27b27b8fe6e855f52fe888384f446f9a2c;hp=7251b90ae0af741fd064a97df2f12e58498f21b7;hb=347ddf4408c384adc4ac9a449595405c2b2fce47;hpb=7c003a0c7786083c6b0697d23b1b595dc70005bd diff --git a/mudpy/tests/selftest.py b/mudpy/tests/selftest.py index 7251b90..a7fefc2 100644 --- a/mudpy/tests/selftest.py +++ b/mudpy/tests/selftest.py @@ -2,6 +2,7 @@ # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. +import os import re import sys import telnetlib @@ -10,7 +11,7 @@ import time test_account0_setup = ( (0, "Identify yourself:", "luser0"), (0, "Enter your choice:", "n"), - (0, "Enter a new password for \"luser0\":", "Test123"), + (0, 'Enter a new password for "luser0":', "Test123"), (0, "Enter the same new password again:", "Test123"), (0, r"What would you like to do\?", "c"), (0, "Pick a birth gender for your new avatar:", "f"), @@ -22,7 +23,7 @@ test_account0_setup = ( test_account1_setup = ( (1, "Identify yourself:", "luser1"), (1, "Enter your choice:", "n"), - (1, "Enter a new password for \"luser1\":", "Test456"), + (1, 'Enter a new password for "luser1":', "Test456"), (1, "Enter the same new password again:", "Test456"), (1, r"What would you like to do\?", "c"), (1, "Pick a birth gender for your new avatar:", "m"), @@ -41,18 +42,18 @@ test_explicit_punctuation = ( (1, r'exclaims, "Hello there\!"', "say And you are?"), (1, r'You ask, "And you are\?"', ""), (0, r'asks, "And you are\?"', "say I'm me, of course."), - (0, r'You say, "I\'m me, of course\."', ""), - (1, r'says, "I\'m me, of course\."', "say I wouldn't be so sure..."), - (1, r'You muse, "I wouldn\'t be so sure\.\.\."', ""), - (0, r'muses, "I wouldn\'t be so sure\.\.\."', "say You mean,"), + (0, r'''You say, "I'm me, of course\."''', ""), + (1, r'''says, "I'm me, of course\."''', "say I wouldn't be so sure..."), + (1, r'''You muse, "I wouldn't be so sure\.\.\."''', ""), + (0, r'''muses, "I wouldn't be so sure\.\.\."''', "say You mean,"), (0, 'You begin, "You mean,"', ""), (1, 'begins, "You mean,"', "say I know-"), (1, 'You begin, "I know-"', ""), (0, 'begins, "I know-"', "say Don't interrupt:"), - (0, r'You begin, "Don\'t interrupt:"', ""), - (1, r'begins, "Don\'t interrupt:"', "say I wasn't interrupting;"), - (1, r'You begin, "I wasn\'t interrupting;"', ""), - (0, r'begins, "I wasn\'t interrupting;"', ""), + (0, r'''You begin, "Don't interrupt:"''', ""), + (1, r'''begins, "Don't interrupt:"''', "say I wasn't interrupting;"), + (1, r'''You begin, "I wasn't interrupting;"''', ""), + (0, r'''begins, "I wasn't interrupting;"''', ""), ) test_implicit_punctuation = ( @@ -63,20 +64,20 @@ test_implicit_punctuation = ( test_typo_replacement = ( (1, '> ', "say That's what i think."), - (1, r'You say, "That\'s what I think\."', ""), - (0, r'says, "That\'s what I think\."', "say You know what i'd like."), - (0, r'You say, "You know what I\'d like\."', ""), - (1, r'says, "You know what I\'d like\."', "say Then i'll tell you."), - (1, r'You say, "Then I\'ll tell you\."', ""), - (0, r'says, "Then I\'ll tell you\."', "say Now i'm ready."), - (0, r'You say, "Now I\'m ready\."', ""), - (1, r'says, "Now I\'m ready\."', "say That's teh idea."), - (1, r'You say, "That\'s the idea\."', ""), - (0, r'says, "That\'s the idea\."', "say It's what theyre saying."), - (0, r'You say, "It\'s what they\'re saying\."', ""), - (1, r'says, "It\'s what they\'re saying\."', "say Well, youre right."), - (1, r'You say, "Well, you\'re right\."', ""), - (0, r'says, "Well, you\'re right\."', ""), + (1, r'''You say, "That's what I think\."''', ""), + (0, r'''says, "That's what I think\."''', "say You know what i'd like."), + (0, r'''You say, "You know what I'd like\."''', ""), + (1, r'''says, "You know what I'd like\."''', "say Then i'll tell you."), + (1, r'''You say, "Then I'll tell you\."''', ""), + (0, r'''says, "Then I'll tell you\."''', "say Now i'm ready."), + (0, r'''You say, "Now I'm ready\."''', ""), + (1, r'''says, "Now I'm ready\."''', "say That's teh idea."), + (1, r'''You say, "That's the idea\."''', ""), + (0, r'''says, "That's the idea\."''', "say It's what theyre saying."), + (0, r'''You say, "It's what they're saying\."''', ""), + (1, r'''says, "It's what they're saying\."''', "say Well, youre right."), + (1, r'''You say, "Well, you're right\."''', ""), + (0, r'''says, "Well, you're right\."''', ""), ) test_sentence_capitalization = ( @@ -133,7 +134,7 @@ test_account1_teardown = ( test_admin_setup = ( (2, "Identify yourself:", "admin"), (2, "Enter your choice:", "n"), - (2, "Enter a new password for \"admin\":", "Test789"), + (2, 'Enter a new password for "admin":', "Test789"), (2, "Enter the same new password again:", "Test789"), (2, r"What would you like to do\?", "c"), (2, "Pick a birth gender for your new avatar:", "m"), @@ -154,11 +155,42 @@ test_admin_help = ( (2, "This will save all active accounts", ""), ) +test_reload = ( + (2, "> ", "reload"), + (2, r"Reloading all code modules, configs and data\." + r".* User admin reloaded the world\.", ""), +) + +test_set_facet = ( + (2, "> ", "set actor:avatar:admin:0 gender female"), + (2, r'You have successfully \(re\)set the "gender" facet of element', ""), +) + +test_set_refused = ( + (2, "> ", "set mudpy.limit password_tries 10"), + (2, r'The "mudpy\.limit" element is kept in read-only file', ""), +) + +test_show_files = ( + (2, "> ", "show files"), + (2, r'These are the current files containing the universe:.*' + r' \x1b\[31m\(rw\) \x1b\[32m/.*/account.yaml\x1b\[0m' + r' \x1b\[33m\[private\]\x1b\[0m.*> ', ""), +) + +test_show_file = ( + (2, "> ", "show file %s" % + os.path.join(os.getcwd(), "data/internal.yaml")), + (2, "These are the nodes in the.*file:.*internal:counters.*> ", ""), +) + test_show_element = ( - (2, "> ", "show element internal:counters"), - (2, r'These are the properties of the "internal:counters" element ' - r'\(in.*data/internal\.yaml"\):.* \x1b\[32melapsed: ' - r'\x1b\[31m[0-9]+\x1b\[0m', ""), + (2, "> ", "show element mudpy.limit"), + (2, r'These are the properties of the "mudpy\.limit" element.*' + r' \x1b\[32mpassword_tries: \x1b\[31m3.*> ', + "show element actor:avatar:admin:0"), + (2, r'These are the properties of the "actor:avatar:admin:0" element.*' + r' \x1b\[32mgender: \x1b\[31mfemale.*> ', ""), ) test_show_log = ( @@ -176,7 +208,7 @@ test_custom_loglevel = ( test_invalid_loglevel = ( (2, "> ", "set account:admin loglevel two"), - (2, r'Value "two" of type "" cannot be coerced .*> ', ""), + (2, r'''Value "two" of type "" cannot be coerced .*> ''', ""), ) test_log_no_errors = ( @@ -199,6 +231,11 @@ dialogue = ( (test_admin_setup, "admin account setup"), (test_admin_restriction, "restricted admin commands"), (test_admin_help, "admin help"), + (test_reload, "reload"), + (test_set_facet, "set facet"), + (test_set_refused, "refuse altering read-only element"), + (test_show_files, "show a list of loaded files"), + (test_show_file, "show nodes from a specific file"), (test_show_element, "show element"), (test_show_log, "show log"), (test_custom_loglevel, "custom loglevel"), @@ -213,7 +250,7 @@ def main(): success = True start = time.time() for luser in lusers: - luser.open("::1", 6669) + luser.open("::1", 4000) for test, description in dialogue: print("\nTesting %s..." % description) test_start = time.time()