RUNNING TESTS ------------- * WITHOUT VIRTUALENV Install Python Mock, nose and Mercurial and run: nosetests * WITH VIRTUALENV You can use virtualenv to set up a virtual environment for testing. This is useful in environments such as automated continuous integration process, where you want to isolate yourself from the global python environment and pick up new dependencies automatically. In order to set up the plugin tests for the first time, install virtualenv and run: python mercurial_reviewboard/tests/virtualenv/bootstrap.py ENV --no-site-packages or, optionally, target a particular version of Mercurial rather than the most recent one: HG_VERSION="Mercurial==1.4" python mercurial_reviewboard/tests/virtualenv/bootstrap.py ENV --no-site-packages In order to run the tests, run: ENV/bin/nosetests TEST DATA --------- The test directory is structured like this: +-tests/ +-diffs/ | +-<canonical diffs for testing> | +-repo_tars/ | +-<tar files containing testing repositories> | +-repos/ (generated by test runner) | +-<expanded repo tars> | +-scripts/ | +-<scripts that were used to create the diffs and repo tars> | +-<python scripts for unit and integration tests> There is a package-level setup function in mercurial_reviewboard.tests.__init__ that will automatically recreate the repos directory for every test run. Some tests use the diffs/ and repos/ data to exercise various aspects of the tool. When creating a new diff or repo for testing, place a shell script in the scripts directory with the appropriate logic and commit the script and the resulting diff or repo tar.