Enable testing with Python 3.11 (#9511)

This commit is contained in:
Bruno Oliveira 2022-02-11 12:20:42 -03:00 committed by GitHub
parent 6828ec2f9b
commit b79eff065e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 47 additions and 9 deletions

View File

@ -37,6 +37,7 @@ jobs:
"windows-py38", "windows-py38",
"windows-py39", "windows-py39",
"windows-py310", "windows-py310",
"windows-py311",
"ubuntu-py37", "ubuntu-py37",
"ubuntu-py37-pluggy", "ubuntu-py37-pluggy",
@ -44,6 +45,7 @@ jobs:
"ubuntu-py38", "ubuntu-py38",
"ubuntu-py39", "ubuntu-py39",
"ubuntu-py310", "ubuntu-py310",
"ubuntu-py311",
"ubuntu-pypy3", "ubuntu-pypy3",
"macos-py37", "macos-py37",
@ -78,6 +80,10 @@ jobs:
python: "3.10" python: "3.10"
os: windows-latest os: windows-latest
tox_env: "py310-xdist" tox_env: "py310-xdist"
- name: "windows-py311"
python: "3.11-dev"
os: windows-latest
tox_env: "py311"
- name: "ubuntu-py37" - name: "ubuntu-py37"
python: "3.7" python: "3.7"
@ -104,6 +110,10 @@ jobs:
python: "3.10" python: "3.10"
os: ubuntu-latest os: ubuntu-latest
tox_env: "py310-xdist" tox_env: "py310-xdist"
- name: "ubuntu-py311"
python: "3.11-dev"
os: ubuntu-latest
tox_env: "py311"
- name: "ubuntu-pypy3" - name: "ubuntu-pypy3"
python: "pypy-3.7" python: "pypy-3.7"
os: ubuntu-latest os: ubuntu-latest

View File

@ -1026,7 +1026,7 @@ class TestAssert_reprcompare_attrsclass:
assert lines is None assert lines is None
def test_attrs_with_custom_eq(self) -> None: def test_attrs_with_custom_eq(self) -> None:
@attr.define @attr.define(slots=False)
class SimpleDataObject: class SimpleDataObject:
field_a = attr.ib() field_a = attr.ib()
@ -1648,7 +1648,7 @@ def test_raise_unprintable_assertion_error(pytester: Pytester) -> None:
) )
def test_raise_assertion_error_raisin_repr(pytester: Pytester) -> None: def test_raise_assertion_error_raising_repr(pytester: Pytester) -> None:
pytester.makepyfile( pytester.makepyfile(
""" """
class RaisingRepr(object): class RaisingRepr(object):
@ -1659,9 +1659,15 @@ def test_raise_assertion_error_raisin_repr(pytester: Pytester) -> None:
""" """
) )
result = pytester.runpytest() result = pytester.runpytest()
result.stdout.fnmatch_lines( if sys.version_info >= (3, 11):
["E AssertionError: <unprintable AssertionError object>"] # python 3.11 has native support for un-str-able exceptions
) result.stdout.fnmatch_lines(
["E AssertionError: <exception str() failed>"]
)
else:
result.stdout.fnmatch_lines(
["E AssertionError: <unprintable AssertionError object>"]
)
def test_issue_1944(pytester: Pytester) -> None: def test_issue_1944(pytester: Pytester) -> None:

View File

@ -1,4 +1,5 @@
import enum import enum
import sys
from functools import partial from functools import partial
from functools import wraps from functools import wraps
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
@ -91,6 +92,7 @@ def test_get_real_func_partial() -> None:
assert get_real_func(partial(foo)) is foo assert get_real_func(partial(foo)) is foo
@pytest.mark.skipif(sys.version_info >= (3, 11), reason="couroutine removed")
def test_is_generator_asyncio(pytester: Pytester) -> None: def test_is_generator_asyncio(pytester: Pytester) -> None:
pytester.makepyfile( pytester.makepyfile(
""" """

View File

@ -1,4 +1,5 @@
import inspect import inspect
import sys
import textwrap import textwrap
from pathlib import Path from pathlib import Path
from typing import Callable from typing import Callable
@ -200,6 +201,7 @@ class TestDoctests:
"Traceback (most recent call last):", "Traceback (most recent call last):",
' File "*/doctest.py", line *, in __run', ' File "*/doctest.py", line *, in __run',
" *", " *",
*((" *^^^^*",) if sys.version_info >= (3, 11) else ()),
' File "<doctest test_doctest_unexpected_exception.txt[1]>", line 1, in <module>', ' File "<doctest test_doctest_unexpected_exception.txt[1]>", line 1, in <module>',
"ZeroDivisionError: division by zero", "ZeroDivisionError: division by zero",
"*/test_doctest_unexpected_exception.txt:2: UnexpectedException", "*/test_doctest_unexpected_exception.txt:2: UnexpectedException",

View File

@ -1,6 +1,7 @@
import argparse import argparse
import os import os
import re import re
import sys
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
@ -44,16 +45,32 @@ def test_wrap_session_notify_exception(ret_exc, pytester: Pytester) -> None:
assert result.ret == ExitCode.INTERNAL_ERROR assert result.ret == ExitCode.INTERNAL_ERROR
assert result.stdout.lines[0] == "INTERNALERROR> Traceback (most recent call last):" assert result.stdout.lines[0] == "INTERNALERROR> Traceback (most recent call last):"
end_lines = (
result.stdout.lines[-4:]
if sys.version_info >= (3, 11)
else result.stdout.lines[-3:]
)
if exc == SystemExit: if exc == SystemExit:
assert result.stdout.lines[-3:] == [ assert end_lines == [
f'INTERNALERROR> File "{c1}", line 4, in pytest_sessionstart', f'INTERNALERROR> File "{c1}", line 4, in pytest_sessionstart',
'INTERNALERROR> raise SystemExit("boom")', 'INTERNALERROR> raise SystemExit("boom")',
*(
("INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^",)
if sys.version_info >= (3, 11)
else ()
),
"INTERNALERROR> SystemExit: boom", "INTERNALERROR> SystemExit: boom",
] ]
else: else:
assert result.stdout.lines[-3:] == [ assert end_lines == [
f'INTERNALERROR> File "{c1}", line 4, in pytest_sessionstart', f'INTERNALERROR> File "{c1}", line 4, in pytest_sessionstart',
'INTERNALERROR> raise ValueError("boom")', 'INTERNALERROR> raise ValueError("boom")',
*(
("INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^",)
if sys.version_info >= (3, 11)
else ()
),
"INTERNALERROR> ValueError: boom", "INTERNALERROR> ValueError: boom",
] ]
if returncode is False: if returncode is False:

View File

@ -743,8 +743,8 @@ def test_run_result_repr() -> None:
# known exit code # known exit code
r = pytester_mod.RunResult(1, outlines, errlines, duration=0.5) r = pytester_mod.RunResult(1, outlines, errlines, duration=0.5)
assert ( assert repr(r) == (
repr(r) == "<RunResult ret=ExitCode.TESTS_FAILED len(stdout.lines)=3" f"<RunResult ret={str(pytest.ExitCode.TESTS_FAILED)} len(stdout.lines)=3"
" len(stderr.lines)=4 duration=0.50s>" " len(stderr.lines)=4 duration=0.50s>"
) )

View File

@ -8,6 +8,7 @@ envlist =
py38 py38
py39 py39
py310 py310
py311
pypy3 pypy3
py37-{pexpect,xdist,unittestextras,numpy,pluggymain} py37-{pexpect,xdist,unittestextras,numpy,pluggymain}
doctesting doctesting