source: icGREP/icgrep-devel/QA/character_deposit/character_deposit_test.py @ 5858

Last change on this file since 5858 was 5858, checked in by xwa163, 15 months ago

Add test for character_deposit (disabled because of 32bit machine issue for jenkins server)

File size: 3.8 KB
Line 
1import character_deposit
2import sys, subprocess, optparse, os, string, random
3import codecs
4import shutil
5
6global options
7global lz4d_program_under_test
8
9failure_count = 0
10
11def run_tests(test_dir, output_dir, python_output_dir):
12    global options
13    global failure_count
14
15    test_files = os.listdir(test_dir)
16    for test_file in test_files:
17        if not test_file.endswith('.txt'):
18            continue
19        output_file = "out_" + test_file
20
21        test_file_full_path = os.path.join(test_dir, test_file)
22        output_file_full_path = os.path.join(output_dir, output_file)
23        python_output_file_full_path = os.path.join(python_output_dir, output_file)
24
25        character_deposit_cmd = "%s b %s %s" % (lz4d_program_under_test, test_file_full_path, output_file_full_path)
26
27        if options.verbose:
28            print("Doing: " + character_deposit_cmd)
29
30        try:
31            character_deposit_out = subprocess.check_output(character_deposit_cmd.encode('utf-8'), cwd=options.exec_dir, shell=True)
32        except subprocess.CalledProcessError as e:
33            character_deposit_out = e.output
34
35        character_deposit.handle_deposit(test_file_full_path, python_output_file_full_path, 'b')
36
37        with codecs.open(output_file_full_path, mode='rb') as inf:
38            output_content = inf.read()
39        with codecs.open(python_output_file_full_path, mode='rb') as inf:
40            expected_output_content = inf.read()
41
42        if output_content != expected_output_content:
43            print("Test failure: datafile {%s}" % test_file)
44            failure_count += 1
45        else:
46            if options.verbose:
47                print("Test success: datafile {%s}" % test_file)
48
49    if failure_count > 0:
50        print("Test Failure")
51        exit(1)
52    else:
53        print("Test Success")
54
55
56if __name__ == '__main__':
57    QA_dir = os.path.dirname(sys.argv[0])
58
59    option_parser = optparse.OptionParser(usage='python %prog [options] <character_deposit_executable>', version='1.0')
60    option_parser.add_option('-d', '--datafile_dir',
61                             dest='datafile_dir', type='string', default='testfiles',
62                             help='directory for test files.')
63    option_parser.add_option('-e', '--exec_dir',
64                             dest='exec_dir', type='string', default='.',
65                             help='executable directory')
66    option_parser.add_option('-o', '--output_dir',
67                             dest='output_dir', type='string', default='output',
68                             help='output directory of decompressed files')
69    option_parser.add_option('-p', '--python_output_dir',
70                             dest='python_output_dir', type='string', default='python_output',
71                             help='output directory of expected result (python version)')
72    option_parser.add_option('-v', '--verbose',
73                             dest='verbose', action='store_true', default=False,
74                             help='verbose output: show successful tests')
75    options, args = option_parser.parse_args(sys.argv[1:])
76
77    if len(args) != 1:
78        option_parser.print_usage()
79        sys.exit(1)
80
81    if not os.path.exists(options.datafile_dir):
82        print(options.datafile_dir + ' not exists')
83        sys.exit(1)
84
85    if os.path.exists(options.output_dir):
86        shutil.rmtree(options.output_dir)
87    os.mkdir(options.output_dir)
88
89
90    if os.path.exists(options.python_output_dir):
91        shutil.rmtree(options.python_output_dir)
92    os.mkdir(options.python_output_dir)
93
94    lz4d_program_under_test = args[0]
95
96    test_dir = os.path.join(QA_dir, options.datafile_dir)
97    output_dir = os.path.join(QA_dir, options.output_dir)
98    python_output_dir = os.path.join(QA_dir, options.python_output_dir)
99    run_tests(test_dir, output_dir, python_output_dir)
100
Note: See TracBrowser for help on using the repository browser.