mtest: try a bit harder to avoid weird non-parseable output at startup

In commit 628effb369 we started verifying
the build.ninja file was up to date before even `--list`ing tests,
because we could end up with incorrect information. This meant that
ninja always runs at startup, and typically returns "no work to do",
which ended up listed as "one of" the tests.

Instead of unconditionally running ninja attached to the console, first
check it in dry-run mode with stdout intercepted, to see if ninja
considers itself up to date. If it is, continue. Only if an actual
refresh is needed, do we run it while attached to the console.

In the garden path, this avoids useless information. In cases where we'd
already print a full meson reconfigure log, we continue to do so.
pull/11960/head
Eli Schwartz 1 year ago
parent 9fd3753f8a
commit 9d446d80db
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 8
      mesonbuild/mtest.py

@ -1606,9 +1606,11 @@ class TestHarness:
# happen before rebuild_deps(), because we need the correct list of
# tests and their dependencies to compute
if not self.options.no_rebuild:
ret = subprocess.run(self.ninja + ['build.ninja']).returncode
if ret != 0:
raise TestException(f'Could not configure {self.options.wd!r}')
teststdo = subprocess.run(self.ninja + ['-n', 'build.ninja'], capture_output=True).stdout
if b'ninja: no work to do.' not in teststdo and b'samu: nothing to do' not in teststdo:
ret = subprocess.run(self.ninja + ['build.ninja'])
if ret.returncode != 0:
raise TestException(f'Could not configure {self.options.wd!r}')
self.build_data = build.load(os.getcwd())
if not self.options.setup:

Loading…
Cancel
Save