A pytest fixture for testing flake8 plugins.
Project description
A pytest fixture for testing flake8 plugins.
A quick example:
def test_simple_run(flake8dir):
flake8dir.make_py_files(
example="""
x = 1
"""
)
result = flake8dir.run_flake8()
assert result.out_lines == [
'./example.py:1:2: E221 multiple spaces before operator'
]
Installation
Use pip:
pip install pytest-flake8dir
Tested on Python 2.7 and Python 3.6.
API
flake8dir fixture
A pytest fixture that wraps Pytest’s built-in tmpdir fixture (docs), to create a temporary directory, allow adding files, and running flake8.
flake8dir.make_py_files(**kwargs)
Creates one python file for each passed keyword argument, with name corresponding to the keyword argument + ‘.py’, and content according the string value of the argument. The value will be processed with textwrap.dedent() so indentation is not a problem when writing tests.
For example, this creates two python files in the temporary directory, called example1.py and example2.py, each containing one line with an assignment:
def test_sample(flake8dir):
flake8dir.make_py_files(
example1="""
x = 1
""",
example2="""
y = 1
"""
)
flake8dir.make_setup_cfg(contents)
Makes the file setup.cfg in the test directory with contents equal to the string passed in. This is again processed with textwrap.dedent() so indentation is not a worry. You’ll probably want to set the [flake8] section header to configure flake8.
For example, this makes flake8 ignore rule E101:
def test_sample(flake8dir):
flake8dir.make_setup_cfg("""
[flake8]
ignore = E101
""")
flake8dir.run_flake8(extra_args=None)
Runs flake8 in the current process, and returns a Flake8Result representing the results.
extra_args may be a list of extra flags to pass to flake8, for example passing ['--ignore', 'E101'] would achieve the same thing as the above setup.cfg example. Note some arguments are already passed to ensure it runs in the same process without multiprocessing - see source.
Flake8Result
Represents the parsed output of a flake8 run.
Flake8Result.out
The full string of output generated by flake8.
Flake8Result.out_lines
A list of individual lines of output, without trailing newlines. This is the most useful tool for making assertions against.
For example, given a result you can check for a particular line being output:
result = flake8dir.run_flake8()
expected = './example.py:1:2: E221 multiple spaces before operator'
assert expected in result.out_lines
History
Pending Release
1.0.0 (2017-06-22)
First version with basic fixture supporting make_py_files, make_setup_cfg and run_flake8.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_flake8dir-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21f58f59b774eea4298ccc4c6d6b1e5a8b8320a21bdb60068b4c92eacb3a9b10 |
|
MD5 | d30530cc78eecd17befb0841d2da8607 |
|
BLAKE2b-256 | 364525e88ee4720eb2b42a1528fba570fd3c90018159081327bbf021a216ba3d |