Skip to content

Commit 99c4bea

Browse files
authored
add GitHub integration test (#114)
1 parent 0cfd077 commit 99c4bea

File tree

4 files changed

+83
-6
lines changed

4 files changed

+83
-6
lines changed

.github/.testcoverage.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ profile: cover.short.profile,cover.long.profile
44
local-prefix: "github.com/vladopajic/go-test-coverage/v2"
55
threshold:
66
file: 100
7-
total: 95
8-
override:
9-
- threshold: 50
10-
path: badgestorer/github.go$
7+
total: 100
118
exclude:
129
paths:
1310
- main\.go$

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ jobs:
1616
go-version-file: go.mod
1717

1818
- name: test
19+
env:
20+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for GitHub badge storer integration test
1921
run: make test
2022

2123
- name: check test coverage

pkg/testcoverage/badgestorer/github.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ func (s *githubStorer) Store(data []byte) (bool, error) {
6565
return updateBadge(nil)
6666
}
6767

68-
if err != nil {
68+
if err != nil { // coverage-ignore
6969
return false, fmt.Errorf("get badge content: %w", err)
7070
}
7171

7272
content, err := fc.GetContent()
73-
if err != nil {
73+
if err != nil { // coverage-ignore
7474
return false, fmt.Errorf("decode badge content: %w", err)
7575
}
7676

pkg/testcoverage/badgestorer/github_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package badgestorer_test
22

33
import (
4+
"context"
5+
"os"
46
"testing"
57

8+
"github.com/google/go-github/v56/github"
69
"github.com/stretchr/testify/assert"
710

811
. "github.com/vladopajic/go-test-coverage/v2/pkg/testcoverage/badgestorer"
912
)
1013

14+
const envGitToken = "GITHUB_TOKEN" //nolint:gosec // false-positive
15+
1116
func Test_Github_Error(t *testing.T) {
1217
t.Parallel()
1318

@@ -27,3 +32,76 @@ func Test_Github_Error(t *testing.T) {
2732
assert.Error(t, err)
2833
assert.False(t, updated)
2934
}
35+
36+
func Test_Github(t *testing.T) {
37+
t.Parallel()
38+
39+
if testing.Short() {
40+
return
41+
}
42+
43+
if getEnv(envGitToken) == "" {
44+
t.Skipf("%v env variable not set", envGitToken)
45+
return
46+
}
47+
48+
data := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
49+
cfg := Git{
50+
Token: getEnv(envGitToken),
51+
Owner: "vladopajic",
52+
Repository: "go-test-coverage",
53+
Branch: "badges-integration-test",
54+
FileName: "badge.svg",
55+
}
56+
s := NewGithub(cfg)
57+
58+
// put badge
59+
updated, err := s.Store(data)
60+
assert.NoError(t, err)
61+
assert.True(t, updated)
62+
63+
// put badge again - no change
64+
updated, err = s.Store(data)
65+
assert.NoError(t, err)
66+
assert.False(t, updated)
67+
68+
// put badge again - expect change
69+
updated, err = s.Store(append(data, byte(1)))
70+
assert.NoError(t, err)
71+
assert.True(t, updated)
72+
73+
deleteFile(t, cfg)
74+
}
75+
76+
func getEnv(key string) string {
77+
value, _ := os.LookupEnv(key)
78+
return value
79+
}
80+
81+
func deleteFile(t *testing.T, cfg Git) {
82+
t.Helper()
83+
84+
client := github.NewClient(nil).WithAuthToken(cfg.Token)
85+
86+
fc, _, _, err := client.Repositories.GetContents(
87+
context.Background(),
88+
cfg.Owner,
89+
cfg.Repository,
90+
cfg.FileName,
91+
&github.RepositoryContentGetOptions{Ref: cfg.Branch},
92+
)
93+
assert.NoError(t, err)
94+
95+
_, _, err = client.Repositories.DeleteFile(
96+
context.Background(),
97+
cfg.Owner,
98+
cfg.Repository,
99+
cfg.FileName,
100+
&github.RepositoryContentFileOptions{
101+
Message: github.String("delete testing badge " + cfg.FileName),
102+
Branch: &cfg.Branch,
103+
SHA: fc.SHA,
104+
},
105+
)
106+
assert.NoError(t, err)
107+
}

0 commit comments

Comments
 (0)