diff --git a/src/pkgcheck/addons/git.py b/src/pkgcheck/addons/git.py index 7b2435ace..1874e8a62 100644 --- a/src/pkgcheck/addons/git.py +++ b/src/pkgcheck/addons/git.py @@ -536,9 +536,14 @@ def __init__(self, *args): def _gitignore(self): """Load a repo's .gitignore and .git/info/exclude files for path matching.""" patterns = [] - for path in (".gitignore", ".git/info/exclude"): + paths = ( + pjoin(self.options.target_repo.location, ".gitignore"), + pjoin(self.options.target_repo.location, ".git/info/exclude"), + pjoin(os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), "git/ignore"), + ) + for path in paths: try: - with open(pjoin(self.options.target_repo.location, path)) as f: + with open(path) as f: patterns.extend(f) except (FileNotFoundError, IOError): pass diff --git a/tests/addons/test_git.py b/tests/addons/test_git.py index b896304d9..596a2b34a 100644 --- a/tests/addons/test_git.py +++ b/tests/addons/test_git.py @@ -12,6 +12,7 @@ from pkgcore.ebuild.atom import atom as atom_cls from pkgcore.restrictions import packages from snakeoil.cli.exceptions import UserException +from snakeoil.contexts import os_environ from snakeoil.fileutils import touch from snakeoil.osutils import pjoin from snakeoil.process import CommandNotFound, find_binary @@ -466,6 +467,9 @@ def _setup(self, tool, tmp_path, repo): self.addon = git.GitAddon(options) self.cache_file = self.addon.cache_file(self.repo) + with os_environ(XDG_CONFIG_HOME=self.cache_dir): + yield + def test_git_unavailable(self, tool): args = ["scan", "--cache-dir", self.cache_dir, "--repo", self.repo.location] options, _ = tool.parse_args(args)