diff --git a/.github/workflows/migration.yml b/.github/workflows/migration.yml index d7293e4..22d6249 100644 --- a/.github/workflows/migration.yml +++ b/.github/workflows/migration.yml @@ -9,21 +9,91 @@ on: jobs: test: runs-on: ubuntu-latest - + + services: + postgres: + image: postgres:15 + env: + POSTGRES_USER: testuser + POSTGRES_PASSWORD: testpassword + POSTGRES_DB: testdb + ports: + - 5432:5432 + options: >- + --health-cmd "pg_isready -U testuser" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + mysql: + image: mysql:8 + env: + MYSQL_ROOT_PASSWORD: testpassword + MYSQL_DATABASE: testdb + MYSQL_USER: testuser + MYSQL_PASSWORD: testpassword + ports: + - 3306:3306 + options: >- + --health-cmd "mysqladmin ping -h localhost -u root --password=testpassword" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + mariadb: + image: mariadb:10.6 + env: + MYSQL_ROOT_PASSWORD: testpassword + MYSQL_DATABASE: testdb + MYSQL_USER: testuser + MYSQL_PASSWORD: testpassword + ports: + - 3307:3306 + options: >- + --health-cmd "mysqladmin ping -h localhost -u root --password=testpassword" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + strategy: + matrix: + db: [sqlite, postgres, mysql, mariadb] + + name: "Db type: ${{ matrix.db }}" + steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.12' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install pytest pytest-alembic - - - name: Run Tests - run: | - pytest tests/ -v \ No newline at end of file + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest pytest-alembic pymysql psycopg psycopg-binary + + - name: Wait for database to be ready + run: sleep 10 + + - name: Set DATABASE_URL + run: | + case "${{ matrix.db }}" in + sqlite) + echo "SQLALCHEMY_DATABASE_URL=sqlite:///db.sqlite3" >> $GITHUB_ENV + ;; + postgres) + echo "SQLALCHEMY_DATABASE_URL=postgresql+psycopg://testuser:testpassword@localhost:5432/testdb" >> $GITHUB_ENV + ;; + mysql) + echo "SQLALCHEMY_DATABASE_URL=mysql+pymysql://testuser:testpassword@localhost:3306/testdb" >> $GITHUB_ENV + ;; + mariadb) + echo "SQLALCHEMY_DATABASE_URL=mysql+pymysql://testuser:testpassword@localhost:3307/testdb" >> $GITHUB_ENV + ;; + esac + + - name: Run Alembic Tests + run: pytest tests/ -v --disable-warnings