Commits

eduardo schettino committed 3d8474a

added README file

Comments (0)

Files changed (3)

+================
+README
+================
+
+
+pytest-incremental
+====================
+
+an incremental test runner (pytest plugin)
+
+
+What is an "incremental test runner" ?
+=======================================
+
+When talking about build-tools it is common to refer to the terms:
+
+ * initial (full) build - all files are compiled
+ * incremental build (or partial rebuild) - just changed files are compiled
+ * no-op build - no files are compiled (none changed since last execution)
+
+So an "incremental test runner" will only re-execute tests that were affected
+by changes in the source code since last test execution.
+
+
+How it works ?
+================
+
+`pytest-incremental` is a `pytest <http://pytest.org/>`_ plugin. So if you can run your test suite with pytest you can use `pytest-incremental`.
+
+The plugin will analyse your python source files and through its imports define the dependencies of the modules. `doit <http://python-doit.sourceforge.net>`_ is used to keep track of the dependencies and save results. The plugin will modify how pytest collect your tests. pytest do the rest of the job of actually running the tests and reporting the results.
+
+
+Install
+=========
+
+pytest-incremental is tested on python 2.6, 2.7.
+
+``pip install pytest-incremental```
+
+``python setup.py install``
+
+local installation
+--------------------
+
+You can also just grab the plugin `module <https://bitbucket.org/schettino72/pytest-incremental/src/tip/pytest_incremental.py>`_ file and put in your project path. Then enable it (check `pytest docs <http://pytest.org/plugins.html#requiring-loading-plugins-in-a-test-module-or-conftest-file>`_).
+
+
+Usage
+======
+
+Just pass the parameter ``--incremental`` when calling from the command line::
+
+  $ py.test --incremental
+
+
+You can also enable it by default adding the following line to your ``pytest.ini``::
+
+  [pytest]
+  addopts = --incremental
+
+
+watched packages
+------------------
+
+By default all modules collected by pytest will used as dependencies if imported. In order to limit or extend the watched folders you must use the parameter ``--watch-pkg``
+
+
+Limitations
+==============
+
+``pytest-incremental`` looks for imports recursively to find dependencies (using AST). But given the very dynamic nature of python there are still some cases that a module can be affected by a module that are not detected.
+
+ * `from package import *` modules imported from __all__ in a package are not counted as a dependency
+ * modules imported not using the *import* statement
+ * modules not explictitly imported but used at runtime (i.e. conftest.py when running your tests with pytest)
+ * monkey-patching. (i.e. A imports X.  B monkey-patches X. In this case A might depend on B)
+ * others ?
+
+
+Project Details
+===============
+
+ - Project code + issue track on `bitbucket <https://bitbucket.org/schettino72/pytest-incremental>`_
+ - `Discussion group <http://groups.google.co.in/group/python-doit>`_

pytest_incremental.py

+"""
+pytest-incremental : an incremental test runner (pytest plugin)
+
+The MIT License - see LICENSE file
+Copyright (c) 2011 Eduardo Naufel Schettino
+"""
+
+__version__ = (0, 1, 0)
+
 import os
 import sys
 import ast
 from distutils.core import setup
 
+_readme = open('README', 'r')
+README_TEXT = _readme.read()
+_readme.close()
+
 setup(name = 'pytest-incremental',
-      description = 'a pytest plugin to collect only "outdated" test files',
-      version = '0.1.dev',
+      description = 'an incremental test runner (pytest plugin)',
+      version = '0.1.0',
       license = 'MIT',
       author = 'Eduardo Naufel Schettino',
       author_email = 'schettino72@gmail.com',
       entry_points = {
         'pytest11': ['pytest_incremental = pytest_incremental'],
         },
+      long_description = README_TEXT,
       )
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.