Add e2e test for finding in tree with broken repos
This commit is contained in:
@@ -158,3 +158,77 @@ def test_repos_find_in_root():
|
|||||||
someremote = [r for r in repo1["remotes"] if r["name"] == "otherremote"][0]
|
someremote = [r for r in repo1["remotes"] if r["name"] == "otherremote"][0]
|
||||||
assert set(origin.keys()) == {"name", "type", "url"}
|
assert set(origin.keys()) == {"name", "type", "url"}
|
||||||
assert someremote["type"] == "file"
|
assert someremote["type"] == "file"
|
||||||
|
|
||||||
|
def test_repos_find_with_invalid_repo():
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
shell(
|
||||||
|
f"""
|
||||||
|
cd {tmpdir}
|
||||||
|
mkdir repo1
|
||||||
|
(
|
||||||
|
cd ./repo1
|
||||||
|
git init
|
||||||
|
echo test > test
|
||||||
|
git add test
|
||||||
|
git commit -m "commit1"
|
||||||
|
git remote add origin https://example.com/repo2.git
|
||||||
|
git remote add someremote ssh://example.com/repo2.git
|
||||||
|
)
|
||||||
|
mkdir repo2
|
||||||
|
(
|
||||||
|
cd ./repo2
|
||||||
|
git init
|
||||||
|
git co -b main
|
||||||
|
echo test > test
|
||||||
|
git add test
|
||||||
|
git commit -m "commit1"
|
||||||
|
git remote add origin https://example.com/repo2.git
|
||||||
|
)
|
||||||
|
mkdir broken_repo
|
||||||
|
(
|
||||||
|
cd broken_repo
|
||||||
|
echo "broken" > .git
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
cmd = grm(["repos", "find", tmpdir])
|
||||||
|
assert cmd.returncode == 0
|
||||||
|
assert "broken" in cmd.stderr
|
||||||
|
|
||||||
|
output = toml.loads(cmd.stdout)
|
||||||
|
|
||||||
|
assert isinstance(output, dict)
|
||||||
|
assert set(output.keys()) == {"trees"}
|
||||||
|
assert isinstance(output["trees"], list)
|
||||||
|
assert len(output["trees"]) == 1
|
||||||
|
for tree in output["trees"]:
|
||||||
|
assert set(tree.keys()) == {"root", "repos"}
|
||||||
|
assert tree["root"] == tmpdir
|
||||||
|
assert isinstance(tree["repos"], list)
|
||||||
|
assert len(tree["repos"]) == 2
|
||||||
|
|
||||||
|
repo1 = [r for r in tree["repos"] if r["name"] == "repo1"][0]
|
||||||
|
assert repo1["worktree_setup"] is False
|
||||||
|
assert isinstance(repo1["remotes"], list)
|
||||||
|
assert len(repo1["remotes"]) == 2
|
||||||
|
|
||||||
|
origin = [r for r in repo1["remotes"] if r["name"] == "origin"][0]
|
||||||
|
assert set(origin.keys()) == {"name", "type", "url"}
|
||||||
|
assert origin["type"] == "https"
|
||||||
|
assert origin["url"] == "https://example.com/repo2.git"
|
||||||
|
|
||||||
|
someremote = [r for r in repo1["remotes"] if r["name"] == "someremote"][0]
|
||||||
|
assert set(origin.keys()) == {"name", "type", "url"}
|
||||||
|
assert someremote["type"] == "ssh"
|
||||||
|
assert someremote["url"] == "ssh://example.com/repo2.git"
|
||||||
|
|
||||||
|
repo2 = [r for r in tree["repos"] if r["name"] == "repo2"][0]
|
||||||
|
assert repo2["worktree_setup"] is False
|
||||||
|
assert isinstance(repo1["remotes"], list)
|
||||||
|
assert len(repo2["remotes"]) == 1
|
||||||
|
|
||||||
|
origin = [r for r in repo2["remotes"] if r["name"] == "origin"][0]
|
||||||
|
assert set(origin.keys()) == {"name", "type", "url"}
|
||||||
|
assert origin["type"] == "https"
|
||||||
|
assert origin["url"] == "https://example.com/repo2.git"
|
||||||
|
|||||||
Reference in New Issue
Block a user