Skip to content

Commit dcb6b71

Browse files
committed
tests: add tests
1 parent cf51128 commit dcb6b71

File tree

2 files changed

+124
-0
lines changed

2 files changed

+124
-0
lines changed

internal/cache/cache_test.go

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package cache
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
"golang.org/x/tools/go/packages"
10+
11+
"github.com/golangci/golangci-lint/pkg/logutils"
12+
"github.com/golangci/golangci-lint/pkg/timeutils"
13+
)
14+
15+
func setupCache(t *testing.T) *Cache {
16+
t.Helper()
17+
18+
log := logutils.NewStderrLog("skip")
19+
sw := timeutils.NewStopwatch("pkgcache", log)
20+
21+
pkgCache, err := NewCache(sw, log)
22+
require.NoError(t, err)
23+
24+
return pkgCache
25+
}
26+
27+
func fakePackage() *packages.Package {
28+
return &packages.Package{
29+
PkgPath: "github.com/golangci/example",
30+
CompiledGoFiles: []string{
31+
"./testdata/hello.go",
32+
},
33+
Imports: map[string]*packages.Package{
34+
"a": {
35+
PkgPath: "github.com/golangci/example/a",
36+
},
37+
"b": {
38+
PkgPath: "github.com/golangci/example/b",
39+
},
40+
"unsafe": {
41+
PkgPath: "unsafe",
42+
},
43+
},
44+
}
45+
}
46+
47+
func Test_buildKey(t *testing.T) {
48+
pkgCache := setupCache(t)
49+
50+
pkg := fakePackage()
51+
52+
actionID, err := pkgCache.buildKey(pkg, HashModeNeedAllDeps, "")
53+
require.NoError(t, err)
54+
55+
assert.Equal(t, "f32bf1bf010aa9b570e081c64ec9e22e17aafa1e822990ba952905ec5fdf8d9d", fmt.Sprintf("%x", actionID))
56+
}
57+
58+
func Test_pkgActionID(t *testing.T) {
59+
pkgCache := setupCache(t)
60+
61+
pkg := fakePackage()
62+
63+
actionID, err := pkgCache.pkgActionID(pkg, HashModeNeedAllDeps)
64+
require.NoError(t, err)
65+
66+
assert.Equal(t, "f690f05acd1024386ae912d9ad9c04080523b9a899f6afe56ab3108d88215c1d", fmt.Sprintf("%x", actionID))
67+
}
68+
69+
func Test_packageHash_load(t *testing.T) {
70+
pkgCache := setupCache(t)
71+
72+
pkg := fakePackage()
73+
74+
pkgCache.pkgHashes.Store(pkg, hashResults{HashModeNeedAllDeps: "fake"})
75+
76+
hash, err := pkgCache.packageHash(pkg, HashModeNeedAllDeps)
77+
require.NoError(t, err)
78+
79+
assert.Equal(t, "fake", hash)
80+
}
81+
82+
func Test_packageHash_store(t *testing.T) {
83+
pkgCache := setupCache(t)
84+
85+
pkg := fakePackage()
86+
87+
hash, err := pkgCache.packageHash(pkg, HashModeNeedAllDeps)
88+
require.NoError(t, err)
89+
90+
assert.Equal(t, "9c602ef861197b6807e82c99caa7c4042eb03c1a92886303fb02893744355131", hash)
91+
92+
results, ok := pkgCache.pkgHashes.Load(pkg)
93+
require.True(t, ok)
94+
95+
hashRes := results.(hashResults)
96+
97+
require.Len(t, hashRes, 3)
98+
99+
assert.Equal(t, "8978e3d76c6f99e9663558d7147a7790f229a676804d1fde706a611898547b74", hashRes[HashModeNeedOnlySelf])
100+
assert.Equal(t, "b1aef902a0619b5cbfc2d6e2e91a73dd58dd448e58274b2d7a5ff8efd97aefa4", hashRes[HashModeNeedDirectDeps])
101+
assert.Equal(t, "9c602ef861197b6807e82c99caa7c4042eb03c1a92886303fb02893744355131", hashRes[HashModeNeedAllDeps])
102+
}
103+
104+
func Test_computeHash(t *testing.T) {
105+
pkgCache := setupCache(t)
106+
107+
pkg := fakePackage()
108+
109+
results, err := pkgCache.computePkgHash(pkg)
110+
require.NoError(t, err)
111+
112+
require.Len(t, results, 3)
113+
114+
assert.Equal(t, "8978e3d76c6f99e9663558d7147a7790f229a676804d1fde706a611898547b74", results[HashModeNeedOnlySelf])
115+
assert.Equal(t, "b1aef902a0619b5cbfc2d6e2e91a73dd58dd448e58274b2d7a5ff8efd97aefa4", results[HashModeNeedDirectDeps])
116+
assert.Equal(t, "9c602ef861197b6807e82c99caa7c4042eb03c1a92886303fb02893744355131", results[HashModeNeedAllDeps])
117+
}

internal/cache/testdata/hello.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package testdata
2+
3+
import "fmt"
4+
5+
func Hello() {
6+
fmt.Println("hello world")
7+
}

0 commit comments

Comments
 (0)