tests.yml 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. name: Tests
  2. permissions: read-all
  3. on:
  4. pull_request:
  5. branches:
  6. - main
  7. workflow_dispatch:
  8. jobs:
  9. unit-tests:
  10. name: Unit Tests
  11. runs-on: ${{ matrix.os }}
  12. strategy:
  13. max-parallel: 4
  14. matrix:
  15. os: [ubuntu-latest, windows-latest, macOS-latest]
  16. steps:
  17. - name: Checkout
  18. uses: actions/checkout@v6
  19. - name: Set up Go
  20. uses: actions/setup-go@v6
  21. with:
  22. go-version: stable
  23. - name: Run unit tests with coverage and race conditions checking
  24. if: matrix.os == 'ubuntu-latest'
  25. run: make test
  26. - name: Run unit tests without coverage and race conditions checking
  27. if: matrix.os != 'ubuntu-latest'
  28. run: go test ./...
  29. integration-tests:
  30. name: Integration Tests
  31. runs-on: ubuntu-latest
  32. services:
  33. postgres:
  34. image: postgres:9.5
  35. env:
  36. POSTGRES_USER: postgres
  37. POSTGRES_PASSWORD: postgres
  38. POSTGRES_DB: postgres
  39. ports:
  40. - 5432:5432
  41. options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
  42. steps:
  43. - name: Checkout
  44. uses: actions/checkout@v6
  45. - name: Set up Go
  46. uses: actions/setup-go@v6
  47. with:
  48. go-version: stable
  49. - name: Install Postgres client
  50. run: sudo apt update && sudo apt install -y postgresql-client
  51. - name: Run integration tests
  52. run: make integration-test
  53. env:
  54. PGHOST: 127.0.0.1
  55. PGPASSWORD: postgres