#!/usr/bin/env python
import sys, os
lineno = 0
def test_lines(lines, expected_outs=None):
global lineno
last_out = ""
start_index = 0
for index in range(len(lines)):
if lines[index][:3] == "***":
start_index = index+1
for index in range(len(lines)):
lineno = lineno + 1
line = lines[index]
if line[:3] == "***": continue
if line[0] == ">":
print line, line[1:-1]
# line[1:-1] better not evaluate to a defined
# variable in this program.
try: test = repr(eval(line[1:-1]))
except: test = line[1:-1]
if test != last_out:
print "Error, wrong answer."
print '*** Test line', lineno,'failed'
form = \
"""
%s
doesn't match expected
%s
"""
raise ValueError, form % (last_out, line[1:-1])
continue
try:
try:
out = eval(line)
except(ValueError, IndexError, TypeError, ZeroDivisionError):
out = "%s: %s" % (sys.exc_type, sys.exc_value)
print out
if out == None:
exec(line)
else:
if type(out) != type(""):
out = repr(out)
else:
try: out = repr(eval(out))
except: pass
print out
last_out = out
if index > start_index:
print last_out
except(SyntaxError):
exec(line)
# designed to be run either from this directory or ..
print 'Starting Testing Suite'
test_log='testlog.txt'
fout = open(test_log, 'w')
sys.stdout = fout
test_file = 'test_items'
try:
fp = open(test_file)
except IOError:
os.chdir('Test')
fp = open(test_file)
test_lines(fp.readlines())
fp.close()
sys.stderr.write('Starting puttest\n')
execfile('puttest.py')
print "*"*10+" Test Completed Successfully! "+"*"*10
fout.close()
sys.stderr.write("*"*10+" Test Completed Successfully! "+"*"*10+'\n')
sys.stderr.write('Log file written: ')
sys.stderr.write(test_log)
sys.stderr.write('\n')
syntax highlighted by Code2HTML, v. 0.9.1