import asyncio
|
from pathlib import Path
|
import os
|
import sys
|
|
# Add src to path
|
sys.path.insert(0, str(Path(__file__).parent / "src"))
|
|
from archrepobuild.builder import _run_makepkg
|
|
async def test_already_built():
|
print("Testing 'already built' message handling...")
|
|
# Create a mock PKGBUILD directory
|
test_dir = Path("test_build_logic")
|
test_dir.mkdir(exist_ok=True)
|
pkgbuild = test_dir / "PKGBUILD"
|
pkgbuild.write_text("pkgname=testpkg\npkgver=1.0\npkgrel=1\narch=('any')\n")
|
|
# Manually create a dummy package file to trigger the error if we run twice
|
package_file = test_dir / "testpkg-1.0-1-any.pkg.tar.zst"
|
package_file.write_text("dummy")
|
|
# Run _run_makepkg. It should fail with returncode != 0 but we should catch it.
|
# Note: We can't easily mock the subprocess output of makepkg here
|
# but we can check if it behaves correctly when real makepkg is called.
|
|
success, error, artifacts = _run_makepkg(test_dir, force=False)
|
|
print(f"Success: {success}")
|
print(f"Error: {error}")
|
print(f"Artifacts: {artifacts}")
|
|
if success and "testpkg-1.0-1-any.pkg.tar.zst" in [a.name for a in artifacts]:
|
print("✓ Successfully handled 'already built' message")
|
else:
|
print("✗ Failed to handle 'already built' message (or makepkg didn't report it)")
|
|
# Cleanup
|
shutil = __import__('shutil')
|
shutil.rmtree(test_dir)
|
|
if __name__ == "__main__":
|
asyncio.run(test_already_built())
|