Skip to content

Latest commit

 

History

History
70 lines (63 loc) · 2.97 KB

CONTRIBUTING.md

File metadata and controls

70 lines (63 loc) · 2.97 KB

CONTRIBUTING

Asking for help

If you are looking for help with setting up or using mons, or you have other questions about how the program works and how you can contribute, please use the #modding_help or #modding_dev channels in the Celeste Community Discord: https://discord.gg/celeste

Before contributing

  • Check the existing issues to see if your request has already been made.
    • If so, add a comment to describe how you plan to resolve it and request to have the issue assigned to you.
  • If an issue does not already exist, create one describing your request and how you plan on implementing it.

First time setup

  • Clone the GitHub repository locally
$ git clone https://github.com/coloursofnoise/mons.git
$ cd mons
  • Create a virtualenv
$ python3 -m venv env
$ . env/bin/activate
  • Upgrade pip and setuptools
$ python -m pip install --upgrade pip setuptools
  • Install development dependencies, then install mons in editable mode
$ pip install -r requirements-dev.txt
$ pip install -e .
$ pre-commit install

Writing code

When making changes to the project, follow best practices for code and version control wherever possible:

Running tests

pytest

Run tests for the current environment with pytest

$ pytest

To run end-to-end tests using a local Celeste install, run pytest and provide the path for the Celeste install

⚠️ When tests fail they can break the install they are run on. Do not use a Celeste install you care about.

$ pytest --mons-test-install={/path/to/Celeste/install}

tox

The full suite of tests can be run with tox. This will also be run by the CI server when a pull request is submitted

$ tox

End-to-end tests can also be run with tox

$ tox -- --mons-test-install={/path/to/Celeste/install}

MAINTAINERS

Releasing a new version

  • Tag a commit with the format v{version number} where {version number} follows the semver specification.
  • The CI server will run tests, then build and upload the new version to PyPI.
  • (Optional) Create a GitHub release for the new tag once CI has completed successfully.