source: orange/Orange/testing/regression/xtest_one.py @ 10650:1063faf36029

Revision 10650:1063faf36029, 5.6 KB checked in by mstajdohar, 2 years ago (diff)

Removed ignore attribute warnings.

Line 
1import sys as t__sys
2import traceback as t__traceback
3import string as t__string
4import os as t__os
5
6from Orange.core import AttributeWarning
7
8#ignore warnings
9import warnings as t__warnings
10# use obj.setattr("attribute", value)!
11#t__warnings.filterwarnings("ignore", "", AttributeWarning)
12
13#from numpy import seterr
14#seterr(all='raise')
15
16NO_RANDOMNESS = 1 # prevent random parts of scripts to run
17
18def t__isdigit(c):
19    return c in "0123456789"
20
21def t__samefiles(name1, name2):
22    equal = 1
23    try:
24        fnew, fold = open(name1, "rt"), open(name2, "rt")
25        lines1 = [t__string.rstrip(x) for x in fnew.readlines()]
26        lines2 = [t__string.rstrip(x) for x in fold.readlines()]
27    finally:
28        fnew.close()
29        fold.close()
30
31    if lines1 == lines2:
32        return 1
33    if len(lines1) != len(lines2):
34        return 0
35    for l in range(len(lines1)):
36        line1, line2 = lines1[l], lines2[l]
37        if line1 != line2:
38            if len(line1) != len(line2):
39                return 0
40            i = 0
41            while i < len(line1):
42                if line1[i] != line2[i]:
43                    j = i
44                    while i < len(line1) and t__isdigit(line1[i]):
45                        i += 1
46                    if i == j:
47                        return 0
48                    while j >= 0 and t__isdigit(line1[j]):
49                        j -= 1
50                    if j < 0 or line1[j] != ".":
51                        return 0
52                    j -= 1
53                    while j >= 0 and t__isdigit(line1[j]):
54                        j -= 1
55                    if (j >= 0) and (line1[j] in "+-"):
56                        j -= 1
57                    n1, n2 = line1[j + 1:i], line2[j + 1:i]
58                    if n1.count(".") != n2.count("."):
59                        return 0
60                    for c in n2:
61                        if not c in "0123456789.+- ":
62                            return 0
63                    maxdiff = 1.5 * (.1 ** (len(n1) - n1.find(".") - 1))
64                    if abs(float(n1) - float(n2)) > maxdiff:
65                        return 0
66                else:
67                    i += 1
68    return 1
69
70
71def t__copyfile(src, dst):
72    try:
73        srcf = open(src, "rt")
74        dstf = open(dst, "wt")
75        dstf.write(srcf.read())
76    finally:
77        srcf.close()
78        dstf.close()
79
80t__sys.path.append(".")
81
82# Arguments: name, #iterations, runNo, isNewFile, outputsdir
83
84t__name = t__sys.argv[1]
85t__iterations = int(t__sys.argv[2])
86t__outputsdir = t__sys.argv[3]
87
88# when testing backward compatibility support suppress deprecation warnings
89if "tests_20" in t__outputsdir or "tutorial" in t__outputsdir:
90    t__warnings.filterwarnings("ignore", category=DeprecationWarning)
91
92t__timedoutname, t__crashname, t__errorname, t__newname, t__changedname, t__random1name, t__random2name = ["%s/%s.%s.%s.%s.txt" % (t__outputsdir, t__name, t__sys.platform, t__sys.version[:3], t) for t in ["timedout", "crash", "error", "new", "changed", "random1", "random2"]]
93t__officialname = "%s/%s.%s.%s.txt" % (t__outputsdir, t__name, t__sys.platform, t__sys.version[:3])
94if not t__os.path.exists(t__officialname):
95    t__officialname = "%s/%s.%s.txt" % (t__outputsdir, t__name, t__sys.platform)
96    if not t__os.path.exists(t__officialname):
97        t__officialname = "%s/%s.txt" % (t__outputsdir, t__name)
98
99t__isNewFile = not t__os.path.exists(t__officialname)
100
101t__message = open("xtest1_report", "wt")
102
103t__isChanged = False
104
105for t__iteration in range(t__iterations):
106    if t__iterations > 1:
107        print t__iteration + 1,
108
109    try:
110        t__fnew = open(t__crashname, "wt")
111        t__sout = t__sys.stdout
112        t__serr = t__sys.stderr
113        try:
114            t__sys.stdout = t__sys.stderr = t__fnew
115            execfile(t__name)
116
117        except Exception, e:
118            # execution ended with an error
119            apply(t__traceback.print_exception, t__sys.exc_info())
120            t__sys.stdout = t__sout
121            t__sys.stderr = t__serr
122            t__fnew.close()
123
124            t__message.write("error\n%i\n" % t__iteration)
125            print "error"
126            t__message.write(reduce(lambda x, y: x + y, apply(t__traceback.format_exception, t__sys.exc_info())))
127            t__sys.stderr.write(reduce(lambda x, y: x + y, apply(t__traceback.format_exception, t__sys.exc_info())))
128            t__message.close()
129            t__sys.exit(1)
130
131        t__sys.stdout = t__sout
132        t__sys.stderr = t__serr
133    finally:
134        t__fnew.close()
135
136    if not t__iteration:
137        # first iteration
138        if t__isNewFile:
139            # the file is a new files and this has been the first iteration
140            t__os.rename(t__crashname, t__newname)
141            t__copyfile(t__newname, t__officialname)
142            t__prevname = t__newname
143        elif not t__samefiles(t__crashname, t__officialname):
144            # it's an old file and it has changed
145            t__os.rename(t__crashname, t__changedname)
146            t__prevname = t__changedname
147            t__isChanged = True
148        else:
149            # file is OK
150            t__os.remove(t__crashname)
151            t__prevname = t__officialname
152    else:
153        if not t__samefiles(t__crashname, t__prevname):
154            # random file (either new or old)
155            t__copyfile(t__prevname, t__random1name)
156            t__os.rename(t__crashname, t__random2name)
157            t__message.write("random\n")
158            print "random"
159            t__message.close()
160            t__sys.exit(2)
161        else:
162            t__os.remove(t__crashname) # iterate on with same file
163
164if t__isChanged:
165    t__message.write("changed")
166    print "changed"
167    t__message.close()
168    t__sys.exit(3)
169
170t__message.write("OK")
171print "OK"
172t__message.close()
173t__sys.exit(0)
Note: See TracBrowser for help on using the repository browser.