Skip to content

Commit

Permalink
Update supported Python versions
Browse files Browse the repository at this point in the history
Drop support for Python 3.6 and add support for Python 3.10.
  • Loading branch information
John Franey committed Sep 11, 2022
1 parent 1ce14e0 commit 5fa3c06
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 114 deletions.
132 changes: 50 additions & 82 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ include = [
]

[tool.poetry.dependencies]
python = "^3.6"
flake8 = ">=3.0"
python = ">=3.7"
flake8 = ">=5.0.0"

[tool.poetry.dev-dependencies]
pytest = "^5.0"
pytest = ">7.0"

[tool.poetry.scripts]
flake8-markdown = 'flake8_markdown:main'
Expand Down
61 changes: 33 additions & 28 deletions tests/test_flake8_markdown.py
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
import pytest
import subprocess
import sys
from flake8_markdown import __version__
from flake8_markdown.constants import SUBPROCESS_ARGS

FILE_WITH_ERRORS = 'tests/samples/basic.md'
FILE_WITHOUT_ERRORS = 'tests/samples/good.md'
FILE_WITH_EMPHASIZED_LINES = 'tests/samples/emphasized_lines.md'
FILE_WITH_PYCON_BLOCKS = 'tests/samples/pycon.md'
FILE_WITH_ERRORS = "tests/samples/basic.md"
FILE_WITHOUT_ERRORS = "tests/samples/good.md"
FILE_WITH_EMPHASIZED_LINES = "tests/samples/emphasized_lines.md"
FILE_WITH_PYCON_BLOCKS = "tests/samples/pycon.md"


@pytest.fixture
def run_flake8_markdown():
def do_run_flake8_markdown(*args):
process = subprocess.run(
('flake8-markdown',) + args,
("flake8-markdown",) + args,
**SUBPROCESS_ARGS,
)
return process

return do_run_flake8_markdown


def test_run_as_module():
flake8_markdown_process = subprocess.run(
['python', '-m', 'flake8_markdown'],
["python", "-m", "flake8_markdown"],
**SUBPROCESS_ARGS,
)
output = flake8_markdown_process.stderr
assert '__main__.py' in output
assert "__main__.py" in str(output)


def test_run_without_arguments(run_flake8_markdown):
flake8_markdown_process = run_flake8_markdown()
output = flake8_markdown_process.stderr
assert 'error: the following arguments are required: glob' in output
assert "error: the following arguments are required: glob" in output
return_code = flake8_markdown_process.returncode
assert return_code > 0


def test_run_with_non_matching_glob(run_flake8_markdown):
flake8_markdown_process = run_flake8_markdown('non_existant_file.md')
flake8_markdown_process = run_flake8_markdown("non_existant_file.md")
assert flake8_markdown_process.returncode == 0


Expand All @@ -49,13 +49,15 @@ def test_run_with_matching_single_file_with_linting_errors(run_flake8_markdown):

output = flake8_markdown_process.stdout
# PyPy reports a different column than Python for EOL errors
if 'PyPy' in sys.version:
assert 'tests/samples/basic.md:8:7: E999' in output
else:
assert 'tests/samples/basic.md:8:48: E999' in output
assert 'tests/samples/basic.md:14:7' in output
if "PyPy" in sys.version:
assert "tests/samples/basic.md:8:7: E999" in output
elif sys.version_info < (3, 10):
assert "tests/samples/basic.md:8:48: E999" in output
elif sys.version_info >= (3, 10):
assert "tests/samples/basic.md:8:8: E999" in output
assert "tests/samples/basic.md:14:7" in output
# this case covers the shorthand ```py
assert 'tests/samples/basic.md:20:1: F401' in output
assert "tests/samples/basic.md:20:1: F401" in output


def test_run_with_matching_single_file_wihout_linting_errors(run_flake8_markdown):
Expand All @@ -64,9 +66,7 @@ def test_run_with_matching_single_file_wihout_linting_errors(run_flake8_markdown


def test_run_with_multiple_files(run_flake8_markdown):
flake8_markdown_process = run_flake8_markdown(
FILE_WITH_ERRORS, FILE_WITHOUT_ERRORS
)
flake8_markdown_process = run_flake8_markdown(FILE_WITH_ERRORS, FILE_WITHOUT_ERRORS)
assert flake8_markdown_process.returncode == 1


Expand All @@ -75,7 +75,10 @@ def test_run_with_file_containing_emphasized_lines(run_flake8_markdown):
output = flake8_markdown_process.stdout
assert flake8_markdown_process.returncode == 1
# noqa:
assert "tests/samples/emphasized_lines.md:6:1: F821 undefined name 'emphasized_imaginary_function'" in output
assert (
"tests/samples/emphasized_lines.md:6:1: F821 undefined name 'emphasized_imaginary_function'"
in output
)


def test_run_with_file_containing_pycon_blocks(run_flake8_markdown):
Expand All @@ -85,24 +88,26 @@ def test_run_with_file_containing_pycon_blocks(run_flake8_markdown):
assert flake8_markdown_process.returncode == 1
error_count = len(output.splitlines())
assert error_count == 3
assert 'tests/samples/pycon.md:10:11: F821' in output
if 'PyPy' in sys.version:
assert 'tests/samples/pycon.md:17:1: E999' in output
else:
assert 'tests/samples/pycon.md:17:10: E999' in output
assert 'tests/samples/pycon.md:25:1: F821' in output
assert "tests/samples/pycon.md:10:11: F821" in output
if "PyPy" in sys.version:
assert "tests/samples/pycon.md:17:1: E999" in output
elif sys.version_info < (3, 10):
assert "tests/samples/pycon.md:17:10: E999" in output
elif sys.version_info >= (3, 10):
assert "tests/samples/pycon.md:17:2: E999" in output
assert "tests/samples/pycon.md:25:1: F821" in output


def test_run_with_glob(run_flake8_markdown):
flake8_markdown_process = run_flake8_markdown('tests/samples/*.md')
flake8_markdown_process = run_flake8_markdown("tests/samples/*.md")
assert flake8_markdown_process.returncode == 1
output = flake8_markdown_process.stdout
assert FILE_WITH_ERRORS in output
assert FILE_WITH_EMPHASIZED_LINES in output


def test_run_with_recursive_glob(run_flake8_markdown):
flake8_markdown_process = run_flake8_markdown('tests/**/*.md')
flake8_markdown_process = run_flake8_markdown("tests/**/*.md")
assert flake8_markdown_process.returncode == 1
output = flake8_markdown_process.stdout
assert FILE_WITH_ERRORS in output
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tox]
isolated_build = True
envlist = py37, py38, py39, pypy3
envlist = py37, py38, py39, py310, pypy3
skip_missing_interpreters = true

[tox:.package]
Expand Down

0 comments on commit 5fa3c06

Please sign in to comment.