mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
servo: Merge #9459 - Add mach test-webidl command (from shinglyu:testwebidl); r=Wafflespeanut
I updated the `WebIDL.py` from latest mozilla-central. And add a `./mach test-webidl` command. For #9397 Source-Repo: https://github.com/servo/servo Source-Revision: 0ada7f9c8eda9879b5536cea3266c94214f9ce9b
This commit is contained in:
parent
61be94ab45
commit
e405dcb806
@ -501,6 +501,10 @@ class IDLExposureMixins():
|
||||
def isExposedInWindow(self):
|
||||
return 'Window' in self.exposureSet
|
||||
|
||||
def isExposedOnMainThread(self):
|
||||
return (self.isExposedInWindow() or
|
||||
self.isExposedInSystemGlobals())
|
||||
|
||||
def isExposedInAnyWorker(self):
|
||||
return len(self.getWorkerExposureSet()) > 0
|
||||
|
||||
@ -564,6 +568,9 @@ class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins):
|
||||
def isJSImplemented(self):
|
||||
return False
|
||||
|
||||
def isProbablyShortLivingObject(self):
|
||||
return False
|
||||
|
||||
def getNavigatorProperty(self):
|
||||
return None
|
||||
|
||||
@ -1409,6 +1416,7 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins):
|
||||
identifier == "Unforgeable" or
|
||||
identifier == "UnsafeInPrerendering" or
|
||||
identifier == "LegacyEventInit" or
|
||||
identifier == "ProbablyShortLivingObject" or
|
||||
identifier == "Abstract"):
|
||||
# Known extended attributes that do not take values
|
||||
if not attr.noArguments():
|
||||
@ -1523,6 +1531,14 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins):
|
||||
def isJSImplemented(self):
|
||||
return bool(self.getJSImplementation())
|
||||
|
||||
def isProbablyShortLivingObject(self):
|
||||
current = self
|
||||
while current:
|
||||
if current.getExtendedAttribute("ProbablyShortLivingObject"):
|
||||
return True
|
||||
current = current.parent
|
||||
return False
|
||||
|
||||
def getNavigatorProperty(self):
|
||||
naviProp = self.getExtendedAttribute("NavigatorProperty")
|
||||
if not naviProp:
|
||||
|
@ -1,11 +1,11 @@
|
||||
--- WebIDL.py
|
||||
+++ WebIDL.py
|
||||
@@ -1357,7 +1357,8 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins):
|
||||
identifier == "ChromeOnly" or
|
||||
@@ -1416,7 +1416,8 @@
|
||||
identifier == "Unforgeable" or
|
||||
identifier == "UnsafeInPrerendering" or
|
||||
- identifier == "LegacyEventInit"):
|
||||
+ identifier == "LegacyEventInit" or
|
||||
identifier == "LegacyEventInit" or
|
||||
- identifier == "ProbablyShortLivingObject"):
|
||||
+ identifier == "ProbablyShortLivingObject" or
|
||||
+ identifier == "Abstract"):
|
||||
# Known extended attributes that do not take values
|
||||
if not attr.noArguments():
|
||||
|
@ -20,20 +20,20 @@ class TestHarness(object):
|
||||
|
||||
def finish(self):
|
||||
if self.verbose or self.printed_intro:
|
||||
print "Finished test %s" % self.test
|
||||
print("Finished test %s" % self.test)
|
||||
|
||||
def maybe_print_intro(self):
|
||||
if not self.printed_intro:
|
||||
print "Starting test %s" % self.test
|
||||
print("Starting test %s" % self.test)
|
||||
self.printed_intro = True
|
||||
|
||||
def test_pass(self, msg):
|
||||
if self.verbose:
|
||||
print "TEST-PASS | %s" % msg
|
||||
print("TEST-PASS | %s" % msg)
|
||||
|
||||
def test_fail(self, msg):
|
||||
self.maybe_print_intro()
|
||||
print "TEST-UNEXPECTED-FAIL | %s" % msg
|
||||
print("TEST-UNEXPECTED-FAIL | %s" % msg)
|
||||
|
||||
def ok(self, condition, msg):
|
||||
if condition:
|
||||
@ -46,7 +46,7 @@ class TestHarness(object):
|
||||
self.test_pass(msg)
|
||||
else:
|
||||
self.test_fail(msg)
|
||||
print "\tGot %s expected %s" % (a, b)
|
||||
print("\tGot %s expected %s" % (a, b))
|
||||
|
||||
def run_tests(tests, verbose):
|
||||
testdir = os.path.join(os.path.dirname(__file__), 'tests')
|
||||
@ -63,7 +63,7 @@ def run_tests(tests, verbose):
|
||||
try:
|
||||
_test.WebIDLTest.__call__(WebIDL.Parser(), harness)
|
||||
except Exception, ex:
|
||||
print "TEST-UNEXPECTED-FAIL | Unhandled exception in test %s: %s" % (testpath, ex)
|
||||
print("TEST-UNEXPECTED-FAIL | Unhandled exception in test %s: %s" % (testpath, ex))
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
harness.finish()
|
||||
|
@ -1,2 +1,4 @@
|
||||
wget https://mxr.mozilla.org/mozilla-central/source/dom/bindings/parser/WebIDL.py?raw=1 -O WebIDL.py
|
||||
patch < abstract.patch
|
||||
|
||||
# TODO: update test files from https://dxr.mozilla.org/mozilla-central/source/dom/bindings/parser/tests
|
||||
|
@ -10,3 +10,6 @@ toml == 0.9.1
|
||||
flake8 == 2.4.1
|
||||
pep8 == 1.5.7
|
||||
pyflakes == 0.8.0
|
||||
|
||||
# For test-webidl
|
||||
ply == 3.8
|
||||
|
@ -232,6 +232,28 @@ class MachCommands(CommandBase):
|
||||
def test_tidy(self, faster):
|
||||
return tidy.scan(faster)
|
||||
|
||||
@Command('test-webidl',
|
||||
description='Run the WebIDL parser tests',
|
||||
category='testing')
|
||||
@CommandArgument('--quiet', '-q', default=False, action="store_true",
|
||||
help="Don't print passing tests.")
|
||||
@CommandArgument('tests', default=None, nargs="...",
|
||||
help="Specific tests to run, relative to the tests directory")
|
||||
def test_webidl(self, quiet, tests):
|
||||
self.ensure_bootstrapped()
|
||||
|
||||
test_file_dir = path.abspath(path.join(PROJECT_TOPLEVEL_PATH, "components", "script",
|
||||
"dom", "bindings", "codegen", "parser"))
|
||||
# For the `import WebIDL` in runtests.py
|
||||
sys.path.insert(0, test_file_dir)
|
||||
|
||||
run_file = path.abspath(path.join(test_file_dir, "runtests.py"))
|
||||
run_globals = {"__file__": run_file}
|
||||
execfile(run_file, run_globals)
|
||||
|
||||
verbose = not quiet
|
||||
return run_globals["run_tests"](tests, verbose)
|
||||
|
||||
@Command('test-wpt-failure',
|
||||
description='Run the web platform tests',
|
||||
category='testing')
|
||||
|
Loading…
Reference in New Issue
Block a user