mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
test: Be smarter about detecting the mkosi configuration directory
Instead of always looking up two directories from the test/integration-tests/meson.build file, let's search in up to 4 parent directories from the given meson project source root. This allows us to just pass in meson.project_source_root() to integration-test-wrapper.py instead of having to pass in a fixed relative offset from the current meson file. It'll also allow us to install the integration tests and mkosi configuration in the future without breaking the standalone integrationt tests functionality;
This commit is contained in:
@@ -53,7 +53,7 @@ class Summary:
|
||||
subprocess.run(
|
||||
[
|
||||
args.mkosi,
|
||||
'--directory', os.fspath(args.meson_source_dir),
|
||||
'--directory', os.fspath(args.mkosi_dir),
|
||||
'--json',
|
||||
'summary',
|
||||
],
|
||||
@@ -329,7 +329,7 @@ def process_coverage(args: argparse.Namespace, summary: Summary, name: str, jour
|
||||
'--quiet',
|
||||
],
|
||||
check=True,
|
||||
cwd=os.fspath(args.meson_source_dir),
|
||||
cwd=os.fspath(args.mkosi_dir),
|
||||
) # fmt: skip
|
||||
|
||||
subprocess.run(
|
||||
@@ -342,7 +342,7 @@ def process_coverage(args: argparse.Namespace, summary: Summary, name: str, jour
|
||||
'--quiet',
|
||||
],
|
||||
check=True,
|
||||
cwd=os.fspath(args.meson_source_dir),
|
||||
cwd=os.fspath(args.mkosi_dir),
|
||||
) # fmt: skip
|
||||
|
||||
Path(f'{output}.new').unlink()
|
||||
@@ -378,6 +378,22 @@ def main() -> None:
|
||||
parser.add_argument('mkosi_args', nargs='*')
|
||||
args = parser.parse_args()
|
||||
|
||||
# The meson source directory can either be the top-level repository directory or the
|
||||
# test/integration-tests/standalone subdirectory in the repository directory. The mkosi configuration
|
||||
# will always be a parent directory of one of these directories and at most 4 levels upwards, so don't
|
||||
# look further than that.
|
||||
dirs = [args.meson_source_dir] + list(args.meson_source_dir.parents)
|
||||
for p in dirs[: min(len(dirs), 4)]:
|
||||
if (p / 'mkosi/mkosi.conf').exists():
|
||||
setattr(args, 'mkosi_dir', p)
|
||||
break
|
||||
else:
|
||||
print(
|
||||
f'Directory with mkosi config not found in any parent directories of {args.meson_source_dir}',
|
||||
file=sys.stderr,
|
||||
)
|
||||
exit(1)
|
||||
|
||||
if not bool(int(os.getenv('SYSTEMD_INTEGRATION_TESTS', '0'))):
|
||||
print(
|
||||
f'SYSTEMD_INTEGRATION_TESTS=1 not found in environment, skipping {args.name}',
|
||||
@@ -531,7 +547,7 @@ def main() -> None:
|
||||
|
||||
cmd = [
|
||||
args.mkosi,
|
||||
'--directory', os.fspath(args.meson_source_dir),
|
||||
'--directory', os.fspath(args.mkosi_dir),
|
||||
'--machine', name,
|
||||
'--ephemeral=yes',
|
||||
*(['--forward-journal', journal_file] if journal_file else []),
|
||||
|
||||
Reference in New Issue
Block a user