-
-
Notifications
You must be signed in to change notification settings - Fork 950
Description
Within a pytest
suite I have created a Server(Thread)
class and a server_tmp_path
factory in order to simulate the download of a git repository in my project (actually I might need to download only a specific file, but I have to download the whole repo first, am I right?).
I create the test repo like this,
@pytest.fixture(scope="module")
def test_git_repo(server_tmp_path):
"""Initialize a dummy git repository"""
import git
repo_dir = server_tmp_path / "test_git_repo"
file_name = "test_file.txt"
file_name_2 = "test_file_2.txt"
r = git.Repo.init(repo_dir)
Path(repo_dir / file_name).touch()
Path(repo_dir / file_name_2).touch()
r.index.add([file_name])
r.index.add([file_name_2])
r.index.commit("initial commit")
return repo_dir
and then I define the test function as test_download_git_repo(server, test_git_repo, tmp_path)
so then from inside I can retrieve the URL of the test repo (e.g. http://localhost:51848/test_git_repo/)
and see that the stuff is there,
When I cd
the directory I can see that it corresponds to an initialized git repository with 1 main branch and the initial commit.
So I am a bit baffled that when I try to do the following,
path = tmp_path / test_git_repo.name
git.repo.Repo.clone_from(f"{server.url}/{test_git_repo.name}", path)
I get the following Traceback,
127.0.0.1 - - [13/Sep/2022 18:07:34] code 404, message File not found
127.0.0.1 - - [13/Sep/2022 18:07:34] "GET /test_git_repo/info/refs?service=git-upload-pack HTTP/1.1" 404 -
*** git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git clone -v http://localhost:51848/test_git_repo /private/var/folders/2z/142033n17rbfy969s6h4hymw0000gn/T/pytest-of-michele/pytest-27/test_download_git_repo0/test_git_repo
stderr: 'Cloning into '/private/var/folders/2z/142033n17rbfy969s6h4hymw0000gn/T/pytest-of-michele/pytest-27/test_download_git_repo0/test_git_repo'...
fatal: repository 'http://localhost:51848/test_git_repo/' not found
Any idea what could be the problem?