Update CD action versions and add poetry and npm caching #140
Workflow file for this run
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
name: tests | |
on: | |
push: | |
paths-ignore: | |
- "README.md" | |
- "LICENSE" | |
- ".gitignore" | |
branches: | |
- main | |
pull_request: | |
paths-ignore: | |
- "README.md" | |
- "LICENSE" | |
- ".gitignore" | |
branches: | |
- main | |
env: | |
PYTHON_VERSION: "3.10" | |
NODE_VERSION: "20" | |
MODULE_NAME: clairvoyance | |
MIN_TEST_COV: 0 | |
SERVER: http://localhost:4000 | |
permissions: | |
contents: read | |
jobs: | |
unit-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install and configure poetry | |
run: | | |
pipx install poetry | |
poetry config virtualenvs.in-project true | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: "poetry" | |
- name: Setup poetry | |
run: poetry install | |
- name: Run tests | |
run: | | |
source .venv/bin/activate | |
pytest --cov=$MODULE_NAME --cov-report=xml --cov-fail-under=$MIN_TEST_COV tests | |
system-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install and configure poetry | |
run: | | |
pipx install poetry | |
poetry config virtualenvs.in-project true | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: "poetry" | |
- name: Setup poetry | |
run: poetry install | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: "npm" | |
cache-dependency-path: tests/apollo-server/ | |
- name: Install deps and run server | |
run: | | |
cd tests/apollo-server/ | |
npm ci | |
node src/index.js & | |
- name: Wait for server | |
run: | | |
for i in {0..10}; do | |
echo "Sleep for 1 second ..." | |
sleep 1 | |
if curl -s -o /dev/null "$SERVER"; then | |
echo "$SERVER returned HTTP response!" | |
break | |
fi | |
if [ $i -eq 10 ]; then | |
echo "Server did not respond after 10 seconds!" | |
exit 1 | |
fi | |
done | |
- name: Test with pytest | |
run: | | |
source .venv/bin/activate | |
python -m unittest tests/system.py | |
lint: | |
runs-on: ubuntu-latest | |
if: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install and configure poetry | |
run: | | |
pipx install poetry | |
poetry config virtualenvs.in-project true | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: "poetry" | |
- name: Setup poetry | |
run: poetry install | |
- name: Run lint | |
if: always() | |
run: | | |
source .venv/bin/activate | |
isort -m 9 --line-length 160 $MODULE_NAME tests --check-only | |
pylint --load-plugins pylint_quotes $MODULE_NAME tests | |
docformatter --wrap-summaries 160 --wrap-descriptions 160 -cr $MODULE_NAME tests | |
yapf -rd $MODULE_NAME tests | |
mypy -V | |
mypy $MODULE_NAME tests |