Update web-platform-tests to revision 58eb04cecbbec2e18531ab440225e38944a9c444

This commit is contained in:
Josh Matthews 2017-04-17 12:06:02 +10:00 committed by Anthony Ramine
parent 25e8bf69e6
commit 665817d2a6
35333 changed files with 1818077 additions and 16036 deletions

View file

@ -0,0 +1,121 @@
#!/usr/bin/python
# CSS Test Suite Manipulation Library
# Initial code by fantasai, joint copyright 2010 W3C and Microsoft
# Licensed under BSD 3-Clause: <http://www.w3.org/Consortium/Legal/2008/03-bsd-license>
import OutputFormats
import Utils
from Groups import TestGroup, excludeDirs
from Sources import SourceTree, SourceCache
from shutil import copytree, rmtree
from os.path import join
import os
from mercurial import ui as UserInterface, hg
class TestSuite:
"""Representation of a standard CSS test suite."""
def __init__(self, name, title, specUri, draftUri, sourceCache = None, ui = None):
self.name = name
self.title = title
self.specroot = specUri
self.draftroot = draftUri
self.ui = ui if ui else UserInterface.ui()
self.defaultReftestRelpath='reftest.list'
self.groups = {}
self.sourcecache = sourceCache if sourceCache else SourceCache(SourceTree(hg.repository(self.ui, '.')))
self.formats = ('html4', 'xhtml1', 'xhtml1print') # XXX FIXME, hardcoded list is lame
self.rawgroups = {}
def addTestsByExt(self, dir, ext, groupName='', groupTitle=''):
"""Add tests from directory `dir` by file extension (via `ext`, e.g. ext='.xht').
"""
group = TestGroup(self.sourcecache, dir, selfTestExt=ext,
name=groupName, title=groupTitle, ui = self.ui)
self.addGroup(group)
def addTestsByList(self, dir, filenames, groupName='', groupTitle=''):
"""Add tests from directory `dir`, via file name list `filenames`.
"""
group = TestGroup(self.sourcecache, dir, selfTestList=filenames,
name=groupName, title=groupTitle, ui = self.ui)
self.addGroup(group)
def addReftests(self, dir, manifestPath, groupName='', groupTitle=''):
"""Add tests by importing context of directory `dir` and importing all
tests listed in the `reftestManifestName` manifest inside `dir`.
"""
group = TestGroup(self.sourcecache,
dir, manifestPath=manifestPath,
manifestDest=self.defaultReftestRelpath,
name=groupName, title=groupTitle, ui = self.ui)
self.addGroup(group)
def addGroup(self, group):
""" Add CSSTestGroup `group` to store. """
master = self.groups.get(group.name)
if master:
master.merge(group)
else:
self.groups[group.name] = group
def addRaw(self, dir, relpath):
"""Add the contents of directory `dir` to the test suite by copying
(not processing). Note this means such tests will not be indexed.
`relpath` gives the directory's path within the build destination.
"""
self.rawgroups[dir] = relpath
def setFormats(self, formats):
self.formats = formats
def buildInto(self, dest, indexer):
"""Builds test suite through all OutputFormats into directory at path `dest`
or through OutputFormat destination `dest`, using Indexer `indexer`.
"""
if isinstance(dest, OutputFormats.BasicFormat):
formats = (dest,)
dest = dest.root
else:
formats = []
for format in self.formats:
if (format == 'html4'):
formats.append(OutputFormats.HTMLFormat(dest, self.sourcecache.sourceTree))
elif (format == 'html5'):
formats.append(OutputFormats.HTML5Format(dest, self.sourcecache.sourceTree))
elif (format == 'xhtml1'):
formats.append(OutputFormats.XHTMLFormat(dest, self.sourcecache.sourceTree))
elif (format == 'xhtml1print'):
formats.append(OutputFormats.XHTMLPrintFormat(dest, self.sourcecache.sourceTree, self.title))
elif (format == 'svg'):
formats.append(OutputFormats.SVGFormat(dest, self.sourcecache.sourceTree))
for format in formats:
for group in self.groups.itervalues():
group.build(format)
for group in self.groups.itervalues():
indexer.indexGroup(group)
for format in formats:
indexer.writeIndex(format)
rawtests = []
for src, relpath in self.rawgroups.items():
copytree(src, join(dest,relpath))
for (root, dirs, files) in os.walk(join(dest,relpath)):
for xdir in excludeDirs:
if xdir in dirs:
dirs.remove(xdir)
rmtree(join(root,xdir))
rawtests.extend(
[join(Utils.relpath(root,dest),file)
for file in files]
)
rawtests.sort()
indexer.writeOverview(dest, addTests=rawtests)