mirror of
https://github.com/servo/servo.git
synced 2025-07-27 09:10:28 +01:00
Cargoify servo
This commit is contained in:
parent
db2f642c32
commit
c6ab60dbfc
1761 changed files with 8423 additions and 2294 deletions
122
python/servo/testing_commands.py
Normal file
122
python/servo/testing_commands.py
Normal file
|
@ -0,0 +1,122 @@
|
|||
from __future__ import print_function, unicode_literals
|
||||
|
||||
import json
|
||||
import os
|
||||
import os.path as path
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tarfile
|
||||
from time import time
|
||||
import urllib
|
||||
|
||||
from mach.registrar import Registrar
|
||||
from mach.decorators import (
|
||||
CommandArgument,
|
||||
CommandProvider,
|
||||
Command,
|
||||
)
|
||||
|
||||
from servo.command_base import CommandBase
|
||||
import tidy
|
||||
|
||||
@CommandProvider
|
||||
class MachCommands(CommandBase):
|
||||
def __init__(self, context):
|
||||
CommandBase.__init__(self, context)
|
||||
if not hasattr(self.context, "built_tests"):
|
||||
self.context.built_tests = False
|
||||
|
||||
def ensure_built_tests(self):
|
||||
if self.context.built_tests: return
|
||||
Registrar.dispatch('build-tests', context=self.context)
|
||||
self.context.built_tests = True
|
||||
|
||||
def find_test(self, prefix):
|
||||
candidates = [f for f in os.listdir(path.join(self.context.topdir, "target"))
|
||||
if f.startswith(prefix + "-")]
|
||||
if candidates:
|
||||
return path.join(self.context.topdir, "target", candidates[0])
|
||||
return None
|
||||
|
||||
def run_test(self, prefix, args=[]):
|
||||
t = self.find_test(prefix)
|
||||
if t:
|
||||
return subprocess.call([t] + args, env=self.build_env())
|
||||
|
||||
@Command('test',
|
||||
description='Run all Servo tests',
|
||||
category='testing')
|
||||
def test(self):
|
||||
test_start = time()
|
||||
for t in ["tidy", "unit", "ref", "content", "wpt"]:
|
||||
Registrar.dispatch("test-%s" % t, context=self.context)
|
||||
elapsed = time() - test_start
|
||||
|
||||
print("Tests completed in %0.2fs" % elapsed)
|
||||
|
||||
@Command('test-unit',
|
||||
description='Run libservo unit tests',
|
||||
category='testing')
|
||||
def test_unit(self):
|
||||
self.ensure_bootstrapped()
|
||||
self.ensure_built_tests()
|
||||
return self.run_test("servo")
|
||||
|
||||
@Command('test-ref',
|
||||
description='Run the reference tests',
|
||||
category='testing')
|
||||
@CommandArgument('--kind', '-k', default=None)
|
||||
def test_ref(self, kind=None):
|
||||
self.ensure_bootstrapped()
|
||||
self.ensure_built_tests()
|
||||
|
||||
kinds = ["cpu", "gpu"] if kind is None else [kind]
|
||||
test_path = path.join(self.context.topdir, "tests", "ref")
|
||||
error = False
|
||||
|
||||
test_start = time()
|
||||
for k in kinds:
|
||||
print("Running %s reftests..." % k)
|
||||
ret = self.run_test("reftest", [k, test_path])
|
||||
error = error or ret != 0
|
||||
elapsed = time() - test_start
|
||||
|
||||
print("Reference tests completed in %0.2fs" % elapsed)
|
||||
|
||||
if error: return 1
|
||||
|
||||
@Command('test-content',
|
||||
description='Run the content tests',
|
||||
category='testing')
|
||||
def test_content(self):
|
||||
self.ensure_bootstrapped()
|
||||
self.ensure_built_tests()
|
||||
|
||||
test_path = path.join(self.context.topdir, "tests", "content")
|
||||
test_start = time()
|
||||
ret = self.run_test("contenttest", ["--source-dir=%s" % test_path])
|
||||
elapsed = time() - test_start
|
||||
|
||||
print("Content tests completed in %0.2fs" % elapsed)
|
||||
return ret
|
||||
|
||||
@Command('test-tidy',
|
||||
description='Run the source code tidiness check',
|
||||
category='testing')
|
||||
def test_tidy(self):
|
||||
errors = 0
|
||||
for p in ["src", "components"]:
|
||||
ret = tidy.scan(path.join(self.context.topdir, p))
|
||||
if ret != 0: errors = 1
|
||||
return errors
|
||||
|
||||
@Command('test-wpt',
|
||||
description='Run the web platform tests',
|
||||
category='testing',
|
||||
allow_all_args=True)
|
||||
@CommandArgument('params', default=None, nargs='...',
|
||||
help="Command-line arguments to be passed through to wpt/run.sh")
|
||||
def test_wpt(self, params):
|
||||
return subprocess.call(["bash", path.join("tests", "wpt", "run.sh")] + params,
|
||||
env=self.build_env())
|
Loading…
Add table
Add a link
Reference in a new issue