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