diff --git a/pmb/helpers/git.py b/pmb/helpers/git.py index abd0aff6..504bc10c 100644 --- a/pmb/helpers/git.py +++ b/pmb/helpers/git.py @@ -25,8 +25,19 @@ import pmb.config import pmb.helpers.run +def get_path(args, name_repo): + """ Get the path to the repository, which is either the default one in the + work dir, or a user-specified one in args. + + :returns: full path to repository """ + if name_repo == "pmaports": + return args.aports + return args.work + "/cache_git/" + name_repo + + def clone(args, name_repo, shallow=True): - """ Clone a git repository to $WORK/cache_git/$name_repo. + """ Clone a git repository to $WORK/cache_git/$name_repo (or to the + overridden path set in args, as with pmbootstrap --aports). :param name_repo: short alias used for the repository name, from pmb.config.git_repos (e.g. "aports_upstream", @@ -38,7 +49,7 @@ def clone(args, name_repo, shallow=True): raise ValueError("No git repository configured for " + name_repo) # Skip if already checked out - path = args.work + "/cache_git/" + name_repo + path = get_path(args, name_repo) if os.path.exists(path): return diff --git a/test/test_helpers_git.py b/test/test_helpers_git.py new file mode 100644 index 00000000..d5a9ab35 --- /dev/null +++ b/test/test_helpers_git.py @@ -0,0 +1,48 @@ +""" +Copyright 2019 Oliver Smith + +This file is part of pmbootstrap. + +pmbootstrap is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +pmbootstrap is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with pmbootstrap. If not, see . +""" + +import os +import sys +import pytest + +# Import from parent directory +sys.path.insert(0, os.path.realpath( + os.path.join(os.path.dirname(__file__) + "/.."))) +import pmb.helpers.git +import pmb.helpers.logging + + +@pytest.fixture +def args(request): + import pmb.parse + sys.argv = ["pmbootstrap", "init"] + args = pmb.parse.arguments() + args.log = args.work + "/log_testsuite.txt" + pmb.helpers.logging.init(args) + request.addfinalizer(args.logfd.close) + return args + + +def test_get_path(args): + func = pmb.helpers.git.get_path + args.work = "/wrk" + args.aports = "/tmp/pmaports" + + assert func(args, "aports_upstream") == "/wrk/cache_git/aports_upstream" + assert func(args, "pmaports") == "/tmp/pmaports"