Bug 1341502: Fix automatic regeneration of backend when an included test manifest changes. r?ahal
MozReview-Commit-ID: 1ZQNQpqboz9
--- a/python/mozbuild/mozbuild/backend/test_manifest.py
+++ b/python/mozbuild/mozbuild/backend/test_manifest.py
@@ -27,16 +27,19 @@ class TestManifestBackend(PartialBackend
self.environment.topobjdir, 'config.status'))
def consume_object(self, obj):
if not isinstance(obj, TestManifest):
return
self.backend_input_files.add(obj.path)
self.backend_input_files |= obj.context_all_paths
+ for source in obj.source_relpaths:
+ self.backend_input_files.add(mozpath.join(obj.topsrcdir,
+ source))
try:
from reftest import ReftestManifest
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
except ImportError:
new file mode 100644
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/backend/data/test-manifests-backend-sources/mochitest-common.ini
@@ -0,0 +1,1 @@
+[test_bar.js]
new file mode 100644
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/backend/data/test-manifests-backend-sources/mochitest.ini
@@ -0,0 +1,2 @@
+[test_foo.js]
+[include:mochitest-common.ini]
new file mode 100644
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/backend/data/test-manifests-backend-sources/moz.build
@@ -0,0 +1,6 @@
+# Any copyright is dedicated to the Public Domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+MOCHITEST_MANIFESTS += [
+ 'mochitest.ini',
+]
--- a/python/mozbuild/mozbuild/test/backend/test_test_manifest.py
+++ b/python/mozbuild/mozbuild/test/backend/test_test_manifest.py
@@ -63,11 +63,30 @@ class TestTestManifestBackend(BackendTes
set(['dir1/xpcshell.ini',
'xpcshell.ini',
'mochitest.ini']))
manifest_path = mozpath.join(env.topsrcdir, 'xpcshell.ini')
self.assertIn('here', o[manifest_path])
self.assertIn('support-files', o[manifest_path])
+ def test_test_manifest_sources(self):
+ """Ensure that backend sources are generated correctly."""
+ env = self._consume('test-manifests-backend-sources', TestManifestBackend)
+
+ backend_path = mozpath.join(env.topobjdir, 'backend.TestManifestBackend.in')
+ self.assertTrue(os.path.exists(backend_path))
+
+ status_path = mozpath.join(env.topobjdir, 'config.status')
+
+ with open(backend_path, 'r') as fh:
+ sources = set(mozpath.relpath(source.strip(), env.topsrcdir)
+ for source in fh)
+
+ self.assertEquals(sources,
+ set(['mochitest.ini',
+ 'mochitest-common.ini',
+ 'moz.build',
+ mozpath.relpath(status_path, env.topsrcdir)]))
+
if __name__ == '__main__':
main()