source: trunk/symbol_table/test/run_tests.py @ 2141

Last change on this file since 2141 was 2141, checked in by ksherdy, 7 years ago

Fixed 64 bit machine copyback. Updated default to index at follows pos w/o Makefile preprocessor define.

File size: 3.3 KB
Line 
1#
2# run_tests.py - Length Sorted Symbol Table Tests
3#
4# Quick-and-dirty Python symbol table test script
5# to generates expected output files for diff and gid tests.
6#
7# Created on: April 12, 2012
8# Author: Ken Herdy
9#
10#----------------------------------------------------------------------------
11# Edit:
12program_dir_path='../src'
13test_dir_path='../test/pin'
14out_dir_path='../test/pout'
15#----------------------------------------------------------------------------
16import sys
17import os
18import subprocess
19import shutil
20import fnmatch                 
21import string
22#----------------------------------------------------------------------------
23# Test cases. Quick and dirty.
24#----------------------------------------------------------------------------
25def gid_testcase(program, input_file):
26    file_name = os.path.basename(input_file)
27    prefix = file_name[1:file_name.rindex(')')]
28    triples = prefix.split(')_(')
29
30    e = 0
31    for t in triples:
32        e = e + int(t.split('_')[2])
33
34    print file_name
35
36    output = subprocess.Popen([program, input_file], stdout=subprocess.PIPE).communicate()[0]
37    a = int(output)
38
39    print "Expected: %d" % e
40    print "Actual: %d" % a
41    print
42    return e == a
43
44def diff_testcase(program, input_file, outfile_root):
45        (head, tail) = os.path.split(input_file)
46        outputdir = os.path.join(outfile_root, tail)
47        (head, tail) = os.path.split(outputdir)
48        if os.path.exists(head)==False:         
49                os.makedirs(head)
50        out_f = open(head + os.path.sep + tail, 'w')
51        subprocess.call([program, input_file], stderr=None, stdout=out_f)
52        out_f.close()
53
54def gen_test_files(test_dir_path):
55    test_files = []
56    for dirname, dirnames, filenames in os.walk(test_dir_path):
57            for filename in filenames:
58                    if filename.endswith('.test') and not filename.endswith('.svn-base'):
59                            test_files.append(os.path.relpath(os.path.join(dirname, filename)))
60    return test_files
61
62#----------------------------------------------------------------------------
63# Command line args.
64#----------------------------------------------------------------------------
65import optparse
66def get_option_parser():
67        """Return an C{optparse.OptionParser} instance tied to this configuration."""
68       
69        parser = optparse.OptionParser(usage='python %prog [options] <program>',
70                                        version='1.0',
71                                        )
72       
73        # Option definitions
74        parser.add_option('-d', '--diff', 
75                          dest='diff_test', 
76                          action='store_true', 
77                          default=False,
78                          help='Diff test.',
79                          )
80
81        parser.add_option('-g', '--gid', 
82                          dest='gid_test', 
83                          action='store_true', 
84                          default=False,
85                          help='GID test.',
86                          )
87
88        return parser
89#----------------------------------------------------------------------------
90
91if __name__ == "__main__":
92
93        option_parser = get_option_parser() 
94        options, args = option_parser.parse_args(sys.argv[1:])
95
96        if len(args) != 1:
97            option_parser.print_usage()
98            sys.exit()
99
100        program = os.path.join(program_dir_path,sys.argv[1])
101        test_files = gen_test_files(test_dir_path)
102
103        if options.diff_test:
104            for test_file in test_files:
105                    diff_testcase(program, test_file, out_dir_path)
106
107        if options.gid_test:
108            all_true = True
109            for test_file in test_files:
110                    result = gid_testcase(program, test_file)
111                    all_true = all_true and result
112
113            if all_true:
114                print "All pass."
115            else:
116                print "Fail. Potential cauase: Insufficient COPYBACK_BLOCKS (buffer.hpp)."
117       
Note: See TracBrowser for help on using the repository browser.