kopia lustrzana https://github.com/jupyterhub/repo2docker
Add test
rodzic
e355b1cf2d
commit
56e6c116f3
|
@ -10,7 +10,6 @@ Release date: TBD
|
|||
|
||||
New features
|
||||
------------
|
||||
- Fix for submodule check out in :pr:`809` by :user:`davidbrochart`.
|
||||
- Add support for Figshare in :pr:`788` by :user:`nuest`.
|
||||
- Add support for Dataverse in :pr:`739` by :user:`Xarthisius`.
|
||||
|
||||
|
@ -20,7 +19,7 @@ API changes
|
|||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Fix for submodule check out in :pr:`809` by :user:`davidbrochart`.
|
||||
|
||||
|
||||
Version 0.10.0
|
||||
|
|
|
@ -21,29 +21,24 @@ class Git(ContentProvider):
|
|||
|
||||
# make a, possibly shallow, clone of the remote repository
|
||||
try:
|
||||
cmd = ["git", "clone", "--recursive"]
|
||||
cmd = ["git", "clone"]
|
||||
if ref is None:
|
||||
# check out of HEAD is performed after the clone is complete
|
||||
cmd.extend(["--depth", "1"])
|
||||
else:
|
||||
# don't check out HEAD, the given ref will be checked out later
|
||||
# this prevents HEAD's submodules to be cloned if ref doesn't have them
|
||||
cmd.extend(["--no-checkout"])
|
||||
cmd.extend(["--branch", ref])
|
||||
cmd.extend([repo, output_dir])
|
||||
for line in execute_cmd(cmd, capture=yield_output):
|
||||
yield line
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
msg = "Failed to clone repository from {repo}.".format(repo=repo)
|
||||
msg = "Failed to clone repository from {repo}".format(repo=repo)
|
||||
if ref is not None:
|
||||
msg += " (ref {ref})".format(ref=ref)
|
||||
msg += "."
|
||||
raise ContentProviderException(msg) from e
|
||||
|
||||
# check out the specific ref given by the user
|
||||
if ref is not None:
|
||||
# check out ref as it has not been done yet
|
||||
for line in execute_cmd(
|
||||
["git", "checkout", ref], cwd=output_dir, capture=yield_output
|
||||
):
|
||||
yield line
|
||||
hash = check_ref(ref, output_dir)
|
||||
if hash is None:
|
||||
self.log.error(
|
||||
|
|
|
@ -145,6 +145,10 @@ def repo_with_submodule():
|
|||
submod_sha1_b = _get_sha1(git_b_dir)
|
||||
_add_content_to_git(git_b_dir)
|
||||
|
||||
# create a new branch in the parent without any submodule
|
||||
subprocess.check_call(
|
||||
["git", "checkout", "-b", "branch-without-submod"], cwd=git_a_dir
|
||||
)
|
||||
# create a new branch in the parent to add the submodule
|
||||
subprocess.check_call(
|
||||
["git", "checkout", "-b", "branch-with-submod"], cwd=git_a_dir
|
||||
|
|
|
@ -23,6 +23,18 @@ def test_submodule_clone(repo_with_submodule):
|
|||
"""Test git clone containing a git submodule."""
|
||||
upstream, expected_sha1_upstream, expected_sha1_submod = repo_with_submodule
|
||||
|
||||
# check that checking out a branch where there are no submodule
|
||||
# indeed doesn't get any submodule, even though they are in master
|
||||
with TemporaryDirectory() as clone_dir2:
|
||||
submod_dir = os.path.join(clone_dir2, "submod") # set by fixture
|
||||
spec = {"repo": upstream, "ref": "branch-without-submod"}
|
||||
git_content = Git()
|
||||
for _ in git_content.fetch(spec, clone_dir2):
|
||||
pass
|
||||
|
||||
assert os.path.exists(os.path.join(clone_dir2, "test"))
|
||||
assert not os.path.exists(os.path.join(submod_dir, "test"))
|
||||
|
||||
with TemporaryDirectory() as clone_dir:
|
||||
submod_dir = os.path.join(clone_dir, "submod") # set by fixture
|
||||
spec = {"repo": upstream}
|
||||
|
|
Ładowanie…
Reference in New Issue