[pypy-commit] lang-js default: allow to skip individual ecma test cases

stepahn noreply at buildbot.pypy.org
Fri Dec 28 11:34:37 CET 2012


Author: Stephan <stephan at stzal.com>
Branch: 
Changeset: r256:65f29f415fab
Date: 2012-06-05 18:33 +0200
http://bitbucket.org/pypy/lang-js/changeset/65f29f415fab/

Log:	allow to skip individual ecma test cases

diff --git a/js/test/ecma/conftest.py b/js/test/ecma/conftest.py
--- a/js/test/ecma/conftest.py
+++ b/js/test/ecma/conftest.py
@@ -9,14 +9,14 @@
 from pypy.rlib.parsing.parsing import ParseError
 
 
-exclusionlist = ['shell.js', 'browser.js']
-skip = [\
-    '15.4.5.1-1',
-    '10.2.2-2',
-    '15.1.2.1-2',
-    '15.5.4.11-2',
-    '15.5.4.11-5',
-    '7.2-1',
+EXCLUSIONLIST = ['shell.js', 'browser.js']
+SKIP = [\
+    '7.2-1.0',
+    '7.2-1.1',
+    '7.2-1.2',
+    '7.2-1.3',
+    '7.2-1.4',
+    '7.2-1.5',
     '7.4.3-14-n',
     '7.4.3-15-n',
     '7.4.3-4-n',
@@ -24,14 +24,122 @@
     '7.4.3-9-n',
     '7.7.3-2',
     '7.7.4',
-    '11.2.1-3-n',
+    '7.2-6.0',
+    '7.2-6.1',
+    '7.4.3-13-n.0',
+    '7.4.3-2-n.0',
+    '7.4.3-3-n.0',
+    '7.6.14',
+    '7.6.15',
+    '7.7.3-1.9',
+    '7.7.3-1.11',
+    '7.7.3-1.12',
+    '7.7.3-1.13',
+    '7.7.3-1.15',
+    '7.7.3-1.16',
+    '7.7.3-1.17',
+    '7.7.3-1.18',
+    '7.7.3-1.20',
+    '7.7.3-1.21',
+    '7.7.3-1.22',
+    '7.7.3-1.23',
+    '7.7.3-1.25',
+    '7.7.3.155',
+    '7.7.3.156',
+    '7.7.3.157',
+    '7.7.3.161',
+    '7.7.3.162',
+    '7.7.3.163',
+    '7.7.3.167',
+    '9.8.1.12',
+    '9.8.1.13',
+    '9.8.1.22',
+    '9.8.1.35',
+    '9.4-1.0',
+    '9.4-1.1',
+    '9.4-1.2',
+    '9.4-2.0',
+    '9.4-2.1',
+    '9.4-2.2',
+    '9.8.1.36',
+    '9.3.1-3.39',
+    '9.3.1-3.41',
+    '9.3.1-3.42',
+    '9.3.1-3.43',
+    '9.3.1-3.45',
+    '9.3.1-3.46',
+    '9.3.1-3.47',
+    '9.3.1-3.48',
+    '9.3.1-3.50',
+    '9.3.1-3.51',
+    '9.3.1-3.52',
+    '9.3.1-3.53',
+    '9.3.1-3.55',
+    '9.3.1-3.104',
+    '10.2.2-2.1',
+    '11.2.1-3-n.0',
+    '11.2.1-3-n.1',
     '12.10-1',
+    '12.6.3-2.0',
     '12.7-1-n',
     '12.8-1-n',
+    '12.9-1-n.0',
+    '15.1.2.1-2.0',
+    '15.4.4.5-3',
+    '15.4.5.1-1',
+    '15.5.4.11-2.0',
+    '15.5.4.11-2.1',
+    '15.5.4.11-2.2',
+    '15.5.4.11-2.3',
+    '15.5.4.11-2.4',
+    '15.5.4.11-2.5',
+    '15.5.4.11-2.6',
+    '15.5.4.11-2.7',
+    '15.5.4.11-2.8',
+    '15.5.4.11-2.9',
+    '15.5.4.11-2.10',
+    '15.5.4.11-2.11',
+    '15.5.4.11-2.12',
+    '15.5.4.11-2.13',
+    '15.5.4.11-2.14',
+    '15.5.4.11-2.15',
+    '15.5.4.11-2.16',
+    '15.5.4.11-2.17',
+    '15.5.4.11-2.18',
+    '15.5.4.11-2.19',
+    '15.5.4.11-2.20',
+    '15.5.4.11-2.21',
+    '15.5.4.11-2.22',
+    '15.5.4.11-2.23',
+    '15.5.4.11-2.24',
+    '15.5.4.11-2.25',
+    '15.5.4.11-2.26',
+    '15.5.4.11-2.27',
+    '15.5.4.11-2.28',
+    '15.5.4.11-2.29',
+    '15.5.4.11-2.30',
+    '15.5.4.11-2.31',
+    '15.5.4.11-2.32',
+    '15.5.4.11-2.33',
+    '15.5.4.11-2.34',
+    '15.5.4.11-2.35',
+    '15.5.4.11-2.36',
+    '15.5.4.11-2.37',
+    '15.5.4.11-5.3',
+    '15.5.4.11-5.16',
+    '15.5.1.22',
+    '15.5.1.23',
+    '15.5.1.32',
+    '15.5.1.45',
+    '15.5.1.46',
+    '15.5.4.12-1.184',
+    '15.5.4.12-4.80',
+    '15.5.4.12-4.93',
     ]
 
+
 def pytest_ignore_collect(path, config):
-    if path.basename in exclusionlist:
+    if path.basename in EXCLUSIONLIST:
         return True
 
 def pytest_collect_file(path, parent):
@@ -55,7 +163,7 @@
     def collect(self):
         if self.session.config.getvalue("ecma") is not True:
             pytest.skip("ECMA tests disabled, run with --ecma")
-        if self.name in skip:
+        if self.name in SKIP:
             pytest.skip()
 
         interp = Interpreter()
@@ -65,10 +173,11 @@
         def overriden_eval(ctx):
             from js.builtins_global import js_eval
             from js.execution import JsException
+            from js.completion import NormalCompletion
             try:
                 return js_eval(ctx)
             except JsException:
-                return _w("error")
+                return NormalCompletion(value = _w("error"))
 
         global_object = interp.global_object
         del(global_object._properties_['eval'])
@@ -97,25 +206,31 @@
         run_test_func = global_object.get('run_test')
         def get_result(test_num):
             w_test_number = _w(test_num)
-            result = run_test_func.Call(args = [w_test_number])
-            return result.to_string()
+            result_obj = run_test_func.Call(args = [w_test_number])
+            result_passed = result_obj.get('passed').ToBoolean()
+            result_reason = result_obj.get('reason').to_string();
+            return (result_passed, result_reason) # result.to_string()
 
         for number in xrange(testcount):
-            result = get_result(number)
-            yield JSTestItem(str(number), result, parent=self)
+            passed, reason = get_result(number)
+            yield JSTestItem(str(number), passed, reason, parent=self)
 
 class JSTestItem(pytest.Item):
-    def __init__(self, name, result, parent=None, config=None, session=None):
+    def __init__(self, name, passed, reason, parent=None, config=None, session=None):
         super(JSTestItem, self).__init__(name, parent, config, session)
         self.test_number = int(name)
         self.name = parent.name + '.' + name
-        self.result = result
+        self.passed = passed
+        self.reason = reason
 
     def runtest(self):
-        result = self.result
+        reason = self.reason
+        passed = self.passed
+        if self.name in SKIP:
+            py.test.skip()
         __tracebackhide__ = True
-        if result != "passed":
-            raise JsTestException(self, result)
+        if passed != True:
+            raise JsTestException(self, reason)
 
     def repr_failure(self, excinfo):
         if isinstance(excinfo.value, JsTestException):


More information about the pypy-commit mailing list