Make sure binaries are executable

This commit is contained in:
DazedAnon 2026-07-07 09:10:39 -05:00
parent e00ce5fdbb
commit 519093f797
2 changed files with 23 additions and 0 deletions

View file

@ -202,6 +202,16 @@ class WolfBundledOnlyTests(unittest.TestCase):
with patch("util.wolfdawn.bundled_binary_path", return_value=wolf):
self.assertEqual(ensure_wolf_binary(), wolf)
def test_ensure_wolf_binary_makes_bundled_copy_executable(self):
with tempfile.TemporaryDirectory() as raw:
wolf = Path(raw) / "wolf"
wolf.write_bytes(b"\x7fELF")
wolf.chmod(0o644)
with patch("util.wolfdawn.bundled_binary_path", return_value=wolf):
with patch("util.wolfdawn._platform_dir", return_value="linux"):
ensure_wolf_binary()
self.assertTrue(wolf.stat().st_mode & 0o111)
def test_ensure_wolf_binary_raises_when_missing(self):
missing = Path("/nonexistent/wolf/missing")
with patch("util.wolfdawn.bundled_binary_path", return_value=missing):

View file

@ -265,6 +265,18 @@ def download_wolf_binary(platform: Optional[str] = None, log_fn=print) -> Path:
return _extract_wolf_from_zip(zip_bytes, dest, log_fn)
def _ensure_executable(path: Path) -> None:
"""Ensure a bundled binary is executable (git checkout may drop +x)."""
if _platform_dir() == "windows":
return
try:
if path.stat().st_mode & 0o111:
return
path.chmod(0o755)
except OSError: # pragma: no cover - non-POSIX filesystems
pass
def ensure_wolf_binary(log_fn=print) -> Path:
"""Return the bundled ``wolf`` binary path (no upstream fetch at runtime).
@ -274,6 +286,7 @@ def ensure_wolf_binary(log_fn=print) -> Path:
"""
bundled = bundled_binary_path()
if bundled.is_file():
_ensure_executable(bundled)
return bundled
raise WolfDawnError(
f"No bundled WolfDawn binary for '{_platform_dir()}' at {bundled}. "