test: dont fail on githook symlinks

Since introducing git hooks, these tests fail locally because copytree
can't handle the relative symlinks. Add a helper for this common pattern
and set ignore_dangling_symlinks to safely skip these symlinks.

Signed-off-by: Caleb Connolly <kc@postmarketos.org>
Reviewed-by: Oliver Smith <ollieparanoid@postmarketos.org>
Link: https://lists.sr.ht/~postmarketos/pmbootstrap-devel/%3C20230629-suffix-type-hint-v1-2-e92802ae20a8@postmarketos.org%3E
This commit is contained in:
Caleb Connolly 2023-07-12 23:09:08 +01:00 committed by Oliver Smith
parent 1a00c04f74
commit d32be64820
No known key found for this signature in database
GPG Key ID: 5AE7F5513E0885CB
5 changed files with 15 additions and 8 deletions

View File

@ -5,6 +5,7 @@ import os
import pmb.helpers.git
import pmb.helpers.run
import shutil
def prepare_tmpdir(args, monkeypatch, tmpdir):
@ -59,3 +60,6 @@ def prepare_tmpdir(args, monkeypatch, tmpdir):
monkeypatch.setattr(pmb.helpers.git, "get_upstream_remote", get_u_r)
return path_local, run_git
def copy_dotgit(args, tmpdir):
shutil.copytree(args.aports + "/.git", tmpdir + "/.git", ignore_dangling_symlinks=True)

View File

@ -7,6 +7,7 @@ import shutil
import filecmp
import pmb_test
import pmb_test.git
import pmb_test.const
import pmb.aportgen
import pmb.aportgen.core
@ -30,7 +31,7 @@ def args(tmpdir, request):
def test_aportgen_compare_output(args, tmpdir, monkeypatch):
# Fake aports folder in tmpdir
tmpdir = str(tmpdir)
shutil.copytree(args.aports + "/.git", tmpdir + "/.git")
pmb_test.git.copy_dotgit(args, tmpdir)
args.aports = tmpdir
os.mkdir(tmpdir + "/cross")
testdata = pmb_test.const.testdata + "/aportgen"
@ -53,7 +54,7 @@ def test_aportgen_compare_output(args, tmpdir, monkeypatch):
def test_aportgen_fork_alpine_compare_output(args, tmpdir, monkeypatch):
# Fake aports folder in tmpdir
tmpdir = str(tmpdir)
shutil.copytree(args.aports + "/.git", tmpdir + "/.git")
pmb_test.git.copy_dotgit(args, tmpdir)
args.aports = tmpdir
os.mkdir(tmpdir + "/temp")
testdata = pmb_test.const.testdata + "/aportgen"
@ -77,7 +78,7 @@ def test_aportgen(args, tmpdir):
# Fake aports folder in tmpdir
testdata = pmb_test.const.testdata
tmpdir = str(tmpdir)
shutil.copytree(args.aports + "/.git", tmpdir + "/.git")
pmb_test.git.copy_dotgit(args, tmpdir)
args.aports = tmpdir
shutil.copy(f"{testdata}/pmaports.cfg", args.aports)
os.mkdir(tmpdir + "/cross")

View File

@ -6,6 +6,7 @@ import sys
import shutil
import pmb_test # noqa
import pmb_test.git
import pmb_test.const
import pmb.aportgen
import pmb.config
@ -25,7 +26,7 @@ def args(tmpdir, request):
# Fake aports folder:
tmpdir = str(tmpdir)
shutil.copytree(args.aports + "/.git", tmpdir + "/.git")
pmb_test.git.copy_dotgit(args, tmpdir)
setattr(args, "_aports_real", args.aports)
args.aports = tmpdir

View File

@ -9,6 +9,7 @@ import shutil
import sys
import pmb_test # noqa
import pmb_test.git
import pmb.build
import pmb.build._package
import pmb.config
@ -391,7 +392,7 @@ def test_build_local_source_high_level(args, tmpdir):
# aports: Add pmaports.cfg, .git
shutil.copy(args.aports + "/pmaports.cfg", aports)
shutil.copytree(args.aports + "/.git", aports + "/.git")
pmb_test.git.copy_dotgit(args, tmpdir)
# src: Copy hello-world source files
src = tmpdir + "/src"
@ -450,7 +451,7 @@ def test_build_abuild_leftovers(args, tmpdir):
# aports: Add pmaports.cfg, .git
shutil.copy(f"{args.aports}/pmaports.cfg", aports)
shutil.copytree(f"{args.aports}/.git", f"{aports}/.git")
pmb_test.git.copy_dotgit(args, aports)
# aport: create abuild dir with broken symlink
src = f"{aport}/src"

View File

@ -4,10 +4,10 @@
import glob
import os
import pytest
import shutil
import sys
import pmb_test # noqa
import pmb_test.git
import pmb.helpers.pkgrel_bump
import pmb.helpers.logging
@ -39,7 +39,7 @@ def pmbootstrap(args, tmpdir, parameters, zero_exit=True):
# Copy .git dir to fake pmaports
dot_git = tmpdir + "/_aports/.git"
if not os.path.exists(dot_git):
shutil.copytree(args.aports + "/.git", dot_git)
pmb_test.git.copy_dotgit(args, aports)
try:
pmb.helpers.run.user(args, ["./pmbootstrap.py", "--work=" + tmpdir,