This PR aims to expand our test coverage and unify the CI workflow with the regular development workflow. This is useful because we want the build action to reflect the development workflow that a user who is contributing to the codebase would experience. Currently the two are pretty disjointed (different installs etc).
Combined lint and test into one single ci.yaml file
Expanded our CI to test on both macOS and Ubuntu, and testing both 3.8 and 3.11. We can test in between versions, but I think that may be overkill
The new workflow is lint > tests > publish
Lint
Replaced manual install of flake8, black, and coveralls with their associated published github action
Tests
Using mamba for speed and installing from our new environment.yml file
Updated environment.yml to include all development dependencies, and instructing a user to pip install with --no-deps to prevent dependency clashes. Removing defaults from channels to prevent similar issues
Added cache that resets daily for each mamba environment.
NOTE: writing to .coverage isn't thread safe, so changed our testing workflow to run ALL tests, and generate a coverage report. THEN run the mpi tests in parallel, but do not generate a coverage report from them.
Lastly, post to coveralls and then wait for the finish webhook to complete the coverage report
Publish
Post to coveralls.io and let them know all tests are finished.
This PR aims to expand our test coverage and unify the CI workflow with the regular development workflow. This is useful because we want the build action to reflect the development workflow that a user who is contributing to the codebase would experience. Currently the two are pretty disjointed (different installs etc).
ci.yaml file
The new workflow is
lint
>tests
>publish
environment.yml
fileenvironment.yml
to include all development dependencies, and instructing a user to pip install with --no-deps to prevent dependency clashes. Removing defaults from channels to prevent similar issues