diff options
author | Bruno Oliveira <nicoddemus@gmail.com> | 2019-05-27 20:31:52 -0300 |
---|---|---|
committer | Bruno Oliveira <nicoddemus@gmail.com> | 2019-06-02 14:39:11 -0300 |
commit | 4d49ba65297102110ae8aeecdb3b82b23a231fba (patch) | |
tree | 10a917331db131a6728775ff7d462732ff1f9466 /testing/code | |
parent | 733f43b02eafe2934c2e86b7d0370e25dfe95a48 (diff) | |
download | pytest-4d49ba65297102110ae8aeecdb3b82b23a231fba.tar.gz |
Drop Python 2.7 and 3.4 support
* Update setup.py requires and classifiers
* Drop Python 2.7 and 3.4 from CI
* Update docs dropping 2.7 and 3.4 support
* Fix mock imports and remove tests related to pypi's mock module
* Add py27 and 34 support docs to the sidebar
* Remove usage of six from tmpdir
* Remove six.PY* code blocks
* Remove sys.version_info related code
* Cleanup compat
* Remove obsolete safe_str
* Remove obsolete __unicode__ methods
* Remove compat.PY35 and compat.PY36: not really needed anymore
* Remove unused UNICODE_TYPES
* Remove Jython specific code
* Remove some Python 2 references from docs
Related to #5275
Diffstat (limited to 'testing/code')
-rw-r--r-- | testing/code/test_code.py | 33 | ||||
-rw-r--r-- | testing/code/test_excinfo.py | 37 | ||||
-rw-r--r-- | testing/code/test_source.py | 4 |
3 files changed, 19 insertions, 55 deletions
diff --git a/testing/code/test_code.py b/testing/code/test_code.py index 0b63fcf4d..fcde20b41 100644 --- a/testing/code/test_code.py +++ b/testing/code/test_code.py @@ -4,6 +4,7 @@ from __future__ import division from __future__ import print_function import sys +from unittest import mock from six import text_type from test_excinfo import TWMock @@ -11,11 +12,6 @@ from test_excinfo import TWMock import _pytest._code import pytest -try: - import mock -except ImportError: - import unittest.mock as mock - def test_ne(): code1 = _pytest._code.Code(compile('foo = "bar"', "", "exec")) @@ -92,21 +88,6 @@ def test_unicode_handling(): excinfo = pytest.raises(Exception, f) text_type(excinfo) - if sys.version_info < (3,): - bytes(excinfo) - - -@pytest.mark.skipif(sys.version_info[0] >= 3, reason="python 2 only issue") -def test_unicode_handling_syntax_error(): - value = u"ąć".encode("UTF-8") - - def f(): - raise SyntaxError("invalid syntax", (None, 1, 3, value)) - - excinfo = pytest.raises(Exception, f) - str(excinfo) - if sys.version_info[0] < 3: - text_type(excinfo) def test_code_getargs(): @@ -202,10 +183,8 @@ class TestReprFuncArgs(object): r = ReprFuncArgs(args) r.toterminal(tw) - if sys.version_info[0] >= 3: - assert ( - tw.lines[0] - == r"unicode_string = São Paulo, utf8_string = b'S\xc3\xa3o Paulo'" - ) - else: - assert tw.lines[0] == "unicode_string = São Paulo, utf8_string = São Paulo" + + assert ( + tw.lines[0] + == r"unicode_string = São Paulo, utf8_string = b'S\xc3\xa3o Paulo'" + ) diff --git a/testing/code/test_excinfo.py b/testing/code/test_excinfo.py index a76797301..33cd7169b 100644 --- a/testing/code/test_excinfo.py +++ b/testing/code/test_excinfo.py @@ -17,7 +17,7 @@ import pytest from _pytest._code.code import ExceptionChainRepr from _pytest._code.code import ExceptionInfo from _pytest._code.code import FormattedExcinfo -from _pytest._code.code import ReprExceptionInfo + try: import importlib @@ -26,8 +26,6 @@ except ImportError: else: invalidate_import_caches = getattr(importlib, "invalidate_caches", None) -failsonjython = pytest.mark.xfail("sys.platform.startswith('java')") - pytest_version_info = tuple(map(int, pytest.__version__.split(".")[:3])) @@ -146,7 +144,6 @@ class TestTraceback_f_g_h(object): assert s.startswith("def f():") assert s.endswith("raise ValueError") - @failsonjython def test_traceback_entry_getsource_in_construct(self): source = _pytest._code.Source( """\ @@ -500,8 +497,7 @@ class TestFormattedExcinfo(object): excinfo = _pytest._code.ExceptionInfo.from_current() repr = pr.repr_excinfo(excinfo) assert repr.reprtraceback.reprentries[1].lines[0] == "> ???" - if sys.version_info[0] >= 3: - assert repr.chain[0][0].reprentries[1].lines[0] == "> ???" + assert repr.chain[0][0].reprentries[1].lines[0] == "> ???" def test_repr_many_line_source_not_existing(self): pr = FormattedExcinfo() @@ -519,8 +515,7 @@ raise ValueError() excinfo = _pytest._code.ExceptionInfo.from_current() repr = pr.repr_excinfo(excinfo) assert repr.reprtraceback.reprentries[1].lines[0] == "> ???" - if sys.version_info[0] >= 3: - assert repr.chain[0][0].reprentries[1].lines[0] == "> ???" + assert repr.chain[0][0].reprentries[1].lines[0] == "> ???" def test_repr_source_failing_fullsource(self): pr = FormattedExcinfo() @@ -577,14 +572,12 @@ raise ValueError() fail = IOError() repr = pr.repr_excinfo(excinfo) assert repr.reprtraceback.reprentries[0].lines[0] == "> ???" - if sys.version_info[0] >= 3: - assert repr.chain[0][0].reprentries[0].lines[0] == "> ???" + assert repr.chain[0][0].reprentries[0].lines[0] == "> ???" fail = py.error.ENOENT # noqa repr = pr.repr_excinfo(excinfo) assert repr.reprtraceback.reprentries[0].lines[0] == "> ???" - if sys.version_info[0] >= 3: - assert repr.chain[0][0].reprentries[0].lines[0] == "> ???" + assert repr.chain[0][0].reprentries[0].lines[0] == "> ???" def test_repr_local(self): p = FormattedExcinfo(showlocals=True) @@ -828,9 +821,9 @@ raise ValueError() repr = p.repr_excinfo(excinfo) assert repr.reprtraceback assert len(repr.reprtraceback.reprentries) == len(reprtb.reprentries) - if sys.version_info[0] >= 3: - assert repr.chain[0][0] - assert len(repr.chain[0][0].reprentries) == len(reprtb.reprentries) + + assert repr.chain[0][0] + assert len(repr.chain[0][0].reprentries) == len(reprtb.reprentries) assert repr.reprcrash.path.endswith("mod.py") assert repr.reprcrash.message == "ValueError: 0" @@ -916,13 +909,11 @@ raise ValueError() for style in ("short", "long", "no"): for showlocals in (True, False): repr = excinfo.getrepr(style=style, showlocals=showlocals) - if sys.version_info[0] < 3: - assert isinstance(repr, ReprExceptionInfo) assert repr.reprtraceback.style == style - if sys.version_info[0] >= 3: - assert isinstance(repr, ExceptionChainRepr) - for repr in repr.chain: - assert repr[0].style == style + + assert isinstance(repr, ExceptionChainRepr) + for repr in repr.chain: + assert repr[0].style == style def test_reprexcinfo_unicode(self): from _pytest._code.code import TerminalRepr @@ -1133,7 +1124,6 @@ raise ValueError() msg.endswith("mod.py") assert tw.lines[20] == ":9: ValueError" - @pytest.mark.skipif("sys.version_info[0] < 3") def test_exc_chain_repr(self, importasmod): mod = importasmod( """ @@ -1219,7 +1209,6 @@ raise ValueError() assert line.endswith("mod.py") assert tw.lines[47] == ":15: AttributeError" - @pytest.mark.skipif("sys.version_info[0] < 3") @pytest.mark.parametrize("mode", ["from_none", "explicit_suppress"]) def test_exc_repr_chain_suppression(self, importasmod, mode): """Check that exc repr does not show chained exceptions in Python 3. @@ -1261,7 +1250,6 @@ raise ValueError() assert tw.lines[9] == ":6: AttributeError" assert len(tw.lines) == 10 - @pytest.mark.skipif("sys.version_info[0] < 3") @pytest.mark.parametrize( "reason, description", [ @@ -1321,7 +1309,6 @@ raise ValueError() ] ) - @pytest.mark.skipif("sys.version_info[0] < 3") def test_exc_chain_repr_cycle(self, importasmod): mod = importasmod( """ diff --git a/testing/code/test_source.py b/testing/code/test_source.py index 0a2a98c02..b86d18d0c 100644 --- a/testing/code/test_source.py +++ b/testing/code/test_source.py @@ -16,8 +16,6 @@ import _pytest._code import pytest from _pytest._code import Source -failsonjython = pytest.mark.xfail("sys.platform.startswith('java')") - def test_source_str_function(): x = Source("3") @@ -122,7 +120,7 @@ def test_source_strip_multiline(): def test_syntaxerror_rerepresentation(): ex = pytest.raises(SyntaxError, _pytest._code.compile, "xyz xyz") assert ex.value.lineno == 1 - assert ex.value.offset in (4, 5, 7) # XXX pypy/jython versus cpython? + assert ex.value.offset == 7 assert ex.value.text.strip(), "x x" |