X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=bin%2Ftest;fp=bin%2Ftest;h=0000000000000000000000000000000000000000;hp=d246cfeaef44730797464bcc7ed044c4603715fd;hb=8b36f8aae8f9297de8eb7d8fb9b64d7d68abe31c;hpb=2e63544e800a2465ced646a7a044412a9ded0957 diff --git a/bin/test b/bin/test deleted file mode 100755 index d246cfe..0000000 --- a/bin/test +++ /dev/null @@ -1,252 +0,0 @@ -# Copyright (c) 2004-2017 Jeremy Stanley . Permission -# to use, copy, modify, and distribute this software is granted under -# terms provided in the LICENSE file distributed with this software. - -import re -import sys -import telnetlib -import time - -test_account0_setup = ( - (0, "Identify yourself:", "luser0"), - (0, "Enter your choice:", "n"), - (0, "Enter a new password for \"luser0\":", "Test123"), - (0, "Enter the same new password again:", "Test123"), - (0, "What would you like to do\?", "c"), - (0, "Pick a birth gender for your new avatar:", "f"), - (0, "Choose a name for her:", "1"), - (0, "What would you like to do?", "a"), - (0, "Whom would you like to awaken?", ""), -) - -test_account1_setup = ( - (1, "Identify yourself:", "luser1"), - (1, "Enter your choice:", "n"), - (1, "Enter a new password for \"luser1\":", "Test456"), - (1, "Enter the same new password again:", "Test456"), - (1, "What would you like to do\?", "c"), - (1, "Pick a birth gender for your new avatar:", "m"), - (1, "Choose a name for him:", "1"), - (1, "What would you like to do?", "a"), - (1, "Whom would you like to awaken?", ""), -) - -test_actor_appears = ( - (0, "You suddenly realize that .* is here\.", ""), -) - -test_explicit_punctuation = ( - (0, "> ", "say Hello there!"), - (0, 'You exclaim, "Hello there\!"', ""), - (1, 'exclaims, "Hello there\!"', "say And you are?"), - (1, 'You ask, "And you are\?"', ""), - (0, 'asks, "And you are\?"', "say I'm me, of course."), - (0, 'You say, "I\'m me, of course\."', ""), - (1, 'says, "I\'m me, of course\."', "say I wouldn't be so sure..."), - (1, 'You muse, "I wouldn\'t be so sure\.\.\."', ""), - (0, '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, 'You begin, "Don\'t interrupt:"', ""), - (1, 'begins, "Don\'t interrupt:"', "say I wasn't interrupting;"), - (1, 'You begin, "I wasn\'t interrupting;"', ""), - (0, 'begins, "I wasn\'t interrupting;"', ""), -) - -test_implicit_punctuation = ( - (0, '> ', "say Whatever"), - (0, 'You say, "Whatever\."', ""), - (1, 'says, "Whatever\."', ""), -) - -test_typo_replacement = ( - (1, '> ', "say That's what i think."), - (1, 'You say, "That\'s what I think\."', ""), - (0, 'says, "That\'s what I think\."', "say You know what i'd like."), - (0, 'You say, "You know what I\'d like\."', ""), - (1, 'says, "You know what I\'d like\."', "say Then i'll tell you."), - (1, 'You say, "Then I\'ll tell you\."', ""), - (0, 'says, "Then I\'ll tell you\."', "say Now i'm ready."), - (0, 'You say, "Now I\'m ready\."', ""), - (1, 'says, "Now I\'m ready\."', "say That's teh idea."), - (1, 'You say, "That\'s the idea\."', ""), - (0, 'says, "That\'s the idea\."', "say It's what theyre saying."), - (0, 'You say, "It\'s what they\'re saying\."', ""), - (1, 'says, "It\'s what they\'re saying\."', "say Well, youre right."), - (1, 'You say, "Well, you\'re right\."', ""), - (0, 'says, "Well, you\'re right\."', ""), -) - -test_sentence_capitalization = ( - (0, "> ", "say this sentence should start with a capital T."), - (0, 'You say, "This sentence', ""), - (1, 'says, "This sentence', ""), -) - -test_chat_mode = ( - (1, '> ', "chat"), - (1, '(?s)Entering chat mode .*> \(chat\) ', "Feeling chatty."), - (1, 'You say, "Feeling chatty\."', "!chat"), - (0, 'says, "Feeling chatty\."', ""), - (1, '> ', "say Now less chatty."), - (1, 'You say, "Now less chatty\."', ""), - (0, 'says, "Now less chatty\."', ""), -) - -test_movement = ( - (0, "> ", "move north"), - (0, "You exit to the north\.", ""), - (1, "exits to the north\.", "move north"), - (0, "arrives from the south\.", "move south"), - (0, "You exit to the south\.", ""), - (1, "exits to the south\.", "move south"), - (0, "arrives from the north\.", "move east"), - (0, "You exit to the east\.", ""), - (1, "exits to the east\.", "move east"), - (0, "arrives from the west\.", "move west"), - (0, "You exit to the west\.", ""), - (1, "exits to the west\.", "move west"), - (0, "arrives from the east\.", "move up"), - (0, "You exit upward\.", ""), - (1, "exits upward\.", "move up"), - (0, "arrives from below\.", "move down"), - (0, "You exit downward\.", ""), - (1, "exits downward\.", "move down"), - (0, "arrives from above\.", ""), -) - -test_actor_disappears = ( - (1, "> ", "quit"), - (0, "You suddenly wonder where .* went\.", ""), -) - -test_account1_teardown = ( - (1, "What would you like to do?", "d"), - (1, "Whom would you like to delete?", ""), - (1, "What would you like to do?", "p"), - (1, "permanently delete your account?", "y"), - (1, "Disconnecting...", ""), -) - -test_admin_setup = ( - (2, "Identify yourself:", "testadmin"), - (2, "Enter your choice:", "n"), - (2, "Enter a new password for \"testadmin\":", "Test789"), - (2, "Enter the same new password again:", "Test789"), - (2, "What would you like to do\?", "c"), - (2, "Pick a birth gender for your new avatar:", "m"), - (2, "Choose a name for him:", "1"), - (2, "What would you like to do?", "a"), - (2, "Whom would you like to awaken?", ""), -) - -test_admin_restriction = ( - (0, "> ", "help halt"), - (0, "That is not an available command\.", "halt"), - (0, '(not sure what "halt" means|Arglebargle, glop-glyf)', ""), -) - -test_admin_help = ( - (2, "> ", "help"), - (2, "halt.*Shut down the world\.", "help halt"), - (2, "This will save all active accounts", ""), -) - -test_show_element = ( - (2, "> ", "show element internal:counters"), - (2, "These are the properties of the \"internal:counters\" element " - "\(in.*data/internal\.yaml\"\):.* \x1b\[32melapsed: " - "\x1b\[31m[0-9]+\x1b\[0m", ""), -) - -test_show_log = ( - (2, "> ", "show log"), - (2, "There are [0-9]+ log lines in memory and [0-9]+ at or above level " - "[0-9]+\. The matching lines\r\nfrom [0-9]+ to [0-9]+ are:", ""), -) - -test_log_no_errors = ( - (2, "> ", "show log 7"), - (2, "None of the [0-9]+ lines in memory matches your request\.", ""), -) - -dialogue = ( - (test_account0_setup, "first account setup"), - (test_account1_setup, "second account setup"), - (test_actor_appears, "actor spontaneous appearance"), - (test_explicit_punctuation, " explicit punctuation"), - (test_implicit_punctuation, "implicit punctuation"), - (test_typo_replacement, "typo replacement"), - (test_sentence_capitalization, "sentence capitalization"), - (test_chat_mode, "chat mode"), - (test_movement, "movement"), - (test_actor_disappears, "actor spontaneous disappearance"), - (test_account1_teardown, "second account teardown"), - (test_admin_setup, "admin account setup"), - (test_admin_restriction, "restricted admin commands"), - (test_admin_help, "admin help"), - (test_show_element, "show element"), - (test_show_log, "show log"), - (test_log_no_errors, "no errors logged"), -) - - -def main(): - captures = ["", "", ""] - lusers = [telnetlib.Telnet(), telnetlib.Telnet(), telnetlib.Telnet()] - success = True - start = time.time() - for luser in lusers: - luser.open("::1", 6669) - for test, description in dialogue: - print("\nTesting %s..." % description) - test_start = time.time() - for conversant, question, answer in test: - print("luser%s waiting for: %s" % (conversant, question)) - index, match, received = lusers[conversant].expect( - [re.compile(question.encode("utf-8"), flags=re.DOTALL)], 5) - captures[conversant] += received.decode("utf-8") - try: - captures[conversant] += lusers[ - conversant].read_very_eager().decode("utf-8") - except: - pass - if index is not 0: - print("ERROR: luser%s did not receive expected string:\n\n" - "%s\n\n" - "Check the end of capture_%s.log for received data." - % (conversant, question, conversant)) - success = False - break - print("luser%s sending: %s" % (conversant, answer)) - lusers[conversant].write(("%s\r\n" % answer).encode("utf-8")) - captures[conversant] += "%s\r\n" % answer - if not success: - break - print("Completed in %.3f seconds." % (time.time() - test_start)) - duration = time.time() - start - print("") - for conversant in range(len(captures)): - try: - captures[conversant] += lusers[ - conversant].read_very_eager().decode("utf-8") - except: - pass - lusers[conversant].close() - logfile = "capture_%s.log" % conversant - print("Recording session %s as %s." % (conversant, logfile)) - log = open(logfile, "w") - log.write(captures[conversant]) - log.close() - print("\nRan %s tests in %.3f seconds." % (len(dialogue), duration)) - if success: - print("SUCCESS") - else: - print("FAILURE") - sys.exit(1) - - -if __name__ == '__main__': - sys.exit(main())