273: #line 327 "input_frame.ipk"
274: def interscript_from_options(self,*args):
275: "Run interscript from with the given command line options"
276: from interscript import run_from_options
277: svdin = sys.stdin
278: try:
279: try:
280: run_from_options(args)
281: except KeyboardInterrupt: raise
282: except SystemExit: raise
283: except:
284: print 'Error running embedded interscript from options'
285: print 'options were', args
286: traceback.print_exc()
287: finally:
288: sys.stdin = svdin
289:
290:
291:
292:
293:
294: def test_interscript(self, description, source_terminator, *args, **kwds):
295: "Run interscript on the following embedded test script"
296: testno = self.register_test(description, 'interscript')
297: testlabel = 'test_'+str(testno)
298: self.set_anchor(testlabel)
299: self.current_weaver.writeline(
300: 'On-the-fly interscript for test '+str(testno)+' follows.')
301: source_origin_line = self.original_count
302: source_origin_file = self.original_filename
303: test_code = self.collect_lines_upto(source_terminator)
304: self.current_weaver.script_head('interscript',source_origin_file)
305: for i in range(len(test_code)):
306: self.current_weaver.echotangle(source_origin_line+i+1,test_code[i])
307: self.current_weaver.script_foot('interscript',source_origin_file)
308:
309: try:
310: os.mkdir('interscript/tests')
311: except:
312: pass
313: our_source_filename = 'interscript/tests/test_'+str(testno)+'.tpk'
314: f = open(our_source_filename,'w')
315: f.write(string.join(test_code,'\n')+'\n')
316: f.close()
317:
318: logfile='interscript/tests/output/test_'+str(testno)+'.log'
319:
320: kargs = []
321: for key in kwds.keys():
322: if key not in ['description','source_terminator']:
323: kargs.append('--' + key + '=' + repr(kwds[key]))
324:
325: newargs = args + tuple(kargs) + (
326: '--weaver=html',
327: '--weaver-prefix=interscript/tests/output/',
328: '--new-logfile='+logfile,
329: '--title=Test '+str(testno)+': '+description,
330: our_source_filename)
331: apply(self.interscript_from_options, newargs)
332: self.set_test_result(testno,'inspect')
333: self.current_weaver.doc()
334: self.current_weaver.writeline('Test output at')
335: self.current_weaver.cite_url('../tests/output/test_'+str(testno)+'.html')
336: self.current_weaver.writeline('. Logfile at')
337: self.current_weaver.cite_url('../tests/output/test_'+str(testno)+'.log')
338: self.current_weaver.writeline('.')
339: self.current_weaver.par()
340: