fix(test): give Composer an archive extractor

Without a zip extension or an unzip/7z binary Composer silently drops to
--prefer-source and mirror-clones every dependency, which exceeds its
300 s process timeout on phpunit.git. That took the Arch workspace job
from a 2m16s test-unit to a 16m08s failure. Debian never saw it because
apt pulls php-zip and unzip in as Composer dependencies; pacman does not.

Arch ships no zip extension and no php-zip package, so the extractor has
to be the unzip binary rather than the extension. Its mapping already
covers all five package managers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kevinveenbirkenbachandClaude Opus 5 committed 2026-08-26 02:40:06 +02:00
1 parent 95020d4fb4
commit ae71d8ea2c
2 files changed
+13 -3

No files matched your search

+4 -2
View File
@@ -18,7 +18,8 @@ class TestEnsurePhpToolchain(unittest.TestCase):
):
php_mod.ensure_php_toolchain()
self.assertEqual(
[c.args[0] for c in ensure.call_args_list], ["php", "composer"]
[c.args[0] for c in ensure.call_args_list],
["php", "composer", "unzip"],
)
self.assertEqual(
[c.args[0] for c in extension.call_args_list],
@@ -43,7 +44,8 @@ class TestEnsurePhpPresent(unittest.TestCase):
phpunit.is_file.return_value = True
php_mod.ensure_php_present()
self.assertEqual(
[c.args[0] for c in ensure.call_args_list], ["php", "composer"]
[c.args[0] for c in ensure.call_args_list],
["php", "composer", "unzip"],
)
run.assert_not_called()