Skip to content
Snippets Groups Projects
Unverified Commit bb126097 authored by Caleb Connolly's avatar Caleb Connolly :recycle: Committed by Oliver Smith
Browse files

test: conftest: require_programs() automatically (MR 2483)


Pmbootstrap finds all its host dependencies during init, ensure we do
that for pytest too.

Adapt require_programs() to use subprocess directly rather than have to
solve the weird dependency chain of pmb.helpers.run which depends on the
global context being initialised before it's usable.

Signed-off-by: default avatarCaleb Connolly <caleb@postmarketos.org>
parent cefe98fb
No related branches found
No related tags found
1 merge request!2483test: fix and re-add bootimg analyze tests
Pipeline #211144 failed
......@@ -33,7 +33,7 @@ codespell:
pytest:
stage: test
script:
- "apk -q add git android-tools"
- "apk -q add git android-tools multipath-tools losetup"
- "su build -c 'git config --global user.email ci@ci'"
- "su build -c 'git config --global user.name CI'"
- "echo 'build ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"
......
......@@ -32,6 +32,7 @@ import pmb.chroot.zap
import pmb.parse.deviceinfo
from pmb.parse.deviceinfo import Deviceinfo
import pmb.parse._apkbuild
import subprocess
def require_programs() -> None:
......@@ -50,11 +51,16 @@ def require_programs() -> None:
if "losetup" not in missing:
# Check if losetup supports the --json argument. Use the absolute path
# here, so it works in Debian too without using sudo.
# FIXME: we use subprocess directly here since pmb.helpers.run.user() requires
# global context to be initialized but we want this to run early in pytest.
try:
pmb.helpers.run.user(
[pmb.config.required_programs["losetup"], "--json"], check=True, output="null"
subprocess.run(
[pmb.config.required_programs["losetup"], "--json"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
check=True,
)
except RuntimeError:
except subprocess.CalledProcessError:
losetup_missing_json = True
error_message = ""
......
......@@ -52,6 +52,13 @@ def device_package(config_file):
return pkgdir
@pytest.fixture(autouse=True)
def find_required_programs():
"""Fixture to find required programs for pmbootstrap."""
pmb.config.require_programs()
@pytest.fixture
def mock_devices_find_path(device_package, monkeypatch):
"""Fixture to mock pmb.helpers.devices.find_path()"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment