Add comprehensive test suite for current implementation
Some checks failed
CI / Test (pull_request) Successful in 1m43s
CI / Lint (pull_request) Failing after 27s
CI / Build (pull_request) Failing after 13s
CI / Format Check (pull_request) Successful in 2s

- Add tests for internal/config package (90.9% coverage)
  - Test all viperConfig getter methods
  - Test LoadConfig with default and environment-specific configs
  - Test error handling for missing config files

- Add tests for internal/di package (88.1% coverage)
  - Test Container lifecycle (NewContainer, Start, Stop)
  - Test providers (ProvideConfig, ProvideLogger, CoreModule)
  - Test lifecycle hooks registration
  - Include mock implementations for testing

- Add tests for internal/logger package (96.5% coverage)
  - Test zapLogger with JSON and console formats
  - Test all logging levels and methods
  - Test middleware (RequestIDMiddleware, LoggingMiddleware)
  - Test context helper functions
  - Include benchmark tests

- Update CI workflow to skip tests when no test files exist
  - Add conditional test execution based on test file presence
  - Add timeout for test execution
  - Verify build when no tests are present

All tests follow Go best practices with table-driven patterns,
parallel execution where safe, and comprehensive coverage.
This commit is contained in:
2025-11-05 12:45:08 +01:00
parent a1fc6e69a7
commit 0bfdb2c2d7
12 changed files with 1814 additions and 11 deletions

View File

@@ -33,17 +33,35 @@ jobs:
- name: Verify dependencies
run: go mod verify
- name: Check for test files
id: check-tests
run: |
if find . -name "*_test.go" -not -path "./vendor/*" -not -path "./.git/*" | grep -q .; then
echo "tests_exist=true" >> $GITHUB_OUTPUT
else
echo "tests_exist=false" >> $GITHUB_OUTPUT
echo "No test files found. Skipping test execution."
fi
- name: Run tests
if: steps.check-tests.outputs.tests_exist == 'true'
env:
CGO_ENABLED: 1
run: go test -v -race -coverprofile=coverage.out ./...
run: go test -v -race -coverprofile=coverage.out -timeout=5m ./...
- name: Upload coverage
if: steps.check-tests.outputs.tests_exist == 'true'
uses: codecov/codecov-action@v4
with:
file: ./coverage.out
fail_ci_if_error: false
- name: Verify build (no tests)
if: steps.check-tests.outputs.tests_exist == 'false'
run: |
echo "No tests found. Verifying code compiles instead..."
go build ./...
lint:
name: Lint
runs-on: ubuntu-latest