Skip to content

Commit e9315f2

Browse files
authored
Move test_fuzz_parser to eng/scripts (#2048)
1 parent 5e680fc commit e9315f2

3 files changed

Lines changed: 60 additions & 67 deletions

File tree

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MAX_DEPTH = 2
22

3-
#class StatementGenerator(BaseGenerator):
3+
#class StatementGenerator(BaseGenerator):
44
# def generate(self, depth): raise NotImplementedError
55

66
######################################################################
@@ -12,7 +12,7 @@ def generate(self, depth): raise NotImplementedError
1212
class BinaryExpression(ExpressionGenerator):
1313
def __init__(self, op):
1414
self.op = op
15-
def generate(self, depth):
15+
def generate(self, depth):
1616
exprs = list(MakeExpressionGenerator(depth + 1))
1717
for x in exprs:
1818
for y in exprs:
@@ -21,10 +21,10 @@ def generate(self, depth):
2121
class UnaryExpression(ExpressionGenerator):
2222
def __init__(self, op):
2323
self.op = op
24-
def generate(self, depth):
24+
def generate(self, depth):
2525
for x in MakeExpressionGenerator(depth + 1):
2626
yield self.op + ' ' + x
27-
27+
2828
class EmptyExpression(ExpressionGenerator):
2929
def generate(self, depth):
3030
yield ' '
@@ -40,7 +40,7 @@ def __init__(self, value):
4040
self.value = value
4141
def generate(self, depth):
4242
yield self.value
43-
43+
4444
class InvalidExpression(ExpressionGenerator):
4545
def __init__(self, value):
4646
self.value = value
@@ -53,16 +53,16 @@ def __init__(self, trailingComma):
5353
def generate(self, depth):
5454
subexprs = list(MakeExpressionGenerator(depth + 1))
5555
head = '('
56-
56+
5757
if self.trailingComma:
5858
tail = ', )'
5959
else:
6060
tail = ')'
61-
61+
6262
args3 = [x + ', ' + y + ', ' + z for x in subexprs for y in subexprs for z in subexprs]
6363
args2 = [x + ', ' + y for x in subexprs for y in subexprs]
6464
args1 = [x for x in subexprs]
65-
65+
6666
yield head + tail
6767
for values in args1 + args2 + args3:
6868
yield head + values + tail
@@ -75,19 +75,19 @@ def generate(self, depth):
7575
yield '(' + expr + ' for ' + target + ' in ' + inTest + ')'
7676
for cond in MakeExpressionGenerator(depth + 1):
7777
yield '(' + expr + ' for ' + target + ' in ' + inTest + ' if ' + cond + ')'
78-
78+
7979

8080
class DictionaryDisplay(ExpressionGenerator):
8181
def generate(self, depth):
8282
subexprs = list(MakeExpressionGenerator(depth + 1))
83-
83+
8484
args = [x + ': ' + y for x in subexprs for y in subexprs]
8585
yield '{}'
86-
86+
8787
for x in args:
8888
yield '{' + x + '}'
8989
yield '{' + x + ', }'
90-
90+
9191
for x, y in zip(args, args):
9292
yield '{' + x + ', ' + y + '}'
9393
yield '{' + x + ', ' + y + ', }'
@@ -112,52 +112,52 @@ def generate(self, depth):
112112
class SubscriptionExpression(object):
113113
def generate(self, depth):
114114
for expr in MakeExpressionGenerator(depth + 1):
115-
for subscript in MakeExpressionGenerator(depth + 1):
115+
for subscript in MakeExpressionGenerator(depth + 1):
116116
yield expr + '[' + subscript + ']'
117117
yield expr + '[' + subscript + ', ]'
118118

119119
for expr in MakeExpressionGenerator(depth + 1):
120-
for subscript in MakeExpressionGenerator(depth + 1):
121-
for subscript2 in MakeExpressionGenerator(depth + 1):
120+
for subscript in MakeExpressionGenerator(depth + 1):
121+
for subscript2 in MakeExpressionGenerator(depth + 1):
122122
yield expr + '[' + subscript + ', ' + subscript2 + ']'
123123
yield expr + '[' + subscript + ', ' + subscript2 + ', ]'
124124

125125
class SlicingExpression(object):
126126
def generate(self, depth):
127127
for expr in MakeExpressionGenerator(depth + 1):
128-
for subscript in MakeExpressionGenerator(depth + 1):
128+
for subscript in MakeExpressionGenerator(depth + 1):
129129
yield expr + '[' + subscript + ':]'
130130
#yield expr + '[:' + subscript + ']'
131131
#yield expr + '[' + subscript + '::]'
132132
#yield expr + '[::' + subscript + ']'
133133

134134
for expr in MakeExpressionGenerator(depth + 1):
135-
for subscript in MakeExpressionGenerator(depth + 1):
136-
for subscript2 in MakeExpressionGenerator(depth + 1):
135+
for subscript in MakeExpressionGenerator(depth + 1):
136+
for subscript2 in MakeExpressionGenerator(depth + 1):
137137
yield expr + '[' + subscript + ': ' + subscript2 + ']'
138138
#yield expr + '[' + subscript + ', ' + subscript2 + ': ]'
139139
#yield expr + '[ :' + subscript + ', ' + subscript2 + ']'
140140

141141
for expr in MakeExpressionGenerator(depth + 1):
142-
for subscript in MakeExpressionGenerator(depth + 1):
143-
for subscript2 in MakeExpressionGenerator(depth + 1):
144-
for subscript3 in MakeExpressionGenerator(depth + 1):
142+
for subscript in MakeExpressionGenerator(depth + 1):
143+
for subscript2 in MakeExpressionGenerator(depth + 1):
144+
for subscript3 in MakeExpressionGenerator(depth + 1):
145145
yield expr + '[' + subscript + ': ' + subscript2 + ':' + subscript3 + ']'
146146

147147
class CallExpression(object):
148148
def generate(self, depth):
149149
for expr in MakeExpressionGenerator(depth + 1):
150-
for subscript in MakeExpressionGenerator(depth + 1):
150+
for subscript in MakeExpressionGenerator(depth + 1):
151151
yield expr + '(' + subscript + ')'
152152
yield expr + '(' + subscript + ', )'
153153
yield expr + '(*' + subscript + ')'
154154
yield expr + '(**' + subscript + ', )'
155155
for name in MakeExpressionGenerator(depth + 1):
156-
yield expr + '(' + name + ' = ' + subscript + ')'
156+
yield expr + '(' + name + ' = ' + subscript + ')'
157157

158158
for expr in MakeExpressionGenerator(depth + 1):
159-
for subscript in MakeExpressionGenerator(depth + 1):
160-
for subscript2 in MakeExpressionGenerator(depth + 1):
159+
for subscript in MakeExpressionGenerator(depth + 1):
160+
for subscript2 in MakeExpressionGenerator(depth + 1):
161161
yield expr + '(' + subscript + ', ' + subscript2 + ')'
162162
yield expr + '(' + subscript + ', ' + subscript2 + ', )'
163163
yield expr + '(*' + subscript + ', ' + subscript2 + ')'
@@ -209,7 +209,7 @@ def generate(self, depth):
209209
class PassStatement(ExpressionGenerator):
210210
def generate(self, depth):
211211
yield 'pass\n'
212-
212+
213213
class IfStatement(ExpressionGenerator):
214214
def generate(self, depth):
215215
for expr in MakeExpressionGenerator(0):
@@ -239,21 +239,21 @@ class ExpressionStatement(ExpressionGenerator):
239239
def generate(self, depth):
240240
for expr in MakeExpressionGenerator(0):
241241
yield expr + '\n'
242-
242+
243243
######################################################################
244244
# Factories
245245

246246
class BinaryMaker(object):
247247
def __init__(self, value):
248-
self.value = value
248+
self.value = value
249249
def __call__(self):
250250
return BinaryExpression(self.value)
251251
def __repr__(self):
252252
return 'BinaryMaker(' + repr(self.value) + ')'
253253

254254
class UnaryMaker(object):
255255
def __init__(self, value):
256-
self.value = value
256+
self.value = value
257257
def __call__(self):
258258
return UnaryExpression(self.value)
259259
def __repr__(self):
@@ -291,11 +291,11 @@ def __call__(self):
291291
def __repr__(self):
292292
return 'ParenthFormMaker(' + self.trailingComma + ')'
293293

294-
identifier_exprs = [NameMaker('foo'), NameMaker('...'), NameMaker('reallylongname' * 200)] # NameMaker('_bar'),
294+
identifier_exprs = [NameMaker('foo'), NameMaker('...'), NameMaker('reallylongname' * 200)] # NameMaker('_bar'),
295295

296296
expr_gens = identifier_exprs + \
297-
[BinaryMaker('+'), BinaryMaker('**'), BinaryMaker('<<'), BinaryMaker('&'), BinaryMaker('=='), BinaryMaker('>'), BinaryMaker(' in '), # BinaryMaker('-'), BinaryMaker('|'), BinaryMaker('^'),
298-
UnaryMaker('~'), UnaryMaker(' not '), # UnaryMaker('-'), UnaryMaker('+'),
297+
[BinaryMaker('+'), BinaryMaker('**'), BinaryMaker('<<'), BinaryMaker('&'), BinaryMaker('=='), BinaryMaker('>'), BinaryMaker(' in '), # BinaryMaker('-'), BinaryMaker('|'), BinaryMaker('^'),
298+
UnaryMaker('~'), UnaryMaker(' not '), # UnaryMaker('-'), UnaryMaker('+'),
299299
EmptyExpression,
300300
GeneratorExpression,
301301
DictionaryDisplay,
@@ -304,7 +304,7 @@ def __repr__(self):
304304
SubscriptionExpression,
305305
SlicingExpression,
306306
ConstantMaker(1), ConstantMaker('abc'), ConstantMaker(1), ConstantMaker(1.0), ConstantMaker(1j),
307-
ParenthFormMaker(False), ParenthFormMaker(True),
307+
ParenthFormMaker(False), ParenthFormMaker(True),
308308
StringConversion,
309309
YieldExpression,
310310
InvalidMaker('$'), InvalidMaker('@'), InvalidMaker('!'), InvalidMaker('\\'), #InvalidMaker('\0'),
@@ -315,35 +315,35 @@ def __repr__(self):
315315

316316
def MakeExpressionGenerator(depth):
317317
"""yields all possible expressions"""
318-
if depth == MAX_DEPTH:
318+
if depth == MAX_DEPTH:
319319
yield '' # empty expr
320-
else:
321-
for exprGen in expr_gens:
320+
else:
321+
for exprGen in expr_gens:
322322
for value in exprGen().generate(depth):
323323
yield value
324324

325325
def Indent(value, depth):
326-
if depth == 0:
326+
if depth == 0:
327327
return value
328328
indent = ' ' * depth
329329
return indent + value.replace('\n', '\n' + indent)
330330

331331
def MakeStatementGenerator(depth):
332332
"""yields all possible expressions"""
333-
if depth == MAX_DEPTH:
333+
if depth == MAX_DEPTH:
334334
yield '' # empty expr
335-
else:
336-
for stmtGen in stmt_gens:
335+
else:
336+
for stmtGen in stmt_gens:
337337
for value in stmtGen().generate(depth):
338338
yield Indent(value, depth)
339339

340340
def MakeIdentifierGenerator(depth):
341-
for exprGen in identifier_exprs:
341+
for exprGen in identifier_exprs:
342342
for value in exprGen().generate(depth):
343343
yield value
344-
344+
345345
i = 0
346-
for x in MakeStatementGenerator(0):
346+
for x in MakeStatementGenerator(0):
347347
i += 1
348348
if i % 1000 == 0:
349349
print('.', end=' ')
@@ -352,4 +352,4 @@ def MakeIdentifierGenerator(depth):
352352
except SyntaxError:
353353
pass
354354

355-
print('Ran %d tests', i)
355+
print('Ran %d tests' % i)

tests/IronPython.Tests/Cases/IronPythonCases.cs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Linq;
8+
89
using NUnit.Framework;
910

1011
namespace IronPythonTest.Cases {
@@ -18,17 +19,22 @@ public override int Test(TestInfo testcase) {
1819

1920
internal class IronPythonCaseGenerator : CommonCaseGenerator<IronPythonCases> {
2021
protected override IEnumerable<TestInfo> GetTests() {
21-
return GetFilenames(new[] {
22-
System.Tuple.Create(category, Path.Combine("tests", "suite")),
23-
System.Tuple.Create($"{category}.scripts", Path.Combine("eng", "scripts")),
24-
})
25-
.OrderBy(testcase => testcase.Name);
22+
return GetTestSuite().Concat(GetEngScripts()).OrderBy(testcase => testcase.Name);
23+
24+
IEnumerable<TestInfo> GetTestSuite() {
25+
var root = CaseExecuter.FindRoot();
26+
var folder = Path.Combine("tests", "suite");
27+
var fullPath = Path.GetFullPath(Path.Combine(root, folder));
28+
foreach (var filename in Directory.EnumerateFiles(fullPath, "test_*.py", SearchOption.AllDirectories))
29+
yield return new TestInfo(filename, category, folder, manifest);
30+
}
2631

27-
IEnumerable<TestInfo> GetFilenames(IEnumerable<System.Tuple<string, string>> folders) {
28-
foreach (var tuple in folders) {
29-
var fullPath = Path.Combine(CaseExecuter.FindRoot(), tuple.Item2);
30-
foreach (var filename in Directory.EnumerateFiles(fullPath, "test_*.py", SearchOption.AllDirectories))
31-
yield return new TestInfo(Path.GetFullPath(filename), tuple.Item1, tuple.Item2, manifest);
32+
IEnumerable<TestInfo> GetEngScripts() {
33+
var root = CaseExecuter.FindRoot();
34+
var folder = Path.Combine("eng", "scripts");
35+
var filename = Path.GetFullPath(Path.Combine(root, folder, "test_cgcheck.py"));
36+
if (File.Exists(filename)) {
37+
yield return new TestInfo(filename, $"{category}.scripts", folder, manifest);
3238
}
3339
}
3440
}

tests/IronPython.Tests/Cases/IronPythonCasesManifest.ini

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@ MaxRecursion=100
3636
RunCondition=NOT $(IS_OSX) # TODO: figure out
3737
IsolationLevel=PROCESS # required to have quit/exit
3838

39-
[IronPython.test_fuzz_parser]
40-
Ignore=true
41-
Reason=Takes way too long (ran overnight without completing!)
42-
4339
[IronPython.test_help]
4440
IsolationLevel=PROCESS # required for help to use pydoc
4541

@@ -187,12 +183,3 @@ RunCondition=$(IS_POSIX) # Module resource is Posix-specific
187183
[IronPython.modules.system_related.test_sys_getframe]
188184
IsolationLevel=PROCESS # https://github.com/IronLanguages/ironpython3/issues/489
189185
FullFrames=true
190-
191-
[IronPython.scripts.test_builder]
192-
Ignore=true
193-
194-
[IronPython.scripts.test_parrot]
195-
Ignore=true
196-
197-
[IronPython.scripts.test_pystone]
198-
Ignore=true

0 commit comments

Comments
 (0)