import sys, imp, atexit sys.path.append("/home/courses/cs3214/software/pexpect-dpty/"); import pexpect, shellio, signal, time, os, re, proc_check #Ensure the shell process is terminated def force_shell_termination(shell_process): c.close(force=True) #pulling in the regular expression and other definitions definitions_scriptname = sys.argv[1] plugin_dir = sys.argv[2] def_module = imp.load_source('', definitions_scriptname) logfile = None if hasattr(def_module, 'logfile'): logfile = def_module.logfile #spawn an instance of the shell c = pexpect.spawn(def_module.shell + plugin_dir, drainpty=True, logfile=logfile) atexit.register(force_shell_termination, shell_process=c) c.timeout = 5 # run a command c.sendline("impossiblequiz") assert c.expect("Welcome to the impossible quiz.") == 0, "Shell did not print expected prompt" c.sendline("y") #lose the game c.sendline("b") c.sendline("b") c.sendline("b") assert c.expect("You lost a life! Lives: 0") == 0, "Shell did not print expected prompt" #start over c.sendline("y") #beat the game c.sendline("d") c.sendline("c") c.sendline("a") c.sendline("a") c.sendline("d") c.sendline("c") c.sendline("b") c.sendline("b") c.sendline("b") c.sendline("b") c.sendline("b") c.sendline("b") c.sendline("d") c.sendline("b") c.sendline("c") c.sendline("c") c.sendline("c") c.sendline("d") c.sendline("d") c.sendline("c") c.sendline("c") c.sendline("b") c.sendline("b") c.sendline("d") c.sendline("d") assert c.expect("CONGRATULATIONS you have won the impossible game!") == 0, "Shell did not print expected prompt"