Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .actrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-P ubuntu-24.04=catthehacker/ubuntu:act-latest
54 changes: 54 additions & 0 deletions .github/workflows/tests.yml
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we also add a linting step?

Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Run Tests

on:
pull_request:
push:
branches:
- master

jobs:
tests:
runs-on: ubuntu-24.04

services:
postgres:
image: postgres:16
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Any particular reason for using version 16?

env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5
Comment on lines +22 to +26
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question: Are the health checks of the postgres image not enough?


env:
E2E_PG_HOST: 127.0.0.1
E2E_PG_PORT: 5432
E2E_PG_USER: postgres
E2E_PG_PASSWORD: postgres
E2E_PG_DB: postgres

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y postgresql-client
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-timeout

- name: Run tests
run: |
python -m pytest -vv
Comment on lines +51 to +53
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: As I mentioned on #13 if we clean up the make command, we could probably reuse make test?


11 changes: 10 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,13 @@ test: ## Start local PostgreSQL container and run all tests
E2E_PG_DB=$(PG_TEST_DB) \
$(VENV_DIR)/bin/$(PYTHON_CMD) -m pytest -vv

.PHONY: usage install install-test install-lint clean publish test lint
ACT_CMD ?= act
ACT_WORKFLOW ?= .github/workflows/tests.yml
ACT_JOB ?= tests
ACT_PULL ?= false
ACT_CONTAINER_ARCH ?= linux/arm64

test-act: ## Run the CI test workflow locally with act
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

$(ACT_CMD) -W $(ACT_WORKFLOW) -j $(ACT_JOB) --pull=$(ACT_PULL) --container-architecture $(ACT_CONTAINER_ARCH)

.PHONY: usage install install-test install-lint clean publish test test-act lint
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,27 @@ python -m pytest tests/test_plugins.py -vv
```

If PostgreSQL is not reachable, tests fail fast at startup.

#### 3) Run CI locally with `act`

Run the GitHub Actions test workflow locally with [`act`](https://github.com/nektos/act):

On macOS, install `act` with Homebrew:

```bash
brew install act
```

```bash
make test-act
```

Useful overrides for local runs:

```bash
# Refresh images explicitly when needed
make test-act ACT_PULL=true

# Match GitHub runner architecture on Apple Silicon (slower)
make test-act ACT_CONTAINER_ARCH=linux/amd64
```
Loading