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)
31 except Exception, err:
34 # If called by a script
35 if len(sys.argv) > 1 and os.path.exists(sys.argv[1]):
36 # Pop us off the argument stack
43 # Readline and tab completion support
48 print 'Type "help" for more information.'
49 # Load command history
50 history_path = os.path.join(os.environ["HOME"], ".qa_history")
52 file(history_path, 'a').close()
53 readline.read_history_file(history_path)
54 atexit.register(readline.write_history_file, history_path)
58 # Enable tab completion
59 readline.parse_and_bind("tab: complete")
71 line = raw_input(prompt + sep)
73 except KeyboardInterrupt:
78 # Build up multi-line command
81 # Blank line or first line does not end in :
82 if line == "" or (command == line and line[-1] != ':'):
91 elif command in ["q", "quit", "exit"]:
96 # Try evaluating as an expression and printing the result
97 result = eval(command)
98 if result is not None:
101 # Fall back to executing as a statement
103 except Exception, err: