|
8 | 8 | from pathlib import Path |
9 | 9 | import subprocess |
10 | 10 |
|
| 11 | +import pytest |
| 12 | + |
11 | 13 | from git.objects import Blob, Tree |
| 14 | +from git.repo import Repo |
12 | 15 | from git.util import cwd |
13 | 16 |
|
14 | 17 | from test.lib import TestBase, with_rw_directory |
| 18 | +from .lib.helper import PathLikeMock, with_rw_repo |
15 | 19 |
|
16 | 20 |
|
17 | 21 | class TestTree(TestBase): |
@@ -161,3 +165,57 @@ def lib_folder(t, _d): |
161 | 165 | assert root[item.path] == item == root / item.path |
162 | 166 | # END for each item |
163 | 167 | assert found_slash |
| 168 | + |
| 169 | + @with_rw_repo("0.3.2.1") |
| 170 | + def test_repo_lookup_string_path(self, rw_repo): |
| 171 | + repo = Repo(rw_repo.git_dir) |
| 172 | + blob = repo.tree() / ".gitignore" |
| 173 | + assert isinstance(blob, Blob) |
| 174 | + assert blob.hexsha == "787b3d442a113b78e343deb585ab5531eb7187fa" |
| 175 | + |
| 176 | + @with_rw_repo("0.3.2.1") |
| 177 | + def test_repo_lookup_pathlike_path(self, rw_repo): |
| 178 | + repo = Repo(rw_repo.git_dir) |
| 179 | + blob = repo.tree() / PathLikeMock(".gitignore") |
| 180 | + assert isinstance(blob, Blob) |
| 181 | + assert blob.hexsha == "787b3d442a113b78e343deb585ab5531eb7187fa" |
| 182 | + |
| 183 | + @with_rw_repo("0.3.2.1") |
| 184 | + def test_repo_lookup_invalid_string_path(self, rw_repo): |
| 185 | + repo = Repo(rw_repo.git_dir) |
| 186 | + with pytest.raises(KeyError): |
| 187 | + repo.tree() / "doesnotexist" |
| 188 | + |
| 189 | + @with_rw_repo("0.3.2.1") |
| 190 | + def test_repo_lookup_invalid_pathlike_path(self, rw_repo): |
| 191 | + repo = Repo(rw_repo.git_dir) |
| 192 | + with pytest.raises(KeyError): |
| 193 | + repo.tree() / PathLikeMock("doesnotexist") |
| 194 | + |
| 195 | + @with_rw_repo("0.3.2.1") |
| 196 | + def test_repo_lookup_nested_string_path(self, rw_repo): |
| 197 | + repo = Repo(rw_repo.git_dir) |
| 198 | + blob = repo.tree() / "git/__init__.py" |
| 199 | + assert isinstance(blob, Blob) |
| 200 | + assert blob.hexsha == "d87dcbdbb65d2782e14eea27e7f833a209c052f3" |
| 201 | + |
| 202 | + @with_rw_repo("0.3.2.1") |
| 203 | + def test_repo_lookup_nested_pathlike_path(self, rw_repo): |
| 204 | + repo = Repo(rw_repo.git_dir) |
| 205 | + blob = repo.tree() / PathLikeMock("git/__init__.py") |
| 206 | + assert isinstance(blob, Blob) |
| 207 | + assert blob.hexsha == "d87dcbdbb65d2782e14eea27e7f833a209c052f3" |
| 208 | + |
| 209 | + @with_rw_repo("0.3.2.1") |
| 210 | + def test_repo_lookup_folder_string_path(self, rw_repo): |
| 211 | + repo = Repo(rw_repo.git_dir) |
| 212 | + blob = repo.tree() / "git" |
| 213 | + assert isinstance(blob, Tree) |
| 214 | + assert blob.hexsha == "ec8ae429156d65afde4bbb3455570193b56f0977" |
| 215 | + |
| 216 | + @with_rw_repo("0.3.2.1") |
| 217 | + def test_repo_lookup_folder_pathlike_path(self, rw_repo): |
| 218 | + repo = Repo(rw_repo.git_dir) |
| 219 | + blob = repo.tree() / PathLikeMock("git") |
| 220 | + assert isinstance(blob, Tree) |
| 221 | + assert blob.hexsha == "ec8ae429156d65afde4bbb3455570193b56f0977" |
0 commit comments