Add test container

pull/115/head
stijndcl 2022-06-29 00:14:44 +02:00
parent ca9dd84ab5
commit 5f2e26f154
5 changed files with 27 additions and 35 deletions

View File

@ -27,16 +27,13 @@ jobs:
services:
postgres:
image: postgres:14
env:
POSTGRES_DB: didier_action
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
- 5433:5432
steps:
- uses: actions/checkout@v3
- name: Setup Python
@ -54,10 +51,6 @@ jobs:
run: pip3 install -r requirements.txt -r requirements-dev.txt
- name: Run Pytest
run: pytest tests
env:
DB_TEST_SQLITE: false
DB_NAME: didier_action
DB_PASSWORD: postgres
linting:
needs: [dependencies]
runs-on: ubuntu-latest

View File

@ -6,27 +6,17 @@ from sqlalchemy.orm import sessionmaker
import settings
# Run local tests against SQLite instead of Postgres
if settings.TESTING and settings.DB_TEST_SQLITE:
engine = create_async_engine(
URL.create(
drivername="sqlite+aiosqlite",
database="tests.db",
),
connect_args={"check_same_thread": False},
)
else:
encoded_password = quote_plus(settings.DB_PASSWORD)
engine = create_async_engine(
URL.create(
drivername="postgresql+asyncpg",
username=settings.DB_USERNAME,
password=encoded_password,
host=settings.DB_HOST,
port=settings.DB_PORT,
database=settings.DB_NAME,
),
pool_pre_ping=True,
)
encoded_password = quote_plus(settings.DB_PASSWORD)
engine = create_async_engine(
URL.create(
drivername="postgresql+asyncpg",
username=settings.DB_USERNAME,
password=encoded_password,
host=settings.DB_HOST,
port=settings.DB_PORT,
database=settings.DB_NAME,
),
pool_pre_ping=True,
)
DBSession = sessionmaker(autocommit=False, autoflush=False, bind=engine, class_=AsyncSession, expire_on_commit=False)

View File

@ -12,5 +12,15 @@ services:
- "${DB_PORT:-5432}:${DB_PORT:-5432}"
volumes:
- db:/var/lib/postgresql/data
db-pytest:
image: postgres:14
container_name: didier-pytest
restart: always
environment:
- POSTGRES_DB=didier_pytest
- POSTGRES_USER=pytest
- POSTGRES_PASSWORD=pytest
ports:
- "5433:5432"
volumes:
db:

View File

@ -24,9 +24,10 @@ good-names = ["i", "dt"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
env = [
"TESTING = true",
"DB_NAME = didier_action",
"DB_USERNAME = postgres",
"DB_NAME = didier_pytest",
"DB_USERNAME = pytest",
"DB_PASSWORD = pytest",
"DB_HOST = localhost",
"DB_PORT = 5433",
"DISC_TOKEN = token"
]

View File

@ -9,7 +9,6 @@ env.read_env()
"""General config"""
SANDBOX: bool = env.bool("SANDBOX", True)
LOGFILE: str = env.str("LOGFILE", "didier.log")
TESTING: bool = env.bool("TESTING", False)
"""Database"""
DB_NAME: str = env.str("DB_NAME", "didier")
@ -17,7 +16,6 @@ DB_USERNAME: str = env.str("DB_USERNAME", "postgres")
DB_PASSWORD: str = env.str("DB_PASSWORD", "")
DB_HOST: str = env.str("DB_HOST", "localhost")
DB_PORT: int = env.int("DB_PORT", "5432")
DB_TEST_SQLITE: bool = env.bool("DB_TEST_SQLITE", True)
"""Discord"""
DISCORD_TOKEN: str = env.str("DISC_TOKEN")