Skip to content

Merge pull request #612 from NASA-IMPACT/dev #1166

Merge pull request #612 from NASA-IMPACT/dev

Merge pull request #612 from NASA-IMPACT/dev #1166

Workflow file for this run

name: Tests
on:
- push
jobs:
test:
runs-on: ubuntu-latest
container:
image: python:3.11.7
defaults:
run:
working-directory: ./app
env:
DB_ENGINE: django.contrib.gis.db.backends.postgis
DB_NAME: admg
DB_USER: postgres
DB_PASSWORD: postgres
DB_HOST: postgres # 127.0.0.1
DB_PORT: 5432
DJANGO_SETTINGS_MODULE: config.settings.local
DJANGO_SECRET_KEY: "secret key here"
DJANGO_ADMIN_URL: admg/
GH_TOKEN: faketokenhere
GCMD_SYNC_SOURCE_EMAIL: gcmdadmg@localhost
GCMD_SYNC_RECIPIENTS: gcmd@localhost
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672/
services:
postgres:
image: postgis/postgis:13-3.2
env:
POSTGRES_DB: admg
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
rabbitmq:
image: rabbitmq:latest
env:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 5672:5672
steps:
- uses: actions/checkout@v2
- name: Install GDAL
run: |
apt-get update -y
apt-get install -y libgdal-dev
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11.7
# cache: pip # Unable to use caching, https://github.com/actions/setup-python/issues/719
- name: Set user-site-path
id: user-site
run: |
USER_SITE_PATH=$(python -m site --user-site)
echo "USER_SITE_PATH=$USER_SITE_PATH" >> $GITHUB_ENV
# NOTE: The cache does not seem to detect changes in the requirements files reliably
- uses: actions/cache@v2
id: cache-dependencies
with:
path: ${{ env.USER_SITE_PATH }}
key: ${{ env.USER_SITE_PATH }}-${{ hashFiles('requirements/base.txt') }}-${{ hashFiles('requirements/local.txt') }}
- name: Install Dependencies
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
pip install \
--user \
--upgrade \
--upgrade-strategy eager \
-r requirements/base.txt \
-r requirements/local.txt
- name: Install Playwright Browsers
run: |
python -m playwright install --with-deps
- name: Check for missing migrations
run: |
python manage.py makemigrations --check --dry-run
- name: Run Tests
run: |
python -m coverage run -m pytest
python -m coverage report -m --skip-covered
python -m coverage json -o coverage.json
- name: Save Test Videos
uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: videos
path: app/videos/
- name: Save Code Coverage
uses: actions/upload-artifact@v3
with:
name: code_coverage
path: app/coverage.json
compare-coverage:
runs-on: ubuntu-latest
needs: test
if: ${{ github.ref_name != 'dev'}}
defaults:
run:
working-directory: ./app
steps:
- uses: actions/checkout@v2
- name: Get Commit Coverage
uses: actions/download-artifact@v3
with:
name: code_coverage
path: new_cov
- name: Get Dev Coverage
uses: dawidd6/action-download-artifact@v2
with:
branch: dev
name: code_coverage
path: dev_cov
if_no_artifact_found: fail
- name: Calculate Coverage
id: calculate_coverage
run: |
new_cov=$(cat ../new_cov/coverage.json)
echo "new_cov=${new_cov//'%'/'%25'}" >> $GITHUB_OUTPUT
dev_cov=$(cat ../dev_cov/coverage.json)
echo "dev_cov=${dev_cov//'%'/'%25'}" >> $GITHUB_OUTPUT
- name: Compare Coverage
id: compare_coverage
run: |
dev_total="${{fromJson(steps.calculate_coverage.outputs.dev_cov).totals.percent_covered}}"
new_total="${{fromJson(steps.calculate_coverage.outputs.new_cov).totals.percent_covered}}"
coverage_diff=$(echo "$dev_total - $new_total" | bc -l)
(( $(echo "$coverage_diff > 1.0" | bc -l) )) && result=failure || result=success
echo "Coverage comparison: $result"
- name: Report result
if: ${{steps.compare_coverage.outputs.result=='failure'}}
uses: actions/github-script@v3
with:
script: |
core.setFailed('Test coverage on source branch is lower than on dev branch')