Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.25'
go-version-file: go.mod
cache: false

- name: Verify go.mod is tidy
run: |
Expand All @@ -30,12 +31,13 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: false

- name: Run golangci-lint
uses: golangci/golangci-lint-action@v4
uses: golangci/golangci-lint-action@v9
with:
version: latest

Expand All @@ -46,9 +48,10 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: false

- name: Install govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
Expand All @@ -63,9 +66,10 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: false

- name: Run tests
run: go test -v -race -coverprofile=coverage.out ./...
Expand All @@ -83,9 +87,10 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: false

- name: Run fuzz tests
run: |
Expand Down Expand Up @@ -113,9 +118,10 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: false

- name: Build
env:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
- uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: false
Expand All @@ -38,9 +38,9 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
- uses: actions/setup-go@v6
with:
go-version: stable
go-version-file: go.mod
cache: false

- uses: actions/download-artifact@v4
Expand Down
4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
module github.com/espebra/pastebin

go 1.24.0

toolchain go1.24.11
go 1.25.7

require (
github.com/aws/aws-sdk-go-v2 v1.41.1
Expand Down
9 changes: 3 additions & 6 deletions internal/config/config_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package config

import (
"os"
"testing"
"time"
)

func TestLoad_RequiredS3Bucket(t *testing.T) {
// Clear any existing PASTEBIN_S3_BUCKET
os.Unsetenv("PASTEBIN_S3_BUCKET")
t.Setenv("PASTEBIN_S3_BUCKET", "")

_, err := Load()
if err == nil {
Expand All @@ -17,8 +16,7 @@ func TestLoad_RequiredS3Bucket(t *testing.T) {
}

func TestLoad_Defaults(t *testing.T) {
os.Setenv("PASTEBIN_S3_BUCKET", "test-bucket")
defer os.Unsetenv("PASTEBIN_S3_BUCKET")
t.Setenv("PASTEBIN_S3_BUCKET", "test-bucket")

cfg, err := Load()
if err != nil {
Expand Down Expand Up @@ -77,8 +75,7 @@ func TestLoad_CustomValues(t *testing.T) {
}

for k, v := range envVars {
os.Setenv(k, v)
defer os.Unsetenv(k)
t.Setenv(k, v)
}

cfg, err := Load()
Expand Down
6 changes: 3 additions & 3 deletions internal/storage/s3.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ func (s *S3Storage) Get(ctx context.Context, checksum string) (*paste.Paste, *pa
if err != nil {
return nil, nil, fmt.Errorf("failed to get paste: %w", err)
}
defer pasteResult.Body.Close()
defer func() { _ = pasteResult.Body.Close() }()

content, err := io.ReadAll(pasteResult.Body)
if err != nil {
Expand All @@ -162,7 +162,7 @@ func (s *S3Storage) Get(ctx context.Context, checksum string) (*paste.Paste, *pa
if err != nil {
return nil, nil, fmt.Errorf("failed to get metadata: %w", err)
}
defer metaResult.Body.Close()
defer func() { _ = metaResult.Body.Close() }()

var meta paste.Meta
if err := json.NewDecoder(metaResult.Body).Decode(&meta); err != nil {
Expand Down Expand Up @@ -244,7 +244,7 @@ func (s *S3Storage) fetchMeta(ctx context.Context, key *string) (*paste.Meta, er
if err != nil {
return nil, err
}
defer result.Body.Close()
defer func() { _ = result.Body.Close() }()

var meta paste.Meta
if err := json.NewDecoder(result.Body).Decode(&meta); err != nil {
Expand Down