6.10.10.2.15. Python Test

6.10.10.2.15. Python Test

Start python section to interscript/frames/inputf.py[20]
   492: #line 750 "input_frame.ipk"
   493:   def test_python(self,
   494:     hlevel=None,
   495:     descr=None,
   496:     source_filename=None,
   497:     source_terminator=None,
   498:     expect_filename=None,
   499:     expect_terminator=None,
   500:     diff_context=0):
   501: 
   502:     testno = self.pass_frame.get_new_test_number()
   503:     testlabel = 'test_'+str(testno)
   504:     test_record = self.pass_frame.tests[testno]=\
   505:       [descr,testlabel,'python','Aborted']
   506:     expect = expect_filename or expect_terminator
   507: 
   508:     # print heading
   509:     if hlevel: our_hlevel = hlevel
   510:     else: our_hlevel = self.last_head+1
   511:     if descr == None: descr = 'Test'
   512:     self.head(our_hlevel,'Test '+str(testno)+': '+descr)
   513:     self.set_anchor(testlabel)
   514: 
   515:     our_weaver = self.get_weaver()
   516: 
   517:     if source_terminator:
   518:       our_weaver.writeline('On-the-fly python test script follows.')
   519:       source_origin_line = self.original_count
   520:       source_origin_file = self.original_filename
   521:       test_code = self.collect_lines_upto(source_terminator)
   522:       our_weaver.script_head('python',source_origin_file)
   523:       for i in range(len(test_code)):
   524:         our_weaver.echotangle(source_origin_line+i+1,test_code[i])
   525:       our_weaver.script_foot('python',source_origin_file)
   526:     elif source_filename:
   527:       our_weaver.writeline('Python test script from file '+source_filename+'.')
   528: 
   529:     if expect_terminator:
   530:       expected_origin_line = self.original_count
   531:       expected_origin_file = self.original_filename
   532:       expected_output = self.collect_lines_upto(expect_terminator)
   533:     elif expect_filename:
   534:       # FIX to make document relative
   535:       our_weaver.writeline('Expected output from file '+expected_filename+'.')
   536:       expected_lines = loadfile(expect_filename)
   537: 
   538:     # execute the test code
   539: 
   540:     if source_filename:
   541:       our_source_filename = source_filename
   542:     else:
   543:       our_source_filebase = tempfile.mktemp()
   544:       our_source_filename = our_source_filebase + '_test.py'
   545:       f = open(our_source_filename,'w')
   546:       f.write(string.join(test_code,'\n')+'\n')
   547:       f.close()
   548: 
   549:     our_weaver.writeline('Actual output follows.')
   550:     status, actual_output = self.print_python_output(our_source_filename)
   551:     cmd_ok = status == 0
   552: 
   553:     # delete the file if it was created anonymously
   554:     if not source_filename:
   555:       os.remove(our_source_filename)
   556: 
   557:     if expect:
   558:       try:
   559:         diff_lines = interscript.utilities.diff.diff_lines
   560:         comparison = diff_lines(actual_output, expected_output, context=diff_context)
   561:         equal = len(comparison)==0
   562:         self.pass_frame.tests[testno][2]= 'diff'
   563:         self.pass_frame.tests[testno][3]= ('Fail','Ok')[equal]
   564:         if not equal:
   565:           our_weaver.writeline('On-the-fly expected output follows.')
   566:           our_weaver.expected_head(expected_origin_file)
   567:           for i in range(len(expected_output)):
   568:             our_weaver.echotangle(expected_origin_line+i+1,expected_output[i])
   569:           our_weaver.expected_foot(expected_origin_file)
   570:           self.print_diff_table(comparison)
   571:       except ImportError:
   572:         our_weaver.writeline('Unable to import diff to perform comparison.')
   573:       except KeyboardInterrupt: raise
   574:       except SystemExit: raise
   575:       except:
   576:         traceback.print_exc()
   577:     else:
   578:       self.pass_frame.tests[testno][3]='Inspect'
   579: 
End python section to interscript/frames/inputf.py[20]


6.10.10.2.15.1. Test 2: Python test test
6.10.10.2.15.2. Test 3: Python diff test