Cloner tests: maybe finished
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
parent
b6b5b8b8ca
commit
941a89b7dd
|
@ -1,5 +1,7 @@
|
||||||
import git
|
import git
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
import repo_cloner.lib.cloner
|
||||||
from repo_cloner.lib import gen_repo_hashed_name, DirNotFoundError, Cloner
|
from repo_cloner.lib import gen_repo_hashed_name, DirNotFoundError, Cloner
|
||||||
from cloner_test_fixtures import *
|
from cloner_test_fixtures import *
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
@ -282,6 +284,70 @@ def test_sync_submodules_failed(cloner_dir_with_config, caplog):
|
||||||
assert caplog.records[1].message == "Repo fetch failed for Mocked Project"
|
assert caplog.records[1].message == "Repo fetch failed for Mocked Project"
|
||||||
|
|
||||||
|
|
||||||
|
def my_check_submodules_repo(
|
||||||
|
repo_tool, cache_file: str,
|
||||||
|
submodule_list: list,
|
||||||
|
scan_depth = None):
|
||||||
|
if "namespace_whatever_" in cache_file:
|
||||||
|
submodule_list.append("https://git.hosting:namespace/submodule1.git")
|
||||||
|
submodule_list.append("https://git.hosting:namespace/submodule2.git")
|
||||||
|
if "/namespace_submodule1_" in cache_file:
|
||||||
|
submodule_list.append("https://git.hosting:namespace/submodule3.git")
|
||||||
|
return submodule_list
|
||||||
|
|
||||||
|
|
||||||
|
def test_submodules_sync_succeed(cloner_dir_with_config, caplog):
|
||||||
|
cloner_dir_with_config.joinpath("cache", "submodules").mkdir(parents = True)
|
||||||
|
cloner_dir_with_config.joinpath("cache", "submodules", "submodules.cache") \
|
||||||
|
.write_text("https://git.hosting:previous/submodule.git")
|
||||||
|
ds = MockDirStruct(cloner_dir_with_config)
|
||||||
|
ds.config.cloner_repo_url = "https://git.hosting:namespace/whatever.git"
|
||||||
|
ds.config.cloner_submodules = True
|
||||||
|
|
||||||
|
# mock almost everything
|
||||||
|
mocks = {
|
||||||
|
'initialized': PropertyMock(side_effect = [True, False, True, True, True]),
|
||||||
|
'fetch': MagicMock(return_value = True),
|
||||||
|
'clone': MagicMock(return_value = True),
|
||||||
|
}
|
||||||
|
|
||||||
|
with patch.multiple("repo_cloner.lib.cloner.RepoTool", **mocks):
|
||||||
|
Cloner.check_submodules_repo = my_check_submodules_repo
|
||||||
|
cl = Cloner(ds)
|
||||||
|
assert cl.sync()
|
||||||
|
|
||||||
|
assert repo_cloner.lib.cloner.RepoTool.fetch.call_count == 4
|
||||||
|
assert repo_cloner.lib.cloner.RepoTool.clone.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_submodules_sync_one_fail(cloner_dir_with_config, caplog):
|
||||||
|
cloner_dir_with_config.joinpath("cache", "submodules").mkdir(parents = True)
|
||||||
|
cloner_dir_with_config.joinpath("cache", "submodules", "submodules.cache") \
|
||||||
|
.write_text("https://git.hosting:previous/submodule.git")
|
||||||
|
ds = MockDirStruct(cloner_dir_with_config)
|
||||||
|
ds.config.cloner_repo_url = "https://git.hosting:namespace/whatever.git"
|
||||||
|
ds.config.cloner_submodules = True
|
||||||
|
# just to make coverage nicer
|
||||||
|
ds.config.cloner_submodule_depth = 0
|
||||||
|
|
||||||
|
# mock almost everything
|
||||||
|
mocks = {
|
||||||
|
'initialized': PropertyMock(return_value = True),
|
||||||
|
'fetch': MagicMock(side_effect = [True, True, True, False, True]),
|
||||||
|
'clone': MagicMock(return_value = True),
|
||||||
|
}
|
||||||
|
|
||||||
|
with patch.multiple("repo_cloner.lib.cloner.RepoTool", **mocks):
|
||||||
|
Cloner.check_submodules_repo = my_check_submodules_repo
|
||||||
|
cl = Cloner(ds)
|
||||||
|
assert not cl.sync()
|
||||||
|
|
||||||
|
assert repo_cloner.lib.cloner.RepoTool.fetch.call_count == 5
|
||||||
|
assert repo_cloner.lib.cloner.RepoTool.clone.call_count == 0
|
||||||
|
|
||||||
|
assert "Clone/fetch of submodule: https://git.hosting:namespace/submodule2.git failed" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
def test_perform_check(cloner_dir_with_config, monkeypatch, caplog):
|
def test_perform_check(cloner_dir_with_config, monkeypatch, caplog):
|
||||||
call_counter: int = 0
|
call_counter: int = 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user