From 6d0099bbfce64966b2fd7908142f99129af346e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:10:20 +0100 Subject: [PATCH 1/6] gh unit test --- pkg/testcoverage/badgestorer/github_test.go | 67 +++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/pkg/testcoverage/badgestorer/github_test.go b/pkg/testcoverage/badgestorer/github_test.go index 4b241312..8d18886b 100644 --- a/pkg/testcoverage/badgestorer/github_test.go +++ b/pkg/testcoverage/badgestorer/github_test.go @@ -1,13 +1,18 @@ package badgestorer_test import ( + "context" + "os" "testing" + "github.com/google/go-github/v56/github" "github.com/stretchr/testify/assert" . "github.com/vladopajic/go-test-coverage/v2/pkg/testcoverage/badgestorer" ) +const envGitToken = "GITHUB_TOKEN" + func Test_Github_Error(t *testing.T) { t.Parallel() @@ -27,3 +32,65 @@ func Test_Github_Error(t *testing.T) { assert.Error(t, err) assert.False(t, updated) } + +func Test_Github(t *testing.T) { + t.Parallel() + + if testing.Short() { + return + } + + if getEnv(envGitToken) == "" { + t.Skipf("%v env variable not set", envGitToken) + return + } + + data := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} + cfg := Git{ + Token: getEnv(envGitToken), + Owner: "vladopajic", + Repository: "go-test-coverage", + Branch: "unit-test", + FileName: "badge.svg", + } + s := NewGithub(cfg) + + // put badge + updated, err := s.Store(data) + assert.NoError(t, err) + assert.True(t, updated) + + // put badge again - no change + updated, err = s.Store(data) + assert.NoError(t, err) + assert.False(t, updated) + + // put badge again - expect change + updated, err = s.Store(append(data, byte(1))) + assert.NoError(t, err) + assert.True(t, updated) + + deleteFile(t, cfg) +} + +func getEnv(key string) string { + value, _ := os.LookupEnv(key) + return value +} + +func deleteFile(t *testing.T, cfg Git) { + t.Helper() + + client := github.NewClient(nil).WithAuthToken(cfg.Token) + _, _, err := client.Repositories.DeleteFile( + context.Background(), + cfg.Owner, + cfg.Repository, + cfg.FileName, + &github.RepositoryContentFileOptions{ + Message: github.String("delete testing badge " + cfg.FileName), + Branch: &cfg.Branch, + }, + ) + assert.NoError(t, err) +} From 8884a7d159a84625a61ae3f9a7c74188cb20eaa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:23:50 +0100 Subject: [PATCH 2/6] test --- .github/workflows/test.yml | 2 ++ pkg/testcoverage/badgestorer/github_test.go | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4428b8fe..3bdd672a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,6 +16,8 @@ jobs: go-version-file: go.mod - name: test + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for Github test run: make test - name: check test coverage diff --git a/pkg/testcoverage/badgestorer/github_test.go b/pkg/testcoverage/badgestorer/github_test.go index 8d18886b..c07cbd30 100644 --- a/pkg/testcoverage/badgestorer/github_test.go +++ b/pkg/testcoverage/badgestorer/github_test.go @@ -50,7 +50,7 @@ func Test_Github(t *testing.T) { Token: getEnv(envGitToken), Owner: "vladopajic", Repository: "go-test-coverage", - Branch: "unit-test", + Branch: "badges-unit-test", FileName: "badge.svg", } s := NewGithub(cfg) @@ -82,7 +82,17 @@ func deleteFile(t *testing.T, cfg Git) { t.Helper() client := github.NewClient(nil).WithAuthToken(cfg.Token) - _, _, err := client.Repositories.DeleteFile( + + fc, _, _, err := client.Repositories.GetContents( + context.Background(), + cfg.Owner, + cfg.Repository, + cfg.FileName, + &github.RepositoryContentGetOptions{Ref: cfg.Branch}, + ) + assert.NoError(t, err) + + _, _, err = client.Repositories.DeleteFile( context.Background(), cfg.Owner, cfg.Repository, @@ -90,6 +100,7 @@ func deleteFile(t *testing.T, cfg Git) { &github.RepositoryContentFileOptions{ Message: github.String("delete testing badge " + cfg.FileName), Branch: &cfg.Branch, + SHA: fc.SHA, }, ) assert.NoError(t, err) From d3024357bee2ed8c7165ace18d45111bf29d8d62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:25:09 +0100 Subject: [PATCH 3/6] lint fix --- pkg/testcoverage/badgestorer/github_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testcoverage/badgestorer/github_test.go b/pkg/testcoverage/badgestorer/github_test.go index c07cbd30..62dd8c18 100644 --- a/pkg/testcoverage/badgestorer/github_test.go +++ b/pkg/testcoverage/badgestorer/github_test.go @@ -11,7 +11,7 @@ import ( . "github.com/vladopajic/go-test-coverage/v2/pkg/testcoverage/badgestorer" ) -const envGitToken = "GITHUB_TOKEN" +const envGitToken = "GITHUB_TOKEN" //nolint:gosec // false-positive func Test_Github_Error(t *testing.T) { t.Parallel() From 444242d23fe50b7f8e68e0ba1000b98d2a2f52b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:28:36 +0100 Subject: [PATCH 4/6] update --- .github/workflows/test.yml | 2 +- pkg/testcoverage/badgestorer/github_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3bdd672a..5f4a0af1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: - name: test env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for Github test + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for GitHub badge storer integration test run: make test - name: check test coverage diff --git a/pkg/testcoverage/badgestorer/github_test.go b/pkg/testcoverage/badgestorer/github_test.go index 62dd8c18..d1877592 100644 --- a/pkg/testcoverage/badgestorer/github_test.go +++ b/pkg/testcoverage/badgestorer/github_test.go @@ -50,7 +50,7 @@ func Test_Github(t *testing.T) { Token: getEnv(envGitToken), Owner: "vladopajic", Repository: "go-test-coverage", - Branch: "badges-unit-test", + Branch: "badges-integration-test", FileName: "badge.svg", } s := NewGithub(cfg) From bd37c3790dc3f81f14917577987fbcd8a1760885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:34:37 +0100 Subject: [PATCH 5/6] remove override coverage --- .github/.testcoverage.yml | 5 +---- pkg/testcoverage/badgestorer/github.go | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/.testcoverage.yml b/.github/.testcoverage.yml index 988f532a..c3bc1ff4 100644 --- a/.github/.testcoverage.yml +++ b/.github/.testcoverage.yml @@ -4,10 +4,7 @@ profile: cover.short.profile,cover.long.profile local-prefix: "github.com/vladopajic/go-test-coverage/v2" threshold: file: 100 - total: 95 -override: - - threshold: 50 - path: badgestorer/github.go$ + total: 100 exclude: paths: - main\.go$ \ No newline at end of file diff --git a/pkg/testcoverage/badgestorer/github.go b/pkg/testcoverage/badgestorer/github.go index 6efdb76d..316ef6d1 100644 --- a/pkg/testcoverage/badgestorer/github.go +++ b/pkg/testcoverage/badgestorer/github.go @@ -65,12 +65,12 @@ func (s *githubStorer) Store(data []byte) (bool, error) { return updateBadge(nil) } - if err != nil { + if err != nil { //coverage-ignore return false, fmt.Errorf("get badge content: %w", err) } content, err := fc.GetContent() - if err != nil { + if err != nil { //coverage-ignore return false, fmt.Errorf("decode badge content: %w", err) } From 004e95292d77f067fbc2979f520364a8b17f67cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlado=20Paji=C4=87?= Date: Mon, 11 Nov 2024 13:35:30 +0100 Subject: [PATCH 6/6] lint fix --- pkg/testcoverage/badgestorer/github.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/testcoverage/badgestorer/github.go b/pkg/testcoverage/badgestorer/github.go index 316ef6d1..3fb7bc95 100644 --- a/pkg/testcoverage/badgestorer/github.go +++ b/pkg/testcoverage/badgestorer/github.go @@ -65,12 +65,12 @@ func (s *githubStorer) Store(data []byte) (bool, error) { return updateBadge(nil) } - if err != nil { //coverage-ignore + if err != nil { // coverage-ignore return false, fmt.Errorf("get badge content: %w", err) } content, err := fc.GetContent() - if err != nil { //coverage-ignore + if err != nil { // coverage-ignore return false, fmt.Errorf("decode badge content: %w", err) }