3 # Interactive shell for using QA test suite
8 from optparse import OptionParser
9 from traceback import print_exc
11 from qa.QAAPI import QAAPI
13 sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0])))
15 parser = OptionParser(add_help_option = False)
16 parser.add_option("-f", "--config", help = "configuration file")
17 parser.add_option("-l", "--log", help="enable logging")
18 parser.add_option("-v", "--verbose", help="be verbose")
19 parser.add_option("--help", action = "help", help = "show this help message and exit")
20 (options, args) = parser.parse_args()
22 # XX Load callable tests
24 qaapi = QAAPI(globals(),
25 config = options.config,
26 logging = options.log,
27 verbose = options.verbose)
32 except Exception, err:
35 # If called by a script
36 if len(sys.argv) > 1 and os.path.exists(sys.argv[1]):
37 # Pop us off the argument stack
44 # Readline and tab completion support
49 print 'Type "help" for more information.'
50 # Load command history
51 history_path = os.path.join(os.environ["HOME"], ".qa_history")
53 file(history_path, 'a').close()
54 readline.read_history_file(history_path)
55 atexit.register(readline.write_history_file, history_path)
59 # Enable tab completion
60 readline.parse_and_bind("tab: complete")
72 line = raw_input(prompt + sep)
74 except KeyboardInterrupt:
79 # Build up multi-line command
82 # Blank line or first line does not end in :
83 if line == "" or (command == line and line[-1] != ':'):
92 elif command in ["q", "quit", "exit"]:
97 # Try evaluating as an expression and printing the result
98 result = eval(command)
99 if result is not None:
102 # Fall back to executing as a statement
104 except Exception, err: