File: test.py

package info (click to toggle)
auto-07p 0.9.1%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 16,200 kB
  • sloc: fortran: 22,644; f90: 19,340; python: 19,045; ansic: 11,116; sh: 1,079; makefile: 618; perl: 339
file content (148 lines) | stat: -rwxr-xr-x 4,345 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/usr/bin/env python

#This is Randy Paffenroths attempt to make a better regression
#tester for AUTO.
import getopt
import os
import sys, shutil
import time
import platform
from interactiveBindings import AUTOInteractiveConsole
import AUTOclui
import parse_test
import runDemo

# selection
DIR1=["pp2","exp","int","dd2","opt","lin","bvp","pp3","wav","plp"]

# HomCont selection
DIR2=["san","mtn","kpr","cir","she","rev"] 

# All AUTO97 demos
DIR3=DIR1+DIR2+["ab","abc","brc","brf","bru","chu","enz","ext","ezp","frc",
                "fsh","ivp","kar","lor","lrz","nag","non","obv","ops","pd1",
                "pd2","pen","phs","ppp","pvl","spb","stw","tim","tor"]
DIR3.sort()

# Plus new demos
DIR4=DIR3+["abcb","apbp","c2c","cusp","ffn","fhh","fhn","fnb","fnc","hen",
           "kdv","lcbp","log","man","nep","p2c","pcl","ph1","pla","python",
           "python/n-body","r3b","sib",
           "snh","sspg","tfc","um2","um3","vhb"]
DIR4.sort()

# dummy stdin to redirect wait()s
class nostdin(object):
    def read(self):
        return "\n"
    def readline(self):
        return "\n"

def test(demos, versions=None, log_file=None, parse=True):
    sys.stdin = nostdin()
    if demos == "selec":
        demos = DIR1
    if demos == "hom":
        demos = DIR2
    if demos == "all97":
        demos = DIR3
    if demos == "all":
        demos = DIR4

    if log_file is None:
        hostname = platform.node()
        if '.' in hostname:
            hostname = hostname.split('.')[0]
        log_file = hostname+'_log'

    if versions is None:
        versions = ['07p']

    log_files = []
    log = {}
    err = {}
    runner = {}
    for version in versions:
        if len(log_file)!=0:
            log_files.append(log_file+version)
            log[version] = open(log_file+version,"w")
            err[version] = open(log_file+version+"errors","w")
        else:
            log[version] = None
            err[version] = None
        runner[version] = AUTOInteractiveConsole(AUTOclui.exportFunctions(
                log[version],err[version]))

    autofiles = []
    for d in demos:
        print("Doing "+d)
        for version in versions:
            print("Version "+version)
            auto_dir=os.path.join(os.environ["AUTO_DIR"],"..",version)
            demo_dir=os.path.join(auto_dir,"demos",d)
            autofiles = []
            if os.path.exists(os.path.join(demo_dir,"%s.auto"%d)):
                autofiles = ["%s.auto"%d]
            else:
                autofiles = [dirname for dirname in os.listdir(demo_dir) if
                             dirname[-5:]=='.auto']
                autofiles.sort()
            if len(autofiles) > 0:
                oldcwd = os.getcwd()
                tmpdir = os.path.join(oldcwd,'tmp')
                try:
                    shutil.rmtree(tmpdir)
                except OSError:
                    pass
                try:
                    os.mkdir(tmpdir)
                except OSError:
                    pass
                os.chdir(tmpdir)
                AUTOclui.copydemo(d)
                log[version].write("Demo %s is started\n"%d)
                for autofile in autofiles:
                    os.chdir(tmpdir)
                    runner[version].auto(autofile)
                os.chdir(oldcwd)
                log[version].write("Demo %s is done\n"%d)
            else:
                runDemo.runDemo(d, verbose="yes", log=log[version],
                                err=err[version], auto_dir=auto_dir)
    if len(autofiles) > 0:
        try:
            shutil.rmtree(tmpdir)
        except OSError:
            pass

    if len(log_file)!=0:
        for version in versions:
            runner[version].close()
            err[version].close()
            log[version].close()

    if parse:
        parse_test.parse(log_files, demos=demos)

if __name__ == '__main__':
    opts_list,args=getopt.getopt(sys.argv[1:],"cfpl:i:")

    #defaults
    versions = []
    log_file = ""

    opts={}
    for x in opts_list:
        opts[x[0]]=x[1]

    if opts.has_key("-c"):
        versions.append("2000")
    if opts.has_key("-f"):
        versions.append("97")
    if opts.has_key("-p"):
        versions.append("07p")
    if opts.has_key("-l"):
        log_file=opts["-l"]

    demos = args[0]
    test(args[0], versions, log_file, parse=False)