6.23.10.2.18. Python Test

Comienzo python section to interscript/frames/inputf.py[23 /41 ] Siguiente Previo Primero Ăšltimo
   680: #line 939 "input_frame.ipk"
   681:   def test_python(self,
   682:     hlevel=None,
   683:     descr=None,
   684:     source_filename=None,
   685:     source_terminator=None,
   686:     expect_filename=None,
   687:     expect_terminator=None,
   688:     diff_context=0):
   689: 
   690:     testno = self.pass_frame.get_new_test_number()
   691:     testlabel = 'test_'+str(testno)
   692:     test_record = self.pass_frame.tests[testno]=\
   693:       [descr,testlabel,'python','Aborted']
   694:     expect = expect_filename or expect_terminator
   695: 
   696:     # print heading
   697:     if hlevel: our_hlevel = hlevel
   698:     else: our_hlevel = self.last_head+1
   699:     if descr == None: descr = 'Test'
   700:     self.head(our_hlevel,'Test '+str(testno)+': '+descr)
   701:     self.set_anchor(testlabel)
   702: 
   703:     our_weaver = self.get_weaver()
   704: 
   705:     if source_terminator:
   706:       our_weaver.writeline('On-the-fly python test script follows.')
   707:       source_origin_line = self.original_count
   708:       source_origin_file = self.original_filename
   709:       test_code = self.collect_lines_upto(source_terminator)
   710:       our_weaver.script_head('python',source_origin_file)
   711:       for i in range(len(test_code)):
   712:         our_weaver.echotangle(source_origin_line+i+1,test_code[i])
   713:       our_weaver.script_foot('python',source_origin_file)
   714:     elif source_filename:
   715:       our_weaver.writeline('Python test script from file '+source_filename+'.')
   716: 
   717:     if expect_terminator:
   718:       expected_origin_line = self.original_count
   719:       expected_origin_file = self.original_filename
   720:       expected_output = self.collect_lines_upto(expect_terminator)
   721:     elif expect_filename:
   722:       # FIX to make document relative
   723:       our_weaver.writeline('Expected output from file '+expected_filename+'.')
   724:       expected_lines = loadfile(expect_filename)
   725: 
   726:     # execute the test code
   727: 
   728:     if source_filename:
   729:       our_source_filename = source_filename
   730:       description = None
   731:     else:
   732:       our_source_filebase = tempfile.mktemp()
   733:       our_source_filename = our_source_filebase + '_test.py'
   734:       f = open(our_source_filename,'w')
   735:       f.write(string.join(test_code,'\n')+'\n')
   736:       f.close()
   737:       description = 'python <<temporary>>'
   738:     our_weaver.writeline('Actual output follows.')
   739: 
   740:     status, actual_output = self.print_python_output(
   741:       our_source_filename,
   742:       description)
   743:     cmd_ok = status == 0
   744: 
   745:     # delete the file if it was created anonymously
   746:     if not source_filename:
   747:       os.remove(our_source_filename)
   748: 
   749:     if expect:
   750:       try:
   751:         diff_lines = interscript.utilities.diff.diff_lines
   752:         comparison = diff_lines(actual_output, expected_output, context=diff_context)
   753:         equal = len(comparison)==0
   754:         self.pass_frame.tests[testno][2]= 'diff'
   755:         self.pass_frame.tests[testno][3]= ('Fail','Ok')[equal]
   756:         if not equal:
   757:           our_weaver.writeline('On-the-fly expected output follows.')
   758:           our_weaver.expected_head(expected_origin_file)
   759:           for i in range(len(expected_output)):
   760:             our_weaver.echotangle(expected_origin_line+i+1,expected_output[i])
   761:           our_weaver.expected_foot(expected_origin_file)
   762:           self.print_diff_table(comparison)
   763:       except ImportError:
   764:         our_weaver.writeline('Unable to import diff to perform comparison.')
   765:       except KeyboardInterrupt: raise
   766:       except SystemExit: raise
   767:       except:
   768:         traceback.print_exc()
   769:     else:
   770:       self.pass_frame.tests[testno][3]='Inspect'
   771: 
End python section to interscript/frames/inputf.py[23]


6.23.10.2.18.1. Test 18: Python test test
6.23.10.2.18.2. Test 19: Python diff test