source: trunk/QA/error_note_wf.py @ 2828

Last change on this file since 2828 was 578, checked in by lindanl, 9 years ago

new expected messages

File size: 3.0 KB
RevLine 
[449]1import libxml2
2from subprocess import *
3import os
4import shutil
5import fnmatch                 
6import xml.parsers.expat
7from string import *
8
[537]9xmlconf_home = "/home/linda/workspace/parabix/trunk/QA/xmlconf"
10output_home = "/home/linda/workspace/parabix/trunk/QA/testoutput"
[449]11output_files = output_home+"/Files"
12output_messages = output_home+"/Messages"
[537]13give_reason = True
[449]14
15subdir_prefix = ''
16unsolved = []
17file_type = ''
18All_files = []
[578]19appendreason = True
[449]20
21def load(filename):
22    xml_conf = libxml2.createFileParserCtxt(filename)
23    xml_conf.replaceEntities(1)
24    xml_conf.parseDocument()
25    doc = xml_conf.doc()
26    return doc
27
28def start_element(name, attrs):
29        global subdir_prefix
30        if name == 'TESTCASES':
31                for a in attrs:
32                        if a == 'xml:base':
33                                subdir_prefix = '/'+attrs[a]
34                               
35        elif name == 'TEST':
[519]36                for a in attrs:
37                        if a == 'RECOMMENDATION':
38                                if attrs[a] == 'XML1.1':
39                                        return
[449]40                for a in attrs:
41                        if a == 'TYPE':
42                                if attrs[a] == file_type:
43                                        for a in attrs:
44                                                if a == 'URI':
45                                                        addr = attrs[a].split('/')
46                                                        filename = addr[len(addr)-1]
47                                                        subdir = attrs[a][:attrs[a].find(filename)]
48                                                        do_file(subdir, filename)
49
50
51def parser(xml_file):
52        p = xml.parsers.expat.ParserCreate()
53        p.StartElementHandler = start_element
54        p.CharacterDataHandler = character_data
55        p.EndElementHandler = end_element
56        p.Parse(xml_file, 1)
57               
58def do_file(subdir,filename):
59        global appendreason
60        file_name = xmlconf_home +subdir_prefix+ subdir + filename
61        exe_f = open(file_name, 'r')
62        filedata = exe_f.read()
63        if filedata.find('DOCTYPE')==-1:
64          encoding = filedata[:2].encode("hex")
65          if encoding != '0000' and encoding != 'feff' and encoding != 'fffe' and encoding != '003c' and encoding != '3c00' and encoding != '4c6f':         
66            mes_f = open(output_messages+subdir_prefix+ subdir + filename,'r')
67            All_files.append(file_name)
68            if file_type == 'valid':
69                    if len(mes_f.read()) != 0:
70                            unsolved.append(file_name)
71                            appendreason = True           
72            elif len(mes_f.read()) == 0:
73                    unsolved.append(file_name)
74                    appendreason = True
75            mes_f.close()
76
77
78def character_data(data):
[519]79        if give_reason == True:
80          if appendreason == True:
81            unsolved.append(data+'\n')
82
[449]83def end_element(name):
84      global appendreason
85      appendreason = False
86         
87if __name__ == "__main__":
88        wf_f = open("wf_unsolved","w")
89        valid_f = open("valid_unsolved","w")
90        invalid_f = open("invalid_unsolved","w")
91        error_f = open("error_unsolved","w")
[450]92        doc = load(xmlconf_home+'/xmlconf.xml')
[449]93        file_type = 'not-wf'
94        parser(str(doc))
95        for e in unsolved:
96                wf_f.write(e)
[519]97        print 'The number of unsolved cases is '+ str(len(unsolved))
[449]98        wf_f.close()
99        file_type = 'valid'
100        unsolved = []
101        parser(str(doc))
102        for e in unsolved:
103                valid_f.write(e)
104        valid_f.close()
105        file_type = 'invalid'
106        unsolved = []
107        parser(str(doc))
108        for e in unsolved:
109                invalid_f.write(e)
110        invalid_f.close()
111        file_type = 'error'
112        unsolved = []
113        parser(str(doc))
114        for e in unsolved:
115                error_f.write(e)
116        error_f.close()
[519]117        print 'Total number of test cases is ' + str(len(All_files))
[449]118       
119       
120       
121       
122       
123       
124       
125       
126       
127       
128       
129       
130       
131       
132       
133       
[450]134       
Note: See TracBrowser for help on using the repository browser.