From 5f2e26f154cb94d55d139adb7fd546d98cb1f614 Mon Sep 17 00:00:00 2001 From: stijndcl Date: Wed, 29 Jun 2022 00:14:44 +0200 Subject: [PATCH] Add test container --- .github/workflows/python.yml | 9 +-------- database/engine.py | 34 ++++++++++++---------------------- docker-compose.yml | 10 ++++++++++ pyproject.toml | 7 ++++--- settings.py | 2 -- 5 files changed, 27 insertions(+), 35 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 382bc76..a309a71 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -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 diff --git a/database/engine.py b/database/engine.py index 70c70fe..fbdbfd2 100644 --- a/database/engine.py +++ b/database/engine.py @@ -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) diff --git a/docker-compose.yml b/docker-compose.yml index d34f4a7..25cd531 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/pyproject.toml b/pyproject.toml index bfc1ced..5263a7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" ] diff --git a/settings.py b/settings.py index 797b052..d850eb8 100644 --- a/settings.py +++ b/settings.py @@ -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")