-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add workflow for performing tests on pushes and PRs (#88)
This PR adds a `tox.ini` file to the repository. It exposes a few different test environments which can be used by the developer for: * Linting the code * Checking Python modules dependencies * Running unit tests with coverage report * Running a static type checker Instructions on how to use `tox` have been added to the `README.md` file. These facilities exposed by the implemented `tox.ini` file are used by the `tests.yml` workflow which is also introduced by this PR. It is responsible for running all the tests which are exposed by `tox.ini` As part of this PR we also applied a few fixes which were reported by the workflow runs: * Issues reported by `flake8` in `setup.py` * Issues reported by `pyright` in `server_operation.py`, `utils.py`, and `utility_controller.py` * Issues on unit test `test_main_helper`: it was failing because of a difference between the terminal size of runners and our laptops * Issues on unit test `test_server_operation_post_not_json` when ran through GitHub Actions with Python 3.7 + Flask 2.2.5. That combination caused Flask to return `400 Bad Request` instead of `415 Unsupported Media Type`, which is returned by other combinations References: BAR-133.
- Loading branch information
1 parent
c1d3286
commit 455f783
Showing
11 changed files
with
367 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
name: Tests | ||
|
||
on: | ||
pull_request: | ||
|
||
push: | ||
branches: | ||
- main | ||
|
||
workflow_dispatch: | ||
inputs: | ||
source-ref: | ||
description: Source code branch/ref name | ||
default: main | ||
required: true | ||
type: string | ||
|
||
env: | ||
SOURCE_REF: ${{ inputs.source-ref || github.ref }} | ||
WORKING_DIRECTORY: ./pg_backup_api | ||
|
||
jobs: | ||
lint: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout the source code | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ env.SOURCE_REF }} | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.x | ||
|
||
- name: Install tox | ||
run: | ||
pip install tox | ||
|
||
- name: Run linter | ||
working-directory: ${{ env.WORKING_DIRECTORY }} | ||
run: | ||
tox -e lint | ||
|
||
dependency_checking: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout the source code | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ env.SOURCE_REF }} | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.x | ||
|
||
- name: Install tox | ||
run: | ||
pip install tox | ||
|
||
- name: Run dependency checker | ||
working-directory: ${{ env.WORKING_DIRECTORY }} | ||
run: | ||
tox -e dep | ||
|
||
unit_tests: | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
|
||
matrix: | ||
python-version: | ||
- '3.7' | ||
- '3.8' | ||
- '3.9' | ||
- '3.10' | ||
- '3.11' | ||
|
||
steps: | ||
- name: Checkout the source code | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ env.SOURCE_REF }} | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install tox | ||
run: | ||
pip install tox | ||
|
||
- name: Run unit tests | ||
working-directory: ${{ env.WORKING_DIRECTORY }} | ||
run: | ||
tox -m test | ||
|
||
static_type_checking: | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
|
||
matrix: | ||
python-version: | ||
- '3.7' | ||
- '3.8' | ||
- '3.9' | ||
- '3.10' | ||
- '3.11' | ||
|
||
steps: | ||
- name: Checkout the source code | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ env.SOURCE_REF }} | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install tox | ||
run: | ||
pip install tox | ||
|
||
- name: Run static type checks | ||
working-directory: ${{ env.WORKING_DIRECTORY }} | ||
run: | ||
tox -m type |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.