From 05ce6d3b92e88341bd9743b021b33ce606c5d1bc Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sat, 9 Feb 2019 17:24:10 -0300 Subject: [PATCH] validate:launcher: Cache the result of meson introspect Running it takes quite some time and we can easily cache it. --- validate/launcher/apps/gstcheck.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/validate/launcher/apps/gstcheck.py b/validate/launcher/apps/gstcheck.py index e5a449869f..2a87277104 100644 --- a/validate/launcher/apps/gstcheck.py +++ b/validate/launcher/apps/gstcheck.py @@ -106,10 +106,21 @@ class MesonTestsManager(TestsManager): mesontests = [] for i, bdir in enumerate(self.options.meson_build_dirs): bdir = os.path.abspath(bdir) - output = subprocess.check_output( - [meson, 'introspect', '--tests', bdir]) + ninja_build = os.path.join(bdir, "build.ninja") + dumpfile = os.path.join(self.options.privatedir, + ninja_build.replace(os.path.sep, '_') + '_' + str(os.stat(ninja_build).st_mtime) + '.json') + try: + with open(dumpfile, 'r') as f: + tests_json = json.load(f) + except FileNotFoundError: + output = subprocess.check_output( + [meson, 'introspect', '--tests', bdir]) + json_str = output.decode() + with open(dumpfile, 'w') as f: + f.write(json_str) + tests_json = json.loads(json_str) - for test_dict in json.loads(output.decode()): + for test_dict in tests_json: mesontests.append(test_dict) return mesontests