From d32be648207aaf18a8eaae10c9b8fa811607dd7b Mon Sep 17 00:00:00 2001 From: Caleb Connolly Date: Wed, 12 Jul 2023 23:09:08 +0100 Subject: [PATCH] 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 Reviewed-by: Oliver Smith Link: https://lists.sr.ht/~postmarketos/pmbootstrap-devel/%3C20230629-suffix-type-hint-v1-2-e92802ae20a8@postmarketos.org%3E --- test/pmb_test/git.py | 4 ++++ test/test_aportgen.py | 7 ++++--- test/test_aportgen_device_wizard.py | 3 ++- test/test_build_package.py | 5 +++-- test/test_pkgrel_bump.py | 4 ++-- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/test/pmb_test/git.py b/test/pmb_test/git.py index bd9ea892..bd06ffe5 100644 --- a/test/pmb_test/git.py +++ b/test/pmb_test/git.py @@ -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) diff --git a/test/test_aportgen.py b/test/test_aportgen.py index 6258f6b7..8c27b3c5 100644 --- a/test/test_aportgen.py +++ b/test/test_aportgen.py @@ -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") diff --git a/test/test_aportgen_device_wizard.py b/test/test_aportgen_device_wizard.py index fe7e5199..76f5b1c5 100644 --- a/test/test_aportgen_device_wizard.py +++ b/test/test_aportgen_device_wizard.py @@ -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 diff --git a/test/test_build_package.py b/test/test_build_package.py index 39327d09..db75c804 100644 --- a/test/test_build_package.py +++ b/test/test_build_package.py @@ -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" diff --git a/test/test_pkgrel_bump.py b/test/test_pkgrel_bump.py index 9fd4c735..ee1e1778 100644 --- a/test/test_pkgrel_bump.py +++ b/test/test_pkgrel_bump.py @@ -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,