From cdb01dac76318e3d397fa6f68f848851e59f1c2a Mon Sep 17 00:00:00 2001 From: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> Date: Thu, 29 Oct 2026 16:19:35 -0600 Subject: [PATCH 1/3] tests: pass the required profile to resolve The installed-wheel checks invoke resolve without its required profile. Select j71b so these tests exercise package independence against the current command contract. Signed-off-by: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> --- tests/test_package_boundaries.py | 2 +- tests/test_runtime.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_package_boundaries.py b/tests/test_package_boundaries.py index c7caee5..323d66d 100644 --- a/tests/test_package_boundaries.py +++ b/tests/test_package_boundaries.py @@ -40,7 +40,7 @@ def find_spec(self, name, path=None, target=None): from orchard_hardware.apple import adt from orchard_cli.command import main sys.argv=['orchard','distros'];main() -sys.argv=['orchard','resolve',MANIFEST];main() +sys.argv=['orchard','resolve',MANIFEST,'--profile','j71b'];main() '''.replace('MANIFEST', repr(str(FIXTURE.resolve()))) with tempfile.TemporaryDirectory() as store: result = subprocess.run([sys.executable, '-I', '-c', script], cwd=store, diff --git a/tests/test_runtime.py b/tests/test_runtime.py index 3db4e5b..0522ca1 100644 --- a/tests/test_runtime.py +++ b/tests/test_runtime.py @@ -308,7 +308,7 @@ def guard(event, args): sys.addaudithook(guard) from orchard_cli.command import main -sys.argv = ['orchard', 'resolve', INPUT] +sys.argv = ['orchard', 'resolve', INPUT, '--profile', 'j71b'] main() '''.replace('BLOCKED', repr([str(path) for path in blocked])).replace('INPUT', repr(str(inputs / 'index.toml'))) env = {**os.environ, 'ORCHARD_HOME': str(self.root / 'isolated-store'), 'PYTHONDONTWRITEBYTECODE': '1'} From f187900caed849777ad54706c8e42409b07f4efc Mon Sep 17 00:00:00 2001 From: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> Date: Thu, 29 Oct 2026 16:25:07 -0600 Subject: [PATCH 2/3] tests: resolve installed device fixture paths Python virtualenvs may expose the trusted hardware package through a lib64 link. Resolve the fixture path before checking the package data with the strict local bundle validator. Signed-off-by: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> --- tests/test_manifests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_manifests.py b/tests/test_manifests.py index 2cc41e4..4c5c49f 100644 --- a/tests/test_manifests.py +++ b/tests/test_manifests.py @@ -29,7 +29,8 @@ def rejects(self, document): def test_all_fixtures_validate_with_local_receipts(self): paths = list(DISTRO.glob('*.toml')) + list(MINIMAL.glob('*.toml')) paths += list((CLI / 'tests/fixtures/developer').glob('*.toml')) - paths += [device_path('j71b')] + # An installed package may be reached through a virtualenv lib64 link. + paths += [device_path('j71b').resolve()] for path in paths: with self.subTest(path=path): verify_local_receipts(load(path), path.parent) From 9016fea84da3a1bb9a71771e6bbf17de51756786 Mon Sep 17 00:00:00 2001 From: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> Date: Thu, 29 Oct 2026 16:38:18 -0600 Subject: [PATCH 3/3] tests: import the current Apple source modules Signed-off-by: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> --- tests/test_package_boundaries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_package_boundaries.py b/tests/test_package_boundaries.py index ef6dab4..7068f60 100644 --- a/tests/test_package_boundaries.py +++ b/tests/test_package_boundaries.py @@ -11,7 +11,7 @@ from unittest.mock import Mock, patch from orchard_cli import firmware -from orchard_cli.apple import usb, ipsw +from orchard_cli.apple import usb from orchard_cli.progress import Clock from orchard_cli.state import DeviceState @@ -35,7 +35,7 @@ def find_spec(self, name, path=None, target=None): sys.meta_path.insert(0, NoBoard()) from orchard_cli import downloads, firmware, http, integrity from orchard_cli.transports import ssh -from orchard_cli.apple import adt_tree, adt_capture, macho, osserialize, ipsw, usb, boot +from orchard_cli.apple import adt_tree, adt_capture, macho, osserialize, remote_ipsw, udif, apfs, lzfse, usb, boot from orchard_hardware.apple import adt from orchard_cli.command import main sys.argv=['orchard','distros'];main()