diff options
Diffstat (limited to 'tests/runner.py')
-rw-r--r-- | tests/runner.py | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/tests/runner.py b/tests/runner.py index 1093789c..a23297f6 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -1508,6 +1508,26 @@ if 'benchmark' not in str(sys.argv) and 'sanity' not in str(sys.argv): ''' self.do_run(src, 'sum:9780*') + # We should not blow up the stack with numerous varargs + + src = r''' + #include <stdio.h> + #include <stdlib.h> + + void func(int i) { + printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n", + i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i); + } + int main() { + for (int i = 0; i < 1024; i++) + func(i); + printf("ok!\n"); + return 0; + } + ''' + Settings.TOTAL_STACK = 1024 + self.do_run(src, 'ok!') + def test_array2(self): src = ''' #include <stdio.h> @@ -5517,16 +5537,25 @@ f.close() output = Popen([NODE_JS, COFFEESCRIPT, VARIABLE_ELIMINATOR], stdin=PIPE, stdout=PIPE).communicate(input)[0] self.assertIdentical(expected, output) + def test_fix_closure(self): + input = path_from_root('tests', 'test-fix-closure.js') + expected = path_from_root('tests', 'test-fix-closure.out.js') + Popen(['python', path_from_root('tools', 'fix_closure.py'), input, 'out.js']).communicate(input) + output = open('out.js').read() + assert '0,zzz_Q_39fa,0' in output + assert 'function(a,c)' not in output # should be uninlined, so it gets a name + assert run_js(input) == run_js('out.js') + def test_js_optimizer(self): for input, expected, passes in [ - (open(path_from_root('tools', 'test-js-optimizer.js')).read(), open(path_from_root('tools', 'test-js-optimizer-output.js')).read(), + (path_from_root('tools', 'test-js-optimizer.js'), open(path_from_root('tools', 'test-js-optimizer-output.js')).read(), ['hoistMultiples', 'loopOptimizer', 'unGlobalize', 'removeAssignsToUndefined', 'simplifyExpressionsPre', 'simplifyExpressionsPost']), - (open(path_from_root('tools', 'test-js-optimizer-t2c.js')).read(), open(path_from_root('tools', 'test-js-optimizer-t2c-output.js')).read(), + (path_from_root('tools', 'test-js-optimizer-t2c.js'), open(path_from_root('tools', 'test-js-optimizer-t2c-output.js')).read(), ['simplifyExpressionsPre', 'optimizeShiftsConservative']), - (open(path_from_root('tools', 'test-js-optimizer-t2.js')).read(), open(path_from_root('tools', 'test-js-optimizer-t2-output.js')).read(), + (path_from_root('tools', 'test-js-optimizer-t2.js'), open(path_from_root('tools', 'test-js-optimizer-t2-output.js')).read(), ['simplifyExpressionsPre', 'optimizeShiftsAggressive']), ]: - output = Popen([NODE_JS, JS_OPTIMIZER] + passes, stdin=PIPE, stdout=PIPE).communicate(input)[0] + output = Popen([NODE_JS, JS_OPTIMIZER, input] + passes, stdin=PIPE, stdout=PIPE).communicate()[0] self.assertIdentical(expected, output.replace('\n\n', '\n')) elif 'benchmark' in str(sys.argv): |