Skip to content

Tests: again full coverage #387

Tests: again full coverage

Tests: again full coverage #387

Workflow file for this run

name: 'Tests'
on:
push: {}
workflow_call: {}
jobs:
build_openatlas:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create tags based on git data
id: meta
uses: docker/metadata-action@v4
with:
images: |
ghcr.io/${{ github.repository }}/container-preview
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value={{sha}}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
file: install/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
test_openatlas:
env:
POSTGRES_PASSWORD: verysecret
POSTGRES_DB: openatlas_test
POSTGRES_USER: openatlas
runs-on: ubuntu-latest
needs: [build_openatlas]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create openatlas network
run: |
docker network create --internal openatlas
- name: Create postgis container
run: |
docker run -d -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\
-e POSTGRES_DB=$POSTGRES_DB\
-e POSTGRES_USER=$POSTGRES_USER\
--name postgres --network openatlas\
postgis/postgis:13-3.3
- name: Wait
run: sleep 8
# - name: Add extensions to db
# run: |
# docker exec -i postgres psql -U $POSTGRES_USER -d $POSTGRES_DB -c 'CREATE EXTENSION IF NOT EXISTS postgis; CREATE EXTENSION IF NOT EXISTS unaccent;'
- name: Initialize db
run: |
docker cp install/ postgres:/install/
docker exec -i postgres /bin/bash -c "cd install && cat 0_extensions.sql 1_structure.sql 2_data_model.sql 3_data_web.sql 4_data_type.sql | psql -U $POSTGRES_USER -d $POSTGRES_DB -f -"
- name: Create openatlas container and run tests
run: |
COOKIE_KEY=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c 32;echo;)
echo "COOKIE_KEY=$COOKIE_KEY"
docker create -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\
-e POSTGRES_DB=$POSTGRES_DB\
-e POSTGRES_USER=$POSTGRES_USER\
-e POSTGRES_HOST=postgres\
-e COOKIE_KEY=$COOKIE_KEY\
--name openatlas --network openatlas\
ghcr.io/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')/container-preview:$(echo ${{ github.ref_name }} | sed 's/\//-/')
set -x
cat <<EOF > testing.py
SERVER_NAME='local.host'
DATABASE_NAME='openatlas_test'
DATABASE_USER='openatlas'
DATABASE_HOST='postgres'
DATABASE_PORT=5432
DATABASE_PASS='verysecret'
MAIL_PASSWORD='asdQWEtzu123'
SECRET_KEY='$COOKIE_KEY' # Used for cookies
DEBUG = True
WTF_CSRF_ENABLED = False
WTF_CSRF_METHODS: list[str] = []
ARCHE = {
'id': 0,
'url': 'https://arche-curation.acdh-dev.oeaw.ac.at/'}
IIIF = {
'enabled': True,
'path': '/var/www/iipsrv/',
'url': 'http://localhost:8080/iiif/',
'version': 2,
'conversion': True,
'compression': 'jpeg'}
EOF
# production.py is recreated on every start
sudo chown 33:33 testing.py
docker cp -a testing.py openatlas:/var/www/openatlas/instance/
docker start openatlas
until [ "$(docker inspect -f {{.State.Running}} openatlas)"=="true" ]; do
sleep 0.1;
done;
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/install/ && sed -i 's@http://localhost/iiif/@http://localhost:8080/iiif/@g' data_test.sql"
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/instance/ && ls -la && cat testing.py && cat production.py"
- name: Run tests
run: |
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/tests && nosetests3 -c .noserc --verbosity=2 --nologcapture --nocapture && echo passed"