Contributing guide

Dbbackup is a free license software where all help are welcomed. This documentation aims to help users or developers to bring their contributions to this project.

Submit a bug, issue or enhancement

All communication are made with GitHub issues. Do not hesitate to open a issue if:

  • You have an improvement idea
  • You found a bug
  • You’ve got a question
  • More generaly something seems wrong for you

Make a patch

We use GitHub pull requests for manage all patches. For a better handling of requests we advise you to:

  1. Fork the project and make a new branch
  2. Make your changes with tests if possible and documentation if needed
  3. Push changes to your fork repository and test it with Travis
  4. If succeed, open a pull request
  5. Upset us until we give you an answer


We advise you to launch it with Python 2 & 3 before push and try it in Travis. DBBackup uses a lot of file operations, so breaks between Python versions are easy.

Test environment

We provides tools for helps developers to quickly test and dev on DBBackup. There are 2 majors scripts:

  • Unit tests launcher and equivalent of in the test project.
  • Shell script that use to create a database backup and restore it, the same with media, and test if they are restored.

You can test code in local machine with the script:


But if argument are provided, it acts as so you can simply launch other command to test deeply, example:

# Enter in Python shell
python shell

# Launch a particular test module
python test dbbackup.tests.test_utils

All tests are stored in dbbackup.tests.

It tests at the higher level if backup/restore mechanism is alright. It becomes powerful because of the configuration you can give to it. See the next chapter for explanation about it.


DBBackup contains a test Django project at dbbackup.tests and its settings module. This configuration takes care of the following environment variables:

DATABASE_URL - Default: 'sqlite:///%s' % tempfile.mktemp()

A URL representing the used database, see DJ-Database-URL for all the available format.

MEDIA_ROOT - Default= tempfile.mkdtemp()

Django’s MEDIA_ROOT, useful if you want test media backup from filesystem

STORAGE - Default: dbbackup.tests.utils.FakeStorage

Storage used for backups


Options for instanciate the chosen storage. It must be in format "key1=foo,key2=bar" and will be convert into a dict.

Online CI

We use Travis for tests Dbbackup with a matrix of components’ version: Several version of Django and several versions of Python including 2, 3 and PyPy.

Code coverage is ensured with Coveralls and has not yet minimum coverage limit.

Code health is checked with Landscape

Code Health