source: trunk/QA/expat.py @ 2272

Last change on this file since 2272 was 195, checked in by lindanl, 11 years ago

QA directory and scripts

File size: 1.8 KB
Line 
1import libxml2
2from subprocess import *
3import os
4import shutil
5import fnmatch                 
6import xml.parsers.expat
7from string import *
8
9xmlwf_home = "/home/lindanl/home/expat-2.0.1/usr/bin"
10xmlconf_home = "/home/lindanl/home/xmlconf"
11output_home = "/home/lindanl/home/xmlwf_all/expat"
12output_files = output_home+"/Files"
13output_messages = output_home+"/Messages"
14
15
16subdir_prefix = ''
17
18def load(filename):
19    xml_conf = libxml2.createFileParserCtxt(filename)
20    xml_conf.replaceEntities(1)
21    xml_conf.parseDocument()
22    doc = xml_conf.doc()
23    return doc
24
25def start_element(name, attrs):
26        global subdir_prefix
27        if name == 'TESTCASES':
28                for a in attrs:
29                        if a == 'xml:base':
30                                subdir_prefix = '/'+attrs[a]
31                               
32        elif name == 'TEST':
33                for a in attrs:
34                        if a == 'URI':
35                                addr = attrs[a].split('/')
36                                filename = addr[len(addr)-1]
37                                subdir = attrs[a][:attrs[a].find(filename)]
38                                do_file(subdir, filename)
39
40def parser(xml_file):
41        p = xml.parsers.expat.ParserCreate()
42        p.StartElementHandler = start_element
43        p.Parse(xml_file, 1)
44               
45def do_file(subdir,filename):
46        messagedir = output_messages + subdir_prefix + subdir
47        outputdir = output_files + subdir_prefix + subdir
48        if os.path.exists(outputdir)==False:
49                os.makedirs(outputdir)
50        if os.path.exists(messagedir)==False:
51                os.makedirs(messagedir)
52        f = open(output_messages + subdir_prefix + subdir+ filename, 'w')
53        call([xmlwf_home + '/xmlwf', '-d', output_files + subdir_prefix+subdir, '-p', xmlconf_home +subdir_prefix+ subdir+filename], stdout=f)
54       
55               
56if __name__ == "__main__":
57        if os.path.exists( output_home + ".bak" ):
58                shutil.rmtree(output_home + ".bak")
59        if os.path.exists( output_home ):
60                shutil.move(output_home, output_home + ".bak")
61        os.mkdir(output_home)
62        os.mkdir(output_files)
63        os.mkdir(output_messages)
64       
65        doc = load('xmlconf.xml')
66        parser(str(doc))
67       
68       
69       
70       
71       
72       
73       
74       
75       
76       
77       
78       
79       
80       
81       
82       
83       
Note: See TracBrowser for help on using the repository browser.