source: branches/parabix-svgopen-2008/QA/parabix.py @ 217

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

QA directory and scripts

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