Contributing to nose2

Exhortation

Please do! nose2 cannot move forward without contributions from the testing community.

The Basics

nose2 is hosted on github. Our home there is https://github.com/nose-devs/nose2. We use github’s issue tracking and collaboration tools exclusively for managing nose2’s development. This means:

Get started

The bootstrap.sh script in the root of the nose2 distribution can be used to get a new local clone up and running quickly. It requires that you have virtualenvwrapper installed. Run this script once to set up a nose2 virtualenv, install nose2’s dependencies, and set up the git submodule that pulls in the Sphinx theme that the docs use.

Coding Guidelines

Our style is pep8 except: for consistency with unittest, please use CamelCase for class names, methods, attributes and function parameters that map directly to class attributes.

Beyond style, the main rule is: any patch that touches code must include tests. And of course all tests must pass under all supported versions of Python.

Fortunately that’s easy to check: nose2 uses tox to manage its test scenarios, so simply running tox in nose2’s root directory will run all of the tests with all supported python versions. When your patch gets all green, send a pull request!

Merging Guidelines

The github Merge Button(tm) should be used only for trivial changes. Other merges, even those that can be automatically merged, should be merged manually, so that you have an opportunity to run tests on the merged changes before pushing them. When you merge manually, please use --no-ff so that we have a record of all merges.

Also, core devs should not merge their own work – again, unless it’s trivial – without giving other developers a chance to review it. The basic workflow should be to do the work in a topic branch in your fork then post a pull request for that branch, whether you’re a core developer or other contributor.