Skip to content

Commit 38b9462

Browse files
committed
test: improve coverage from 27.7% to 87.3%
- Added comprehensive unit tests for validator.go - Created main_test.go for CLI testing - Added coverage_minimum validation tests in status_test.go - Improved test coverage for error paths, edge cases, and verbose mode - Coverage breakdown: * LoadCoverage: 95.6% * ValidateComponents: 91.7% * findMetadataFiles: 92.3% * validateComponent: 92.0% * getModulePath: 90.0% * run: 93.3% Total improvement: +59.6 percentage points
1 parent 68cfc0d commit 38b9462

File tree

3 files changed

+730
-0
lines changed

3 files changed

+730
-0
lines changed

cmd/checkcover/main_test.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package main
5+
6+
import (
7+
"os"
8+
"path/filepath"
9+
"testing"
10+
11+
"github.com/spf13/cobra"
12+
"github.com/stretchr/testify/assert"
13+
"github.com/stretchr/testify/require"
14+
)
15+
16+
func TestRun(t *testing.T) {
17+
t.Run("success with valid coverage", func(t *testing.T) {
18+
tmpDir := t.TempDir()
19+
20+
// Create coverage file
21+
coverageFile := filepath.Join(tmpDir, "coverage.txt")
22+
coverageContent := `mode: atomic
23+
go.opentelemetry.io/collector/test/file.go:10.2,12.3 2 5
24+
`
25+
err := os.WriteFile(coverageFile, []byte(coverageContent), 0644)
26+
require.NoError(t, err)
27+
28+
cmd := &cobra.Command{}
29+
cmd.Flags().String("coverage-file", coverageFile, "")
30+
cmd.Flags().String("repo-root", tmpDir, "")
31+
cmd.Flags().Int("repo-minimum", 0, "")
32+
cmd.Flags().Bool("verbose", false, "")
33+
34+
err = run(cmd, []string{})
35+
require.NoError(t, err)
36+
})
37+
38+
t.Run("failure with missing coverage file", func(t *testing.T) {
39+
tmpDir := t.TempDir()
40+
41+
cmd := &cobra.Command{}
42+
cmd.Flags().String("coverage-file", "nonexistent.txt", "")
43+
cmd.Flags().String("repo-root", tmpDir, "")
44+
cmd.Flags().Int("repo-minimum", 0, "")
45+
cmd.Flags().Bool("verbose", false, "")
46+
47+
err := run(cmd, []string{})
48+
require.Error(t, err)
49+
assert.Contains(t, err.Error(), "failed to load coverage data")
50+
})
51+
52+
t.Run("verbose mode", func(t *testing.T) {
53+
tmpDir := t.TempDir()
54+
55+
// Create coverage file
56+
coverageFile := filepath.Join(tmpDir, "coverage.txt")
57+
coverageContent := `mode: atomic
58+
go.opentelemetry.io/collector/test/file.go:10.2,12.3 2 5
59+
`
60+
err := os.WriteFile(coverageFile, []byte(coverageContent), 0644)
61+
require.NoError(t, err)
62+
63+
cmd := &cobra.Command{}
64+
cmd.Flags().String("coverage-file", coverageFile, "")
65+
cmd.Flags().String("repo-root", tmpDir, "")
66+
cmd.Flags().Int("repo-minimum", 50, "")
67+
cmd.Flags().Bool("verbose", true, "")
68+
69+
err = run(cmd, []string{})
70+
require.NoError(t, err)
71+
})
72+
}
73+
74+
func TestMain_Integration(t *testing.T) {
75+
// Save original args and restore after test
76+
oldArgs := os.Args
77+
defer func() { os.Args = oldArgs }()
78+
79+
t.Run("help flag", func(t *testing.T) {
80+
// This test verifies the command can be created
81+
// Actual help output is tested via CLI
82+
cmd := &cobra.Command{
83+
Use: "checkcover",
84+
Short: "Validate code coverage requirements",
85+
}
86+
cmd.Flags().StringP("coverage-file", "c", "coverage.txt", "")
87+
cmd.Flags().StringP("repo-root", "r", ".", "")
88+
cmd.Flags().IntP("repo-minimum", "m", 0, "")
89+
cmd.Flags().BoolP("verbose", "v", false, "")
90+
91+
assert.NotNil(t, cmd)
92+
assert.Equal(t, "checkcover", cmd.Use)
93+
})
94+
}

0 commit comments

Comments
 (0)