pmb.helpers.git.get_path: new function (!1848)

Get the path to the repository, which is either the default one in the
work dir, or a user-specified one in args.
This commit is contained in:
Oliver Smith 2019-12-27 23:13:28 +01:00 committed by Alexey Min
parent bbe3f5a219
commit 107c9f8b06
No known key found for this signature in database
GPG Key ID: EBF5ECFFFEE34DED
2 changed files with 61 additions and 2 deletions

View File

@ -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

48
test/test_helpers_git.py Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
"""
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"