зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1027215 - Add reftest manifests to build config; r=mshal
reftest and crashtest manifests can now be added to the build configuration via REFTEST_MANIFESTS and CRASHTEST_MANIFESTS, respectively. The master manifest files have been added to layout/moz.build. This patch enables the deprecation of master reftest manifests but stops short of doing it. In the future, we could declare reftest and crashtest manifests in their nearest moz.build file and generate the master manifest (consisting of a bunch of "include" directives) as part of config.status. --HG-- extra : rebase_source : 3503f787b14b24c38daf577a710e67b583476858 extra : histedit_source : 21e55b3d28ee83afb47f3f779251a13c2a90db5f
This commit is contained in:
Родитель
1fd0e9d9bd
Коммит
347044e672
|
@ -34,3 +34,6 @@ MOCHITEST_MANIFESTS += [
|
|||
'reftests/fonts/mochitest.ini',
|
||||
'reftests/fonts/mplus/mochitest.ini',
|
||||
]
|
||||
|
||||
REFTEST_MANIFESTS += ['reftests/reftest.list']
|
||||
CRASHTEST_MANIFESTS += ['../testing/crashtest/crashtests.list']
|
||||
|
|
|
@ -13,6 +13,7 @@ import types
|
|||
from collections import namedtuple
|
||||
|
||||
import mozwebidlcodegen
|
||||
from reftest import ReftestManifest
|
||||
|
||||
import mozbuild.makeutil as mozmakeutil
|
||||
from mozpack.copier import FilePurger
|
||||
|
@ -1075,6 +1076,11 @@ class RecursiveMakeBackend(CommonBackend):
|
|||
(obj.install_prefix, set()))
|
||||
m[1].add(obj.manifest_obj_relpath)
|
||||
|
||||
if isinstance(obj.manifest, ReftestManifest):
|
||||
# Mark included files as part of the build backend so changes
|
||||
# result in re-config.
|
||||
self.backend_input_files |= obj.manifest.manifests
|
||||
|
||||
def _process_local_include(self, local_include, backend_file):
|
||||
if local_include.startswith('/'):
|
||||
path = '$(topsrcdir)'
|
||||
|
|
|
@ -15,7 +15,7 @@ from mach.mixin.logging import LoggingMixin
|
|||
|
||||
import mozpack.path as mozpath
|
||||
import manifestparser
|
||||
|
||||
import reftest
|
||||
import mozinfo
|
||||
|
||||
from .data import (
|
||||
|
@ -419,6 +419,11 @@ class TreeMetadataEmitter(LoggingMixin):
|
|||
for obj in self._process_test_manifest(sandbox, info, path):
|
||||
yield obj
|
||||
|
||||
for flavor in ('crashtest', 'reftest'):
|
||||
for path in sandbox.get('%s_MANIFESTS' % flavor.upper(), []):
|
||||
for obj in self._process_reftest_manifest(sandbox, flavor, path):
|
||||
yield obj
|
||||
|
||||
jar_manifests = sandbox.get('JAR_MANIFESTS', [])
|
||||
if len(jar_manifests) > 1:
|
||||
raise SandboxValidationError('While JAR_MANIFESTS is a list, '
|
||||
|
@ -601,6 +606,38 @@ class TreeMetadataEmitter(LoggingMixin):
|
|||
'manifest file %s: %s' % (path,
|
||||
'\n'.join(traceback.format_exception(*sys.exc_info()))))
|
||||
|
||||
def _process_reftest_manifest(self, sandbox, flavor, manifest_path):
|
||||
manifest_path = mozpath.normpath(manifest_path)
|
||||
manifest_full_path = mozpath.normpath(mozpath.join(
|
||||
sandbox['SRCDIR'], manifest_path))
|
||||
manifest_reldir = mozpath.dirname(mozpath.relpath(manifest_full_path,
|
||||
sandbox['TOPSRCDIR']))
|
||||
|
||||
manifest = reftest.ReftestManifest()
|
||||
manifest.load(manifest_full_path)
|
||||
|
||||
# reftest manifests don't come from manifest parser. But they are
|
||||
# similar enough that we can use the same emitted objects. Note
|
||||
# that we don't perform any installs for reftests.
|
||||
obj = TestManifest(sandbox, manifest_full_path, manifest,
|
||||
flavor=flavor, install_prefix='%s/' % flavor,
|
||||
relpath=mozpath.join(manifest_reldir,
|
||||
mozpath.basename(manifest_path)))
|
||||
|
||||
for test in sorted(manifest.files):
|
||||
obj.tests.append({
|
||||
'path': test,
|
||||
'here': mozpath.dirname(test),
|
||||
'manifest': manifest_full_path,
|
||||
'name': mozpath.basename(test),
|
||||
'head': '',
|
||||
'tail': '',
|
||||
'support-files': '',
|
||||
'subsuite': '',
|
||||
})
|
||||
|
||||
yield obj
|
||||
|
||||
def _emit_directory_traversal_from_sandbox(self, sandbox):
|
||||
o = DirectoryTraversal(sandbox)
|
||||
o.dirs = sandbox.get('DIRS', [])
|
||||
|
|
|
@ -599,6 +599,12 @@ VARIABLES = {
|
|||
"""List of manifest files defining browser chrome tests.
|
||||
""", None),
|
||||
|
||||
'CRASHTEST_MANIFESTS': (StrictOrderingOnAppendList, list,
|
||||
"""List of manifest files defining crashtests.
|
||||
|
||||
These are commonly named crashtests.list.
|
||||
""", None),
|
||||
|
||||
'METRO_CHROME_MANIFESTS': (StrictOrderingOnAppendList, list,
|
||||
"""List of manifest files defining metro browser chrome tests.
|
||||
""", None),
|
||||
|
@ -615,6 +621,12 @@ VARIABLES = {
|
|||
"""List of manifest files defining webapprt mochitest chrome tests.
|
||||
""", None),
|
||||
|
||||
'REFTEST_MANIFESTS': (StrictOrderingOnAppendList, list,
|
||||
"""List of manifest files defining reftests.
|
||||
|
||||
These are commonly named reftest.list.
|
||||
""", None),
|
||||
|
||||
'WEBRTC_SIGNALLING_TEST_MANIFESTS': (StrictOrderingOnAppendList, list,
|
||||
"""List of manifest files defining WebRTC signalling tests.
|
||||
""", None),
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
== crashtest1.html crashtest1-ref.html
|
|
@ -7,3 +7,5 @@ METRO_CHROME_MANIFESTS += ['metro.ini']
|
|||
MOCHITEST_MANIFESTS += ['mochitest.ini']
|
||||
MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
|
||||
XPCSHELL_TESTS_MANIFESTS += ['xpcshell.ini']
|
||||
REFTEST_MANIFESTS += ['reftest.list']
|
||||
CRASHTEST_MANIFESTS += ['crashtest.list']
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
== reftest1.html reftest1-ref.html
|
|
@ -379,7 +379,7 @@ class TestEmitterBasic(unittest.TestCase):
|
|||
objs = [o for o in self.read_topsrcdir(reader)
|
||||
if isinstance(o, TestManifest)]
|
||||
|
||||
self.assertEqual(len(objs), 6)
|
||||
self.assertEqual(len(objs), 8)
|
||||
|
||||
metadata = {
|
||||
'a11y.ini': {
|
||||
|
@ -436,6 +436,14 @@ class TestEmitterBasic(unittest.TestCase):
|
|||
'tail2': False,
|
||||
},
|
||||
},
|
||||
'reftest.list': {
|
||||
'flavor': 'reftest',
|
||||
'installs': {},
|
||||
},
|
||||
'crashtest.list': {
|
||||
'flavor': 'crashtest',
|
||||
'installs': {},
|
||||
},
|
||||
}
|
||||
|
||||
for o in objs:
|
||||
|
|
Загрузка…
Ссылка в новой задаче