Metadata-Version: 2.1
Name: flake8-assertive
Version: 1.0.0
Summary: Flake8 unittest assert method checker
Home-page: https://github.com/jparise/flake8-assertive
Author: Jon Parise
Author-email: jon@indelible.org
License: MIT
Download-URL: https://github.com/jparise/flake8-assertive/tarball/1.0.0
Keywords: flake8 testing unittest assert
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Framework :: Flake8
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Testing :: Unit
Requires-Dist: flake8

=================================
Flake8 Unittest Assertion Checker
=================================

|PyPI Version| |Python Versions|

``flake8-assertive`` is a `Flake8 <http://flake8.pycqa.org/>`_ extension that
encourages using more specific `unittest`_ assertions beyond just the typical
``assertEqual(a, b)`` and ``assertTrue(x)`` methods. The alternate methods
suggested by this extension perform more precise checks and provide better
failure messages than the generic methods.

+-----------------------------------+-------------------------------+-------+
| Original                          | Suggestion                    | Code  |
+===================================+===============================+=======+
| ``assertTrue(a == b)``            | ``assertEqual(a, b)``         | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a != b)``            | ``assertNotEqual(a, b)``      | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a == b)``           | ``assertNotEqual(a, b)``      | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a != b)``           | ``assertEqual(a, b)``         | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a < b)``             | ``assertLess(a, b)``          | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a <= b)``            | ``assertLessEqual(a, b)``     | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a > b)``             | ``assertGreater(a, b)``       | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a >= b)``            | ``assertGreaterEqual(a, b)``  | A500  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a is b)``            | ``assertIs(a, b)``            | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a is not b)``        | ``assertIsNot(a, b)``         | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a is b)``           | ``assertNotIs(a, b)``         | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a is not b)``       | ``assertIs(a, b)``            | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a in b)``            | ``assertIn(a, b)``            | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a in b)``           | ``assertNotIn(a, b)``         | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(isinstance(a, b))``  | ``assertIsInstance(a, b)``    | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(isinstance(a, b))`` | ``assertNotIsInstance(a, b)`` | A501  |
+-----------------------------------+-------------------------------+-------+
| ``assertEqual(a, None)``          | ``assertIsNone(a)``           | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertNotEqual(a, None)``       | ``assertIsNotNone(a)``        | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a is None)``         | ``assertIsNone(a)``           | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertTrue(a is not None)``     | ``assertIsNotNone(a)``        | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a is None)``        | ``assertIsNotNone(a)``        | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertFalse(a is not None)``    | ``assertIsNone(a)``           | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertEqual(a, True)``          | ``assertTrue(a)``             | A502  |
+-----------------------------------+-------------------------------+-------+
| ``assertEqual(a, False)``         | ``assertFalse(a)``            | A502  |
+-----------------------------------+-------------------------------+-------+

Note that some suggestions are normalized forms of the original, such as when
a double-negative is used (``assertFalse(a != b)`` → ``assertEqual(a, b)``).
There aren't suggestions for things like ``assertFalse(a > b)``, which may or
may not be equivalent to ``assertLessEqual(a, b)``.


Installation
------------

Install from PyPI using ``pip``:

.. code-block:: sh

    $ pip install flake8-assertive

The extension will be activated automatically by ``flake8``. You can verify
that it has been loaded by inspecting the ``flake8 --version`` string.

.. code-block:: sh

    $ flake8 --version
    3.5.0 (assertive: 1.0.0, ...) CPython 2.7.15 on Darwin


Error Codes
-----------

This extension adds three new `error codes`__ (using the ``A50`` prefix):

- ``A500``: prefer *{func}* for '*{op}*' comparisons
- ``A501``: prefer *{func}* for '*{op}*' expressions
- ``A502``: prefer *{func}* instead of comparing to *{obj}*

.. __: http://flake8.pycqa.org/en/latest/user/error-codes.html

Configuration
-------------

Configuration values are specified in the ``[flake8]`` section of your `config
file`_ or as command line arguments (e.g. ``--assertive-snakecase``).

- ``assertive-snakecase``: suggest snake_case assert method names
  (e.g. ``assert_true()``) instead of the standard names (e.g. ``assertTrue()``)
- ``assertive-test-pattern``: `fnmatch`_ pattern for identifying unittest test
  files (and all other files will be skipped)

.. _fnmatch: https://docs.python.org/library/fnmatch.html
.. _unittest: https://docs.python.org/library/unittest.html
.. _config file: http://flake8.pycqa.org/en/latest/user/configuration.html

.. |PyPI Version| image:: https://img.shields.io/pypi/v/flake8-assertive.svg
   :target: https://pypi.python.org/pypi/flake8-assertive
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/flake8-assertive.svg
   :target: https://pypi.python.org/pypi/flake8-assertive


Changes
=======

1.0.0 (2018-06-04)
------------------

* Suggest ``assertIsNone(a)`` for ``assertTrue(a is None)``, etc.
* Recognize ``assertEquals()`` and ``assertNotEquals()`` as aliases for
  ``assertEqual()`` and ``assertNotEqual()``.

0.9.0 (2018-05-14)
------------------

* Initial beta release


