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