https://github.com/dcramer/quickunit
A Nose plugin which enables determining which tests to run based on the current git diff
https://github.com/dcramer/quickunit
Last synced: 9 months ago
JSON representation
A Nose plugin which enables determining which tests to run based on the current git diff
- Host: GitHub
- URL: https://github.com/dcramer/quickunit
- Owner: dcramer
- License: apache-2.0
- Created: 2012-02-04T02:47:48.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2013-07-29T21:32:55.000Z (over 12 years ago)
- Last Synced: 2025-03-15T15:17:41.306Z (10 months ago)
- Language: Python
- Homepage:
- Size: 120 KB
- Stars: 33
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
quickunit
=========
Given standard test setup, will determine which tests need to run against a given diff.
For example, say you're working in your branch called my-new-sexy-feature, which modifies the following files:
::
src/foo/bar/__init__.py
src/foo/bar/baz.py
src/foo/biz.py
If you're using a traditional test layout, we'll automatically add the following rule for you:
::
tests/{path}/test_{filename}
Otherwise you can add rules using regular expression syntax in combination with the path and filename formatters.
Now if we run with the default options, ``nosetests --with-quickunit``, it will look for tests (by default) in
the following base directories:
::
tests/src/foo/bar/test_baz.py
tests/src/foo/test_biz.py
(It does this by analyzing the diff against master, and determining which files you've changed
are tests, including them, and which files containing test coverage in a parallel directory.)
Config
------
If you want to support multiple directories for searching (let's say you break up unittests from integration tests)
you can do that as well:
::
--quickunit-rule=tests/{path}/test_{filename} --quickunit-rule=tests/{path}/{basename}/tests.py
Or, if you'd prefer, via ``setup.cfg``:
::
quickunit-rule = tests/{path}/test_{filename}
tests/{path}/{basename}/tests.py
Rules
-----
Rules are a combination of simple formatting a regular expressions.
The following formatted variables are available within a rule:
{path}
The base path of the filename (e.g. foo/bar)
{filename}
The filename excluding the path (e.g. baz.py)
{basename}
The filename excluding the extension (e.g. baz)
A rule is first formatted (using ``.format(params)``) and then compiled into a regular expression on top of each changed file.