test(gitutil): extend coverage to 100% of exported functions#24765
test(gitutil): extend coverage to 100% of exported functions#24765
Conversation
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/908367fa-194a-4b12-a8ae-6a727cceade3 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
- Extend TestIsAuthError with github_token, unauthorized, forbidden, permission denied, and saml enforcement pattern cases - Add TestIsHexString with 10 table-driven cases (valid/invalid hex, empty string, case variants) - Add TestExtractBaseRepo with 5 cases (simple, subpath, deep, no slash, empty) - Add TestFindGitRoot verifying success path inside a git repository Agent-Logs-Url: https://github.com/github/gh-aw/sessions/908367fa-194a-4b12-a8ae-6a727cceade3 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Expands pkg/gitutil unit tests to fully cover exported helpers, and updates numerous GitHub Actions workflow lockfiles to enable OTLP/observability step summaries.
Changes:
- Extend
TestIsAuthErrorand add new table-driven tests forIsHexStringandExtractBaseRepo. - Add
TestFindGitRootto exerciseFindGitRoot. - Add OTEL env wiring and a “Generate observability summary” step across many workflow lockfiles.
Show a summary per file
| File | Description |
|---|---|
| pkg/gitutil/gitutil_test.go | Adds tests for remaining exported helpers |
| .github/workflows/smoke-update-cross-repo-pr.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-test-tools.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-temporary-id.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-service-ports.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-project.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-multi-pr.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-gemini.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-create-cross-repo-pr.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-copilot.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-copilot-arm.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-codex.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-claude.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-call-workflow.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-agent-scoped-approved.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-agent-public-none.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-agent-public-approved.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-agent-all-none.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/smoke-agent-all-merged.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-workflow-updater.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-testify-uber-super-expert.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-team-status.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-team-evolution-insights.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-syntax-error-quality.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-semgrep-scan.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-security-red-team.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-secrets-analysis.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-safe-outputs-conformance.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-safe-output-optimizer.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-safe-output-integrator.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-repo-chronicle.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-rendering-scripts-verifier.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-regulatory.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-performance-summary.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-otel-instrumentation-advisor.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-observability-report.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-news.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-multi-device-docs-tester.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-mcp-concurrency-analysis.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-malicious-code-scan.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-issues-report.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-integrity-analysis.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-function-namer.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-firewall-report.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-file-diet.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-fact.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-doc-updater.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-doc-healer.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-compiler-quality.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-community-attribution.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-code-metrics.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-cli-tools-tester.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-cli-performance.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-choice-test.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-assign-issue-to-user.lock.yml | Adds OTEL env + observability summary step |
| .github/workflows/daily-architecture-diagram.lock.yml | Adds OTEL env + observability summary step |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 56/56 changed files
- Comments generated: 2
| func TestFindGitRoot(t *testing.T) { | ||
| t.Run("returns non-empty path when inside a git repository", func(t *testing.T) { | ||
| gitRoot, err := FindGitRoot() | ||
| assert.NoError(t, err, "FindGitRoot should succeed when running inside a git repository") | ||
| assert.NotEmpty(t, gitRoot, "FindGitRoot should return a non-empty path") | ||
| }) |
There was a problem hiding this comment.
TestFindGitRoot depends on the tests running from within an existing git working tree. This can fail in environments where the source is provided without a .git directory (e.g., go test against a module download/tarball) or when git isn't installed. Consider making the test self-contained by creating a temp dir, git init it, chdir into it for the duration of the test (and/or skip when git is unavailable).
| env: | ||
| OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.GH_AW_OTEL_ENDPOINT }} | ||
| OTEL_SERVICE_NAME: gh-aw | ||
| OTEL_EXPORTER_OTLP_HEADERS: ${{ secrets.GH_AW_OTEL_HEADERS }} | ||
|
|
There was a problem hiding this comment.
This workflow change introduces OpenTelemetry env vars and a new "Generate observability summary" step, which isn't mentioned in the PR title/description (focused on pkg/gitutil test coverage). Please either update the PR description to include the workflow/observability changes (and rationale) or split these workflow updates into a separate PR to keep scope clear.
pkg/gitutil/gitutil_test.gocovered only 2 of 5 exported functions (IsRateLimitError,IsAuthError), andIsAuthErrorwas missing 5 of its 8 pattern branches.Changes
TestIsAuthError— added missing pattern cases:github_token,unauthorized,forbidden,permission denied,saml enforcementTestIsHexString— new table-driven test; covers valid lowercase/uppercase/mixed-case hex, full 40-char SHA, digits-only, single char, invalid char, space, empty string, non-hex wordTestExtractBaseRepo— new table-driven test; covers simpleowner/repo, one-subpath, deep multi-segment path, no slash, empty stringTestFindGitRoot— new test verifying success path returns a non-empty root when executed inside a git repoCoverage: 2/5 → 5/5 exported functions;
IsAuthErrorbranch coverage: 3/8 → 8/8 patterns.