From 30307a04400473174d090b1a16eab6145be3539f Mon Sep 17 00:00:00 2001 From: Miguel Revetria Date: Thu, 22 May 2025 13:30:47 +0000 Subject: [PATCH 1/3] chore: using dedicated db for testing --- .devcontainer/aliases-devcontainer | 2 +- scripts/test.sh | 14 ++++++++++++++ src/tests/conftest.py | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.devcontainer/aliases-devcontainer b/.devcontainer/aliases-devcontainer index 88f8c07..ae695b1 100644 --- a/.devcontainer/aliases-devcontainer +++ b/.devcontainer/aliases-devcontainer @@ -2,4 +2,4 @@ alias format='scripts/format.sh' alias makemigrations='scripts/makemigrations.sh' alias migrate='scripts/migrate.sh' alias shell='poetry run python src/helpers/shell.py' -alias test='pytest src' +alias test='scripts/test.sh' diff --git a/scripts/test.sh b/scripts/test.sh index 65016d5..2e8cbff 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,3 +1,17 @@ #!/bin/bash +set -e +pwd +# Ensure test database schema is up-to-date +setup_test_database() +{ + echo "Setting up test database" + DATABASE_URL=postgresql://dev:dev@postgres:5432 + psql $DATABASE_URL -c 'DROP DATABASE IF EXISTS test' + psql $DATABASE_URL -c 'CREATE DATABASE test' + psql $DATABASE_URL -c 'GRANT ALL PRIVILEGES ON DATABASE test TO dev' + DATABASE_URL="$DATABASE_URL/test" ./scripts/migrate.sh +} + +setup_test_database poetry run pytest src diff --git a/src/tests/conftest.py b/src/tests/conftest.py index e82e959..5fb3c51 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,5 +1,7 @@ import os +# Makes sure we use the test database to run the tests, you may have to create / run migrations on this db +os.environ["ASYNC_DATABASE_URL"] = "postgresql+asyncpg://dev:dev@postgres:5432/test" os.environ["ACCESS_TOKEN_EXPIRE_MINUTES"] = "0.02" From de1b83fe33b06eca83124c4090064ba8ea50b093 Mon Sep 17 00:00:00 2001 From: Miguel Revetria Date: Thu, 22 May 2025 19:40:50 +0000 Subject: [PATCH 2/3] fixed tests in ci --- .github/workflows/python-app.yml | 7 +++---- scripts/test.sh | 3 ++- src/tests/conftest.py | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 34de4ec..c6d2241 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -42,18 +42,17 @@ jobs: env: POSTGRES_USER: dev POSTGRES_PASSWORD: dev - POSTGRES_DB: dev + POSTGRES_DB: test ports: - 5432:5432 options: >- - --health-cmd "pg_isready -U dev -d dev" + --health-cmd "pg_isready -U dev -d test" --health-interval 10s --health-timeout 5s --health-retries 5 env: PROJECT_NAME: python-template - DATABASE_URL: postgresql://dev:dev@localhost:5432/dev - ASYNC_DATABASE_URL: postgresql+asyncpg://dev:dev@localhost:5432/dev + ASYNC_DATABASE_URL: postgresql+asyncpg://dev:dev@localhost:5432/test DATABASE_POOL_PRE_PING: True DATABASE_POOL_SIZE: 5 DATABASE_POOL_RECYCLE: 3600 diff --git a/scripts/test.sh b/scripts/test.sh index 2e8cbff..1167053 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -3,6 +3,7 @@ set -e pwd # Ensure test database schema is up-to-date + setup_test_database() { echo "Setting up test database" @@ -14,4 +15,4 @@ setup_test_database() } setup_test_database -poetry run pytest src +ASYNC_DATABASE_URL=postgresql+asyncpg://dev:dev@postgres:5432/test poetry run pytest src diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 5fb3c51..6775d23 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,7 +1,6 @@ import os # Makes sure we use the test database to run the tests, you may have to create / run migrations on this db -os.environ["ASYNC_DATABASE_URL"] = "postgresql+asyncpg://dev:dev@postgres:5432/test" os.environ["ACCESS_TOKEN_EXPIRE_MINUTES"] = "0.02" From cc75fc17640d2b7afa3054ea6c4f8a2831aa0102 Mon Sep 17 00:00:00 2001 From: Miguel Revetria Date: Mon, 26 May 2025 14:26:19 +0000 Subject: [PATCH 3/3] minor code improvements --- scripts/test.sh | 15 +++++++++------ src/tests/conftest.py | 1 - 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 1167053..b97faca 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -4,15 +4,18 @@ set -e pwd # Ensure test database schema is up-to-date +TEST_DB_NAME="test" +TEST_DB_CONN_STRING="dev:dev@postgres:5432" + setup_test_database() { echo "Setting up test database" - DATABASE_URL=postgresql://dev:dev@postgres:5432 - psql $DATABASE_URL -c 'DROP DATABASE IF EXISTS test' - psql $DATABASE_URL -c 'CREATE DATABASE test' - psql $DATABASE_URL -c 'GRANT ALL PRIVILEGES ON DATABASE test TO dev' - DATABASE_URL="$DATABASE_URL/test" ./scripts/migrate.sh + DATABASE_URL="postgresql://$TEST_DB_CONN_STRING" + psql $DATABASE_URL -c "DROP DATABASE IF EXISTS $TEST_DB_NAME" + psql $DATABASE_URL -c "CREATE DATABASE $TEST_DB_NAME" + psql $DATABASE_URL -c "GRANT ALL PRIVILEGES ON DATABASE $TEST_DB_NAME TO dev" + DATABASE_URL="$DATABASE_URL/$TEST_DB_NAME" ./scripts/migrate.sh } setup_test_database -ASYNC_DATABASE_URL=postgresql+asyncpg://dev:dev@postgres:5432/test poetry run pytest src +ASYNC_DATABASE_URL=postgresql+asyncpg://$TEST_DB_CONN_STRING/$TEST_DB_NAME poetry run pytest src diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 6775d23..e82e959 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,6 +1,5 @@ import os -# Makes sure we use the test database to run the tests, you may have to create / run migrations on this db os.environ["ACCESS_TOKEN_EXPIRE_MINUTES"] = "0.02"