Metadata-Version: 2.0
Name: pytest-reqs
Version: 0.0.2
Summary: pytest plugin to check pinned requirements
Home-page: https://github.com/di/pytest-reqs
Author: Dustin Ingram
Author-email: github@dustingram.com
License: MIT license
Platform: UNKNOWN
Classifier: Framework :: Pytest
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: pytest (>=2.4.2)

py.test plugin for checking requirements files
==================================================

Description
-----------

This plugin checks your requirements files for specific versions, and compares
those versions with the installed libraries in your environment, failing your
test suite if any are invalid or out of date.

This is useful for keeping virtual environments up-to-date, and ensuring that
your test suite is always being passed with the requirements you have
specified.

It also has the added bonus of verifying that your requirements files are
syntatically valid.

Usage
-----

install via::

    pip install pytest-reqs

if you then type::

    py.test --reqs

it will search for dependencies in the files matching:

- ``req*.txt``
- ``req*.pip``
- ``requirements/*.txt``
- ``requirements/*.pip``

and the declared dependencies will be checked against the current environment.

A little example
----------------

If your environment has dependencies installed like this::

    $ pip freeze
    foo==0.9.9

But you have a ``requirements.txt`` file like this::

    $ cat requirements.txt
    foo==1.0.0

you can run ``py.test`` with the plugin installed::

    $ py.test --reqs
    =================================== FAILURES ===================================
    ______________________________ requirements-check ______________________________
    Distribution "foo" requires foo==1.0.0 (from -r requirements.txt (line 1)) but 0.9.9 is installed

It also handles ``pip``'s version containment syntax (e.g, ``foo<=1.0.0``,
``foo>=1.0.0``, etc)::

    $ py.test --reqs
    =================================== FAILURES ===================================
    ______________________________ requirements-check ______________________________
    Distribution "foo" requires foo>=1.0.0 (from -r requirements.txt (line 1)) but 0.9.9 is installed

Furthermore, it will tell you if your requirements file is invalid (for
example, if there is not enough ``=`` symbols)::

    $ py.test --reqs
    ______________________________ requirements-check ______________________________
    Invalid requirement: 'foo=1.0.0' (from -r requirements.txt)

Configuring options
-------------------

Ignoring local projects
~~~~~~~~~~~~~~~~~~~~~~~

You might have requirements files with paths to local projects, e.g. for local
development::

    $ cat requirements/local_development.txt
    -e ../foo

However, testing these requirements will fail if the test environment is
missing the local project (e.g., on a CI build)::

    =================================== FAILURES ===================================
    ______________________________ requirements-check ______________________________
    ../foo should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+ (from -r requirements.txt)

To get around this, you can disable checking for local projects with the
following ``pytest`` option::

    # content of setup.cfg
    [pytest]
    reqsignorelocal = True

Running requirements checks and no other tests
----------------------------------------------

You can also restrict your test run to only perform "reqs" tests and not any
other tests by typing::

    py.test --reqs -m reqs

This will only run test items with the "reqs" marker which this plugin adds
dynamically.

Authors
-------

-  `Dustin Ingram <https://github.com/di>`__

License
-------

Open source MIT license.

Notes
-----

The repository of this plugin is at http://github.com/di/pytest-reqs.

For more info on py.test see http://pytest.org.


