Skip to content

Commit 366243f

Browse files
authored
Remove cache before loading the app (#31)
* adding pytest-cov, fixes #6 * remove cache before loading the app, fixes #5
1 parent 5d146f9 commit 366243f

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

src/edit_python_pe/utils.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import hashlib
33
import os
44
import re
5+
import shutil
56
from datetime import date, datetime
67
from time import sleep
78
from typing import TYPE_CHECKING
@@ -141,14 +142,14 @@ def fork_repo(token: str, original_repo: Repository) -> tuple[str, Repository]:
141142
forked_repo_url = forked_repo.clone_url
142143
repo_path = user_data_dir(appname="edit-python-pe", appauthor="python.pe")
143144

144-
if not os.path.exists(repo_path):
145-
callbacks = pygit2.callbacks.RemoteCallbacks(
146-
credentials=pygit2.UserPass(token, "x-oauth-basic")
147-
)
148-
sleep(3)
149-
pygit2.clone_repository(
150-
forked_repo_url, repo_path, callbacks=callbacks
151-
)
145+
if os.path.exists(repo_path):
146+
shutil.rmtree(repo_path)
147+
148+
callbacks = pygit2.callbacks.RemoteCallbacks(
149+
credentials=pygit2.UserPass(token, "x-oauth-basic")
150+
)
151+
sleep(3)
152+
pygit2.clone_repository(forked_repo_url, repo_path, callbacks=callbacks)
152153
return repo_path, forked_repo
153154

154155

tests/test_utils.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,16 @@ def test_get_repo_github_exception(self, mock_github, mock_getpass):
252252
class TestForkRepo(unittest.TestCase):
253253
@patch("edit_python_pe.utils.user_data_dir", return_value="/tmp/testrepo")
254254
@patch("edit_python_pe.utils.os.path.exists", return_value=False)
255+
@patch("edit_python_pe.utils.shutil.rmtree")
255256
@patch("edit_python_pe.utils.pygit2.clone_repository")
256257
@patch("edit_python_pe.utils.sleep", return_value=None)
257-
def test_fork_repo_clones_if_not_exists(
258-
self, mock_sleep, mock_clone, mock_exists, mock_user_data_dir
258+
def test_fork_repo_no_remove_if_not_exists(
259+
self,
260+
mock_sleep,
261+
mock_clone,
262+
mock_rmtree,
263+
mock_exists,
264+
mock_user_data_dir,
259265
):
260266
mock_forked_repo = MagicMock()
261267
mock_forked_repo.clone_url = "https://github.com/fake/fork.git"
@@ -265,16 +271,24 @@ def test_fork_repo_clones_if_not_exists(
265271
repo_path = fork_repo(token, mock_original_repo)[0]
266272
mock_original_repo.create_fork.assert_called_once()
267273
mock_clone.assert_called_once()
274+
mock_rmtree.assert_not_called()
268275
call_args = mock_clone.call_args
269276
self.assertEqual(call_args[0][0], mock_forked_repo.clone_url)
270277
self.assertEqual(call_args[0][1], repo_path)
271278
self.assertEqual(repo_path, "/tmp/testrepo")
272279

273280
@patch("edit_python_pe.utils.user_data_dir", return_value="/tmp/testrepo")
274281
@patch("edit_python_pe.utils.os.path.exists", return_value=True)
282+
@patch("edit_python_pe.utils.shutil.rmtree")
275283
@patch("edit_python_pe.utils.pygit2.clone_repository")
276-
def test_fork_repo_no_clone_if_exists(
277-
self, mock_clone, mock_exists, mock_user_data_dir
284+
@patch("edit_python_pe.utils.sleep", return_value=None)
285+
def test_fork_repo_remove_if_exists(
286+
self,
287+
mock_sleep,
288+
mock_clone,
289+
mock_rmtree,
290+
mock_exists,
291+
mock_user_data_dir,
278292
):
279293
mock_forked_repo = MagicMock()
280294
mock_forked_repo.clone_url = "https://github.com/fake/fork.git"
@@ -283,5 +297,6 @@ def test_fork_repo_no_clone_if_exists(
283297
token = "fake-token"
284298
repo_path = fork_repo(token, mock_original_repo)[0]
285299
mock_original_repo.create_fork.assert_called_once()
286-
mock_clone.assert_not_called()
300+
mock_rmtree.assert_called_once()
301+
mock_clone.assert_called_once()
287302
self.assertEqual(repo_path, "/tmp/testrepo")

0 commit comments

Comments
 (0)