Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mach test-webidl command #9459

Merged
merged 2 commits into from Jan 30, 2016
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

Add mach test-webidl command

  • Loading branch information
shinglyu committed Jan 29, 2016
commit 18b6817755b3509990e0a9fbe1acb5318d81c957
@@ -501,6 +501,10 @@ def finish(self, scope):
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 @@ def getJSImplementation(self):
def isJSImplemented(self):
return False

def isProbablyShortLivingObject(self):
return False

def getNavigatorProperty(self):
return None

@@ -1409,6 +1416,7 @@ def addExtendedAttributes(self, attrs):
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 @@ def getJSImplementation(self):
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 @@ def start(self):

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 @@ def check(self, a, b, msg):
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,26 @@ def test_content(self):
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"))
sys.path.insert(0, test_file_dir) # For the `import WebIDL` in runtests.py

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')
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.