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:
Michael H
2020-01-01 19:26:32 -05:00
committed by GitHub
parent 22268eed9d
commit a80e20067c
21 changed files with 655 additions and 225 deletions

View File

@@ -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)