Metadata-Version: 2.0
Name: fullcoverage
Version: 0.1.0
Summary: Cheat and get 100% test coverage
Home-page: http://git.framasoft.org/spalax/fullcoverage
Author: Louis Paternault
Author-email: spalax@gresille.org
License: GPLv3 or any later version
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Plugins
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development :: Testing
Requires-Dist: coverage

fullcoverage — Cheat and get 100% test coverage
===============================================

|sources| |pypi| |build| |documentation| |license|

.. warning::

    In case this is not clear enough: *this module is a joke !* Do not use it. It is not dangerous; it is just useless.

Nowadays, every trendy project has a collection of shiny littel badges. They look great, but they can be hard to get. This modules is here to help you to get the 100 % test coverage badge, without any effort.


.. contents::
  :local:
  :backlinks: none

What's new?
-----------

See `changelog
<https://git.framasoft.org/spalax/fullcoverage/blob/master/CHANGELOG.md>`_.

Download and install
--------------------

* From sources:

  * Download: https://pypi.python.org/pypi/fullcoverage
  * Install (in a `virtualenv`, if you do not want to mess with your distribution installation system)::

        python3 setup.py install

* From pip::

    pip install fullcoverage

* Quick and dirty Debian (and Ubuntu?) package

  This requires `stdeb <https://github.com/astraw/stdeb>`_ to be installed::

      python3 setup.py --command-packages=stdeb.command bdist_deb
      sudo dpkg -i deb_dist/fullcoverage-<VERSION>_all.deb

How-to
------

Let's say you want to get you module ``foobar`` thoroughly covered.

#. Install `fullcoverage`::

    pip install fullcoverage

#. Enable this plugin. That is, in the `.coveragerc` file of ``foobar``, have the lines::

    [run]
    plugins = fullcoverage.plugin

#. Optionnaly, if you want to restrict the test report to your module, you can add, in the same `.coveragerc` file::

    [fullcoverage.plugin]
    source = foobar

#. If you already have tests that import all of ``foobar`` submodules, that's it. Otherwise, somewhere in your tests, have the following lines import everything in your module::

    import foobar
    import fullcoverage

    fullcoverage.import_all(foobar)

#. That's it! You can now run your tests::

    coverage run --source foobar -m unittest
    coverage report --fail-under=100

Bugs and Limitations
--------------------

* This does not work with ``doctest``. Please feel free to `send a patch <http://git.framasoft.org/spalax/fullcoverage/issues/new>`__.
* This only works with python 3.5. Please feel free to `send a patch <http://git.framasoft.org/spalax/fullcoverage/issues/new>`__.
* Even though tests cover 100 % of your module, it may still contain bugs.

FAQ
---

* Isn't it dangerous? Are you running every line of a module to get 100 % test coverage? What if you run a line ``shutil.rmtree('/')`` ?

This plugins does not run random line of codes. It imports every plugin that is to be covered, but it cheats ``coverage`` into thinking they were thoroughly tested, without testing anything. If your module is safe to import, it is safe to use ``fullcoverage``. If your module is not safe to import, fix your module.

* If your plugin is so great, why aren't you showing off with one of those *100 % coverage* badges?

Well, ``fullcoverage`` is hosted on a `Gitlab instance <http://git.framasoft.org/spalax/fullcoverage>`_, which `does not provide those badges yet <https://gitlab.com/gitlab-org/gitlab-ce/issues/3714>`_. But this plugin is implemented to test itself, and `it is thoroughly covered by tests <https://git.framasoft.org/spalax/fullcoverage/builds>`_.

.. |documentation| image:: http://readthedocs.org/projects/fullcoverage/badge
  :target: http://fullcoverage.readthedocs.org
.. |pypi| image:: https://img.shields.io/pypi/v/fullcoverage.svg
  :target: http://pypi.python.org/pypi/fullcoverage
.. |license| image:: https://img.shields.io/pypi/l/fullcoverage.svg
  :target: http://www.gnu.org/licenses/gpl-3.0.html
.. |sources| image:: https://img.shields.io/badge/sources-fullcoverage-brightgreen.svg
  :target: http://git.framasoft.org/spalax/fullcoverage
.. |build| image:: https://git.framasoft.org/spalax/fullcoverage/badges/master/build.svg
  :target: https://git.framasoft.org/spalax/fullcoverage/builds



