Merge pull request #8092 from cmecklenborg/pytester_refactor_test_pastebin
Migrate test_pastebin.py from testdir to pytester
This commit is contained in:
commit
954151cdbd
|
@ -3,6 +3,8 @@ from typing import List
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from _pytest.monkeypatch import MonkeyPatch
|
||||||
|
from _pytest.pytester import Pytester
|
||||||
|
|
||||||
|
|
||||||
class TestPasteCapture:
|
class TestPasteCapture:
|
||||||
|
@ -13,11 +15,11 @@ class TestPasteCapture:
|
||||||
monkeypatch.setattr(plugin, "create_new_paste", pastebinlist.append)
|
monkeypatch.setattr(plugin, "create_new_paste", pastebinlist.append)
|
||||||
return pastebinlist
|
return pastebinlist
|
||||||
|
|
||||||
def test_failed(self, testdir, pastebinlist):
|
def test_failed(self, pytester: Pytester, pastebinlist) -> None:
|
||||||
testpath = testdir.makepyfile(
|
testpath = pytester.makepyfile(
|
||||||
"""
|
"""
|
||||||
import pytest
|
import pytest
|
||||||
def test_pass():
|
def test_pass() -> None:
|
||||||
pass
|
pass
|
||||||
def test_fail():
|
def test_fail():
|
||||||
assert 0
|
assert 0
|
||||||
|
@ -25,16 +27,16 @@ class TestPasteCapture:
|
||||||
pytest.skip("")
|
pytest.skip("")
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
reprec = testdir.inline_run(testpath, "--pastebin=failed")
|
reprec = pytester.inline_run(testpath, "--pastebin=failed")
|
||||||
assert len(pastebinlist) == 1
|
assert len(pastebinlist) == 1
|
||||||
s = pastebinlist[0]
|
s = pastebinlist[0]
|
||||||
assert s.find("def test_fail") != -1
|
assert s.find("def test_fail") != -1
|
||||||
assert reprec.countoutcomes() == [1, 1, 1]
|
assert reprec.countoutcomes() == [1, 1, 1]
|
||||||
|
|
||||||
def test_all(self, testdir, pastebinlist):
|
def test_all(self, pytester: Pytester, pastebinlist) -> None:
|
||||||
from _pytest.pytester import LineMatcher
|
from _pytest.pytester import LineMatcher
|
||||||
|
|
||||||
testpath = testdir.makepyfile(
|
testpath = pytester.makepyfile(
|
||||||
"""
|
"""
|
||||||
import pytest
|
import pytest
|
||||||
def test_pass():
|
def test_pass():
|
||||||
|
@ -45,7 +47,7 @@ class TestPasteCapture:
|
||||||
pytest.skip("")
|
pytest.skip("")
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
reprec = testdir.inline_run(testpath, "--pastebin=all", "-v")
|
reprec = pytester.inline_run(testpath, "--pastebin=all", "-v")
|
||||||
assert reprec.countoutcomes() == [1, 1, 1]
|
assert reprec.countoutcomes() == [1, 1, 1]
|
||||||
assert len(pastebinlist) == 1
|
assert len(pastebinlist) == 1
|
||||||
contents = pastebinlist[0].decode("utf-8")
|
contents = pastebinlist[0].decode("utf-8")
|
||||||
|
@ -59,17 +61,17 @@ class TestPasteCapture:
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_non_ascii_paste_text(self, testdir, pastebinlist):
|
def test_non_ascii_paste_text(self, pytester: Pytester, pastebinlist) -> None:
|
||||||
"""Make sure that text which contains non-ascii characters is pasted
|
"""Make sure that text which contains non-ascii characters is pasted
|
||||||
correctly. See #1219.
|
correctly. See #1219.
|
||||||
"""
|
"""
|
||||||
testdir.makepyfile(
|
pytester.makepyfile(
|
||||||
test_unicode="""\
|
test_unicode="""\
|
||||||
def test():
|
def test():
|
||||||
assert '☺' == 1
|
assert '☺' == 1
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
result = testdir.runpytest("--pastebin=all")
|
result = pytester.runpytest("--pastebin=all")
|
||||||
expected_msg = "*assert '☺' == 1*"
|
expected_msg = "*assert '☺' == 1*"
|
||||||
result.stdout.fnmatch_lines(
|
result.stdout.fnmatch_lines(
|
||||||
[
|
[
|
||||||
|
@ -87,7 +89,7 @@ class TestPaste:
|
||||||
return request.config.pluginmanager.getplugin("pastebin")
|
return request.config.pluginmanager.getplugin("pastebin")
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mocked_urlopen_fail(self, monkeypatch):
|
def mocked_urlopen_fail(self, monkeypatch: MonkeyPatch):
|
||||||
"""Monkeypatch the actual urlopen call to emulate a HTTP Error 400."""
|
"""Monkeypatch the actual urlopen call to emulate a HTTP Error 400."""
|
||||||
calls = []
|
calls = []
|
||||||
|
|
||||||
|
@ -102,7 +104,7 @@ class TestPaste:
|
||||||
return calls
|
return calls
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mocked_urlopen_invalid(self, monkeypatch):
|
def mocked_urlopen_invalid(self, monkeypatch: MonkeyPatch):
|
||||||
"""Monkeypatch the actual urlopen calls done by the internal plugin
|
"""Monkeypatch the actual urlopen calls done by the internal plugin
|
||||||
function that connects to bpaste service, but return a url in an
|
function that connects to bpaste service, but return a url in an
|
||||||
unexpected format."""
|
unexpected format."""
|
||||||
|
@ -124,7 +126,7 @@ class TestPaste:
|
||||||
return calls
|
return calls
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mocked_urlopen(self, monkeypatch):
|
def mocked_urlopen(self, monkeypatch: MonkeyPatch):
|
||||||
"""Monkeypatch the actual urlopen calls done by the internal plugin
|
"""Monkeypatch the actual urlopen calls done by the internal plugin
|
||||||
function that connects to bpaste service."""
|
function that connects to bpaste service."""
|
||||||
calls = []
|
calls = []
|
||||||
|
@ -144,7 +146,7 @@ class TestPaste:
|
||||||
monkeypatch.setattr(urllib.request, "urlopen", mocked)
|
monkeypatch.setattr(urllib.request, "urlopen", mocked)
|
||||||
return calls
|
return calls
|
||||||
|
|
||||||
def test_pastebin_invalid_url(self, pastebin, mocked_urlopen_invalid):
|
def test_pastebin_invalid_url(self, pastebin, mocked_urlopen_invalid) -> None:
|
||||||
result = pastebin.create_new_paste(b"full-paste-contents")
|
result = pastebin.create_new_paste(b"full-paste-contents")
|
||||||
assert (
|
assert (
|
||||||
result
|
result
|
||||||
|
@ -152,12 +154,12 @@ class TestPaste:
|
||||||
)
|
)
|
||||||
assert len(mocked_urlopen_invalid) == 1
|
assert len(mocked_urlopen_invalid) == 1
|
||||||
|
|
||||||
def test_pastebin_http_error(self, pastebin, mocked_urlopen_fail):
|
def test_pastebin_http_error(self, pastebin, mocked_urlopen_fail) -> None:
|
||||||
result = pastebin.create_new_paste(b"full-paste-contents")
|
result = pastebin.create_new_paste(b"full-paste-contents")
|
||||||
assert result == "bad response: HTTP Error 400: Bad request"
|
assert result == "bad response: HTTP Error 400: Bad request"
|
||||||
assert len(mocked_urlopen_fail) == 1
|
assert len(mocked_urlopen_fail) == 1
|
||||||
|
|
||||||
def test_create_new_paste(self, pastebin, mocked_urlopen):
|
def test_create_new_paste(self, pastebin, mocked_urlopen) -> None:
|
||||||
result = pastebin.create_new_paste(b"full-paste-contents")
|
result = pastebin.create_new_paste(b"full-paste-contents")
|
||||||
assert result == "https://bpaste.net/show/3c0c6750bd"
|
assert result == "https://bpaste.net/show/3c0c6750bd"
|
||||||
assert len(mocked_urlopen) == 1
|
assert len(mocked_urlopen) == 1
|
||||||
|
@ -169,7 +171,7 @@ class TestPaste:
|
||||||
assert "code=full-paste-contents" in data.decode()
|
assert "code=full-paste-contents" in data.decode()
|
||||||
assert "expiry=1week" in data.decode()
|
assert "expiry=1week" in data.decode()
|
||||||
|
|
||||||
def test_create_new_paste_failure(self, pastebin, monkeypatch):
|
def test_create_new_paste_failure(self, pastebin, monkeypatch: MonkeyPatch) -> None:
|
||||||
import io
|
import io
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue