* [Setting Up the Development Environment](#setting-up-the-development-environment)
* [Running Tests](#running-tests)
* [Our CI Process & The Gitea Bridge](#our-ci-process--the-gitea-bridge)
* [Pull Request Process](#pull-request-process)
## Reporting Bugs
If you find a bug, please open an issue on our Gitea issue tracker. Please include as many details as possible, such as your OS, Python version, steps to reproduce, and any error messages.
If you find a bug, please open an issue on our GitHub issue tracker. Please include as many details as possible, such as your OS, Python version, steps to reproduce, and any error messages.
[Report a Bug](https://github.com/jono-rams/PolySolve/issues/new?assignees=&labels=bug&template=bug_report.md&title=)
## Suggesting Enhancements
If you have an idea for a new feature or an improvement, please open an issue to discuss it. This allows us to coordinate efforts and ensure the proposed change aligns with the project's goals.
If you have an idea for a new feature or an improvement, please open an issue to discuss it. This allows us to coordinate efforts and ensure the proposed change aligns with the project's goals.
[Suggest an Enhancement](https://github.com/jono-rams/PolySolve/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=)
@ -58,34 +61,33 @@ We use `pytest` for automated testing. After setting up the development environm
pytest
```
This will automatically discover and run all tests located in the `tests/` directory.
This will automatically discover and run all tests located in the `tests/` directory. All tests should pass before you submit your changes.
If you are adding a new feature or fixing a bug, please add a corresponding test case to ensure the code is working correctly and to prevent future regressions.
All tests should pass before you submit your changes. If you are adding a new feature or fixing a bug, please add a corresponding test case to ensure the code is working correctly and to prevent future regressions.
## Our CI Process & The Gitea Bridge
## CI & Automated Testing Environment
To ensure that all contributions are consistent and stable, our test suite is executed automatically in a controlled environment. Here’s how it works:
1. Our canonical source of truth and CI/CD runners are managed on our private Gitea instance.
2. When you open a Pull Request on GitHub, our "Gitea Bridge" bot automatically mirrors your changes to a corresponding PR on our Gitea instance.
3. The tests are run using Gitea Actions within our specific, reproducible environment.
4. The results (success or failure) are then reported back to your GitHub Pull Request via a status check named "Gitea CI Bridge".
To ensure that all contributions are consistent and stable, our test suite is executed automatically via Gitea Actions. Your pull request must pass all these checks before it can be merged.
Our CI environment is the ultimate source of truth. It is built using a custom Docker image to lock down dependencies and guarantee reproducibility.
Your pull request must pass all these checks before it can be merged.
### Reference Environment Specification
You can replicate our CI environment exactly to minimize "it works on my machine" issues.
Using this Docker image for your local development will ensure your code runs in the same environment as our automated tests, minimizing "it works on my machine" issues.
## Pull Request Process
1. Create a new branch for your feature or bugfix from the `main` branch:
@ -99,7 +101,7 @@ Using this Docker image for your local development will ensure your code runs in
pytest
```
5. Commit your changes with a clear and descriptive commit message.
6. Push your branch to your fork on Gitea.
7. Open a pull request to the `main` branch of the original `PolySolve` repository. Please provide a clear title and description for your pull request.
6. Push your branch to your fork on GitHub.
7. Open a **Pull Request** to the `main` branch of the `jono-rams/PolySolve` repository on **GitHub**. Please provide a clear title and description for your pull request.
Once you submit your pull request, our automated CI tests will run. We will review your contribution and provide feedback as soon as possible. Thank you for your contribution!
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.