From ed06c52c8f147fce83709b8246e6b560a274d336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Wed, 1 Dec 2021 20:03:25 +0100 Subject: [PATCH] Add e2e test for finding in tree with broken repos --- e2e_tests/test_repos_find.py | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/e2e_tests/test_repos_find.py b/e2e_tests/test_repos_find.py index 0608e28..82113ba 100644 --- a/e2e_tests/test_repos_find.py +++ b/e2e_tests/test_repos_find.py @@ -158,3 +158,77 @@ def test_repos_find_in_root(): someremote = [r for r in repo1["remotes"] if r["name"] == "otherremote"][0] assert set(origin.keys()) == {"name", "type", "url"} 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"