626: #line 896 "input_frame.ipk" 627: def test_python(self, 628: hlevel=None, 629: descr=None, 630: source_filename=None, 631: source_terminator=None, 632: expect_filename=None, 633: expect_terminator=None, 634: diff_context=0): 635: 636: testno = self.pass_frame.get_new_test_number() 637: testlabel = 'test_'+str(testno) 638: test_record = self.pass_frame.tests[testno]=\ 639: [descr,testlabel,'python','Aborted'] 640: expect = expect_filename or expect_terminator 641: 642: # print heading 643: if hlevel: our_hlevel = hlevel 644: else: our_hlevel = self.last_head+1 645: if descr == None: descr = 'Test' 646: self.head(our_hlevel,'Test '+str(testno)+': '+descr) 647: self.set_anchor(testlabel) 648: 649: our_weaver = self.get_weaver() 650: 651: if source_terminator: 652: our_weaver.writeline('On-the-fly python test script follows.') 653: source_origin_line = self.original_count 654: source_origin_file = self.original_filename 655: test_code = self.collect_lines_upto(source_terminator) 656: our_weaver.script_head('python',source_origin_file) 657: for i in range(len(test_code)): 658: our_weaver.echotangle(source_origin_line+i+1,test_code[i]) 659: our_weaver.script_foot('python',source_origin_file) 660: elif source_filename: 661: our_weaver.writeline('Python test script from file '+source_filename+'.') 662: 663: if expect_terminator: 664: expected_origin_line = self.original_count 665: expected_origin_file = self.original_filename 666: expected_output = self.collect_lines_upto(expect_terminator) 667: elif expect_filename: 668: # FIX to make document relative 669: our_weaver.writeline('Expected output from file '+expected_filename+'.') 670: expected_lines = loadfile(expect_filename) 671: 672: # execute the test code 673: 674: if source_filename: 675: our_source_filename = source_filename 676: description = None 677: else: 678: our_source_filebase = tempfile.mktemp() 679: our_source_filename = our_source_filebase + '_test.py' 680: f = open(our_source_filename,'w') 681: f.write(string.join(test_code,'\n')+'\n') 682: f.close() 683: description = 'python <<temporary>>' 684: our_weaver.writeline('Actual output follows.') 685: 686: status, actual_output = self.print_python_output( 687: our_source_filename, 688: description) 689: cmd_ok = status == 0 690: 691: # delete the file if it was created anonymously 692: if not source_filename: 693: os.remove(our_source_filename) 694: 695: if expect: 696: try: 697: diff_lines = interscript.utilities.diff.diff_lines 698: comparison = diff_lines(actual_output, expected_output, context=diff_context) 699: equal = len(comparison)==0 700: self.pass_frame.tests[testno][2]= 'diff' 701: self.pass_frame.tests[testno][3]= ('Fail','Ok')[equal] 702: if not equal: 703: our_weaver.writeline('On-the-fly expected output follows.') 704: our_weaver.expected_head(expected_origin_file) 705: for i in range(len(expected_output)): 706: our_weaver.echotangle(expected_origin_line+i+1,expected_output[i]) 707: our_weaver.expected_foot(expected_origin_file) 708: self.print_diff_table(comparison) 709: except ImportError: 710: our_weaver.writeline('Unable to import diff to perform comparison.') 711: except KeyboardInterrupt: raise 712: except SystemExit: raise 713: except: 714: traceback.print_exc() 715: else: 716: self.pass_frame.tests[testno][3]='Inspect' 717:
6.13.10.2.17.1. Test 15: Python test test
6.13.10.2.17.2. Test 16: Python diff test