235: #line 288 "input_frame.ipk"
236: def interscript_from_options(self,*args):
237: from interscript import run_from_options
238: svdin = sys.stdin
239: try:
240: try:
241: run_from_options(args)
242: except KeyboardInterrupt: raise
243: except SystemExit: raise
244: except:
245: print 'Error running embedded interscript from options'
246: print 'options were', args
247: traceback.print_exc()
248: finally:
249: sys.stdin = svdin
250:
251:
252:
253:
254:
255: def test_interscript(self, description, source_terminator, *args, **kwds):
256: testno = self.register_test(description, 'interscript')
257: testlabel = 'test_'+str(testno)
258: self.set_anchor(testlabel)
259: self.current_weaver.writeline(
260: 'On-the-fly interscript for test '+str(testno)+' follows.')
261: source_origin_line = self.original_count
262: source_origin_file = self.original_filename
263: test_code = self.collect_lines_upto(source_terminator)
264: self.current_weaver.script_head('interscript',source_origin_file)
265: for i in range(len(test_code)):
266: self.current_weaver.echotangle(source_origin_line+i+1,test_code[i])
267: self.current_weaver.script_foot('interscript',source_origin_file)
268:
269: try:
270: os.mkdir('interscript/tests')
271: except:
272: pass
273: our_source_filename = 'interscript/tests/test_'+str(testno)+'.tpk'
274: f = open(our_source_filename,'w')
275: f.write(string.join(test_code,'\n')+'\n')
276: f.close()
277:
278: logfile='interscript/tests/output/test_'+str(testno)+'.log'
279:
280: kargs = []
281: for key in kwds.keys():
282: if key not in ['description','source_terminator']:
283: kargs.append('--' + key + '=' + repr(kwds[key]))
284:
285: newargs = args + tuple(kargs) + (
286: '--weaver=html',
287: '--weaver-prefix=interscript/tests/output/',
288: '--new-logfile='+logfile,
289: '--title=Test '+str(testno)+': '+description,
290: our_source_filename)
291: apply(self.interscript_from_options, newargs)
292: self.set_test_result(testno,'inspect')
293: self.current_weaver.doc()
294: self.current_weaver.writeline('Test output at')
295: self.current_weaver.cite_url('../tests/output/test_'+str(testno)+'.html')
296: self.current_weaver.writeline('. Logfile at')
297: self.current_weaver.cite_url('../tests/output/test_'+str(testno)+'.log')
298: self.current_weaver.writeline('.')
299: self.current_weaver.par()
300: