Build/test fixes
Some checks failed
CI / Test (1.24) (push) Failing after -24m25s
CI / Test (1.25) (push) Failing after -24m5s
CI / Lint (push) Successful in -25m6s
CI / Build (push) Successful in -25m25s
Integration Tests / Integration Tests (push) Failing after -25m39s

This commit is contained in:
2025-12-28 14:21:57 +02:00
parent e61204cb3c
commit beb5b4fac8
3 changed files with 125 additions and 15 deletions

View File

@@ -34,8 +34,8 @@ jobs:
- name: Download dependencies
run: go mod download
- name: Run tests
run: go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
- name: Run unit tests
run: make test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
@@ -55,13 +55,15 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
go-version: '1.25'
- name: golangci-lint
uses: golangci/golangci-lint-action@v9
with:
version: latest
args: --config=.golangci.json
- name: Install golangci-lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin latest
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Run linter
run: make lint
build:
name: Build
@@ -74,10 +76,22 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
go-version: '1.25'
- name: Build
run: go build -v ./cmd/relspec
- name: Download dependencies
run: go mod download
- name: Build binary
run: make build
- name: Verify binary exists
run: |
if [ ! -f build/relspec ]; then
echo "Error: Binary not found at build/relspec"
exit 1
fi
echo "Build successful: build/relspec"
ls -lh build/relspec
- name: Check mod tidiness
run: |

82
.github/workflows/integration-tests.yml vendored Normal file
View File

@@ -0,0 +1,82 @@
name: Integration Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_USER: relspec
POSTGRES_PASSWORD: relspec_test_password
POSTGRES_DB: relspec_test
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Install PostgreSQL client
run: |
sudo apt-get update
sudo apt-get install -y postgresql-client
- name: Initialize test database
env:
PGPASSWORD: relspec_test_password
run: |
psql -h localhost -U relspec -d relspec_test -f tests/postgres/init.sql
- name: Verify database setup
env:
PGPASSWORD: relspec_test_password
run: |
echo "Verifying database initialization..."
psql -h localhost -U relspec -d relspec_test -c "
SELECT
(SELECT COUNT(*) FROM pg_namespace WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') AND nspname NOT LIKE 'pg_%') as schemas,
(SELECT COUNT(*) FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema')) as tables,
(SELECT COUNT(*) FROM pg_views WHERE schemaname NOT IN ('pg_catalog', 'information_schema')) as views,
(SELECT COUNT(*) FROM pg_sequences WHERE schemaname NOT IN ('pg_catalog', 'information_schema')) as sequences;
"
- name: Run integration tests
env:
RELSPEC_TEST_PG_CONN: postgres://relspec:relspec_test_password@localhost:5432/relspec_test
run: make test-integration
- name: Summary
if: always()
run: |
echo "Integration tests completed."
echo "PostgreSQL service was running on localhost:5432"

View File

@@ -1,4 +1,4 @@
.PHONY: all build test lint coverage clean install help docker-up docker-down docker-test docker-test-integration
.PHONY: all build test test-unit test-integration lint coverage clean install help docker-up docker-down docker-test docker-test-integration
# Binary name
BINARY_NAME=relspec
@@ -22,9 +22,23 @@ build: ## Build the binary
$(GOBUILD) -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/relspec
@echo "Build complete: $(BUILD_DIR)/$(BINARY_NAME)"
test: ## Run tests
@echo "Running tests..."
$(GOTEST) -v -race -coverprofile=coverage.out ./...
test: test-unit ## Run all unit tests (alias for test-unit)
test-unit: ## Run unit tests (excludes integration tests)
@echo "Running unit tests..."
$(GOTEST) -v -race -coverprofile=coverage.out -covermode=atomic $$(go list ./... | grep -v '/tests/integration' | grep -v '/pkg/readers/pgsql')
test-integration: ## Run integration tests (requires RELSPEC_TEST_PG_CONN environment variable)
@echo "Running integration tests..."
@if [ -z "$$RELSPEC_TEST_PG_CONN" ]; then \
echo "Error: RELSPEC_TEST_PG_CONN environment variable is not set"; \
echo "Example: export RELSPEC_TEST_PG_CONN='postgres://relspec:relspec_test_password@localhost:5432/relspec_test'"; \
exit 1; \
fi
@echo "Running PostgreSQL reader tests..."
$(GOTEST) -v -count=1 ./pkg/readers/pgsql/
@echo "Running general integration tests..."
$(GOTEST) -v -count=1 ./tests/integration/
coverage: test ## Run tests with coverage report
@echo "Generating coverage report..."