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:
6.23.10.2.18.1. Test 18: Python test test
6.23.10.2.18.2. Test 19: Python diff test