Bug 1293259 - Write list of master test manifests to a json file in the objdir draft
authorAndrew Halberstadt <ahalberstadt@mozilla.com>
Tue, 15 Nov 2016 09:45:11 -0500
changeset 439176 dbbdc837d5bb97d73f346df3010929f22e95d52f
parent 439175 e72bf547fe85f9df684ec4edab1f2001ab2989d9
child 439177 a403164e600ba64f5918b2ffc4d1729b21e9c517
push id35923
push userahalberstadt@mozilla.com
push dateTue, 15 Nov 2016 15:06:20 +0000
bugs1293259
milestone53.0a1
Bug 1293259 - Write list of master test manifests to a json file in the objdir MozReview-Commit-ID: DKyhwQjamUA
python/mozbuild/mozbuild/backend/recursivemake.py
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -834,32 +834,37 @@ class RecursiveMakeBackend(CommonBackend
 
                     # Detect any Makefile.ins that contain variables on the
                     # moz.build-only list
                     self._check_blacklisted_variables(makefile_in, content)
 
         self._fill_root_mk()
 
         # Make the master test manifest files.
+        root_manifests = {}
+        topobjdir = self.environment.topobjdir
         for flavor, t in self._test_manifests.items():
             install_prefix, manifests = t
-            manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
-            self._write_master_test_manifest(mozpath.join(
-                self.environment.topobjdir, '_tests', manifest_stem),
-                manifests)
+            manifest_stem = mozpath.normpath(mozpath.join(install_prefix, '%s.ini' % flavor))
+            master_path = mozpath.join(topobjdir, '_tests', manifest_stem)
+            root_manifests[flavor] = master_path
+            self._write_master_test_manifest(master_path, manifests)
 
             # Catch duplicate inserts.
             try:
                 self._install_manifests['_tests'].add_optional_exists(manifest_stem)
             except ValueError:
                 pass
 
+        with self._write_file(mozpath.join(topobjdir, 'root-manifests.json')) as fh:
+            fh.write(json.dumps(root_manifests))
+
         self._write_manifests('install', self._install_manifests)
 
-        ensureParentDir(mozpath.join(self.environment.topobjdir, 'dist', 'foo'))
+        ensureParentDir(mozpath.join(topobjdir, 'dist', 'foo'))
 
     def _pretty_path_parts(self, path, backend_file):
         assert isinstance(path, Path)
         if isinstance(path, SourcePath):
             if path.full_path.startswith(backend_file.srcdir):
                 return '$(srcdir)', path.full_path[len(backend_file.srcdir):]
             if path.full_path.startswith(backend_file.topsrcdir):
                 return '$(topsrcdir)', path.full_path[len(backend_file.topsrcdir):]