mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-20 09:56:05 -05:00
do better with loop cleanup (#3245)
* do better with loop cleanup * changelog * remove redundant line * Do this a bit better than the initial pass * Improve windows support Make some other things coroutines to work with improved design * Wish we'd have done this right from the start... * Update deps surrounding this - see bpo-23057 - neccessary for windows users - nice for consistent support channel info / feature availability * dep issue * Fix tests * duplication plugin py version * actually handle this * Reconfigure some checks with codeclimate, disable pylint for now * style * Is my exasperation showing yet? * handle some stupid stuff * meh * dep changelog
This commit is contained in:
@@ -25,18 +25,11 @@ class FakeCompletedProcess(NamedTuple):
|
||||
stderr: bytes = b""
|
||||
|
||||
|
||||
async def async_return(ret: Any):
|
||||
return ret
|
||||
|
||||
|
||||
def _mock_run(
|
||||
mocker: MockFixture, repo: Repo, returncode: int, stdout: bytes = b"", stderr: bytes = b""
|
||||
):
|
||||
return mocker.patch.object(
|
||||
repo,
|
||||
"_run",
|
||||
autospec=True,
|
||||
return_value=async_return(FakeCompletedProcess(returncode, stdout, stderr)),
|
||||
repo, "_run", autospec=True, return_value=FakeCompletedProcess(returncode, stdout, stderr)
|
||||
)
|
||||
|
||||
|
||||
@@ -46,11 +39,7 @@ def _mock_setup_repo(mocker: MockFixture, repo: Repo, commit: str):
|
||||
return mocker.DEFAULT
|
||||
|
||||
return mocker.patch.object(
|
||||
repo,
|
||||
"_setup_repo",
|
||||
autospec=True,
|
||||
side_effect=update_commit,
|
||||
return_value=async_return(None),
|
||||
repo, "_setup_repo", autospec=True, side_effect=update_commit, return_value=None
|
||||
)
|
||||
|
||||
|
||||
@@ -153,15 +142,13 @@ async def test_is_module_modified(mocker, repo):
|
||||
repo,
|
||||
"_get_file_update_statuses",
|
||||
autospec=True,
|
||||
return_value=async_return(
|
||||
{
|
||||
"added_file.txt": "A",
|
||||
"mycog/__init__.py": "M",
|
||||
"sample_file1.txt": "D",
|
||||
"sample_file2.txt": "D",
|
||||
"sample_file3.txt": "A",
|
||||
}
|
||||
),
|
||||
return_value={
|
||||
"added_file.txt": "A",
|
||||
"mycog/__init__.py": "M",
|
||||
"sample_file1.txt": "D",
|
||||
"sample_file2.txt": "D",
|
||||
"sample_file3.txt": "A",
|
||||
},
|
||||
)
|
||||
ret = await repo._is_module_modified(module, old_rev)
|
||||
m.assert_called_once_with(old_rev, new_rev)
|
||||
@@ -249,11 +236,11 @@ async def test_checkout(mocker, repo):
|
||||
@pytest.mark.asyncio
|
||||
async def test_checkout_ctx_manager(mocker, repo):
|
||||
commit = "c950fc05a540dd76b944719c2a3302da2e2f3090"
|
||||
m = mocker.patch.object(repo, "_checkout", autospec=True, return_value=async_return(None))
|
||||
m = mocker.patch.object(repo, "_checkout", autospec=True, return_value=None)
|
||||
old_commit = repo.commit
|
||||
async with repo.checkout(commit):
|
||||
m.assert_called_with(commit, force_checkout=False)
|
||||
m.return_value = async_return(None)
|
||||
m.return_value = None
|
||||
|
||||
m.assert_called_with(old_commit, force_checkout=False)
|
||||
|
||||
@@ -261,7 +248,7 @@ async def test_checkout_ctx_manager(mocker, repo):
|
||||
@pytest.mark.asyncio
|
||||
async def test_checkout_await(mocker, repo):
|
||||
commit = "c950fc05a540dd76b944719c2a3302da2e2f3090"
|
||||
m = mocker.patch.object(repo, "_checkout", autospec=True, return_value=async_return(None))
|
||||
m = mocker.patch.object(repo, "_checkout", autospec=True, return_value=None)
|
||||
await repo.checkout(commit)
|
||||
|
||||
m.assert_called_once_with(commit, force_checkout=False)
|
||||
@@ -293,7 +280,7 @@ async def test_clone_without_branch(mocker, repo):
|
||||
repo.commit = ""
|
||||
m = _mock_run(mocker, repo, 0)
|
||||
_mock_setup_repo(mocker, repo, commit)
|
||||
mocker.patch.object(repo, "current_branch", autospec=True, return_value=async_return(branch))
|
||||
mocker.patch.object(repo, "current_branch", autospec=True, return_value=branch)
|
||||
|
||||
await repo.clone()
|
||||
|
||||
@@ -309,10 +296,8 @@ async def test_update(mocker, repo):
|
||||
new_commit = "a0ccc2390883c85a361f5a90c72e1b07958939fa"
|
||||
m = _mock_run(mocker, repo, 0)
|
||||
_mock_setup_repo(mocker, repo, new_commit)
|
||||
mocker.patch.object(
|
||||
repo, "latest_commit", autospec=True, return_value=async_return(old_commit)
|
||||
)
|
||||
mocker.patch.object(repo, "hard_reset", autospec=True, return_value=async_return(None))
|
||||
mocker.patch.object(repo, "latest_commit", autospec=True, return_value=old_commit)
|
||||
mocker.patch.object(repo, "hard_reset", autospec=True, return_value=None)
|
||||
ret = await repo.update()
|
||||
|
||||
assert ret == (old_commit, new_commit)
|
||||
|
||||
Reference in New Issue
Block a user