All Projects → jbochi → bazinga

jbochi / bazinga

Licence: MIT license
Bazinga is an incremental test runner plugin for nose

Programming Languages

python
139335 projects - #7 most used programming language

Bazinga

Bazinga is a nose plugin that does dependency analysis to run incremental tests.

Motivation

Running the complete test suite on large projects can take a significantly large time. This can affect your work flow, specially if you are doing TDD. Some people choose to run only a subset of the tests, specifying them explicitly on the command line, but you can easily forget to run affected tests after any particular change and things can break unnoticed. Using "bazinga" you can rest assured that all (and only) the affected tests will be run. It was inspired by the continuous integration system that Google built: http://googletesting.blogspot.com/2011/06/testing-at-speed-and-scale-of-google.html.

How it works

Statically inspecting what is imported by each module, "bazinga" recursively detects what are the dependencies for each test. Only tests that failed, were modified, or had a file that they depend on changed, are run. Each time nose is run with bazinga, a md5 hash for each module that your project depends on will be stored on a file named .nosebazinga on the working directory. This file also contains a dependency graph that is used as cache. Bazinga will run all the tests that are needed if a third party package is updated, but the standard library is considered "stable" and is not checked for modifications.

Installation

pip install Bazinga

Usage

nosetests --with-bazinga

Debugging

nosetests --with-bazinga --debug=bazinga

Requirements

  • Nose
  • Snakefood

LICENSE

  • MIT License
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].