Skip to content

Commit 3b688c4

Browse files
authored
Merge pull request #41 Removed dependencies from libary code
2 parents e2fe036 + 63b4111 commit 3b688c4

File tree

18 files changed

+354
-296
lines changed

18 files changed

+354
-296
lines changed

.github/workflows/go.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,18 @@ jobs:
2929
- name: Build
3030
run: go build -v ./...
3131

32+
- name: Build examples
33+
if: ${{ matrix.goVersion == env.GO_VERSION }}
34+
run: cd examples; go build -v ./...
35+
3236
- name: Test
3337
run: go test ./...
3438

35-
- name: Test with coverage profiler
39+
- name: Test examples
40+
if: ${{ matrix.goVersion == env.GO_VERSION }}
41+
run: cd examples; go test ./...
42+
43+
- name: Test library with coverage profiler
3644
if: ${{ matrix.goVersion == env.GO_VERSION }}
3745
run: go test -test.count=10 -race -covermode atomic -coverprofile=covprofile.out ./...
3846

@@ -42,6 +50,13 @@ jobs:
4250
with:
4351
version: latest
4452

53+
- name: golangci-lint examples
54+
if: ${{ matrix.goVersion == env.GO_VERSION }}
55+
uses: golangci/golangci-lint-action@v2
56+
with:
57+
version: latest
58+
working-directory: examples
59+
4560
- name: Coveralls install goveralls
4661
if: ${{ matrix.goVersion == env.GO_VERSION }}
4762
run: go install github.com/mattn/goveralls@latest

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Go Fixtures
77
===========
88

9-
Inspired by pytest fixtures.
9+
Inspired by pytest fixtures. No dependencies.
1010

1111
[Examples](https://github.com/rekby/fixenv/tree/master/examples)
1212

cache_test.go

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,12 @@ import (
88
"sync/atomic"
99
"testing"
1010
"time"
11-
12-
"github.com/stretchr/testify/assert"
1311
)
1412

1513
const waitTime = time.Second / 10
1614

1715
func TestCache_DeleteKeys(t *testing.T) {
1816
t.Run("simple", func(t *testing.T) {
19-
at := assert.New(t)
20-
2117
c := newCache()
2218
k1 := cacheKey("k1")
2319
k2 := cacheKey("k2")
@@ -33,25 +29,23 @@ func TestCache_DeleteKeys(t *testing.T) {
3329

3430
c.DeleteKeys(k1, k2)
3531
_, ok := c.get(k1)
36-
at.False(ok)
32+
requireFalse(t, ok)
3733
_, ok = c.get(k2)
38-
at.False(ok)
34+
requireFalse(t, ok)
3935
res, ok := c.get(k3)
40-
at.True(ok)
41-
at.Equal(val1, res.res.Value)
36+
requireTrue(t, ok)
37+
requireEquals(t, val1, res.res.Value.(string))
4238

4339
val2 := "test2"
4440
c.setOnce(k1, func() (res *Result, err error) {
4541
return NewResult(val2), nil
4642
})
4743
res, ok = c.get(k1)
48-
at.True(ok)
49-
at.Equal(val2, res.res.Value)
44+
requireTrue(t, ok)
45+
requireEquals(t, val2, res.res.Value.(string))
5046
})
5147

5248
t.Run("mutex", func(t *testing.T) {
53-
at := assert.New(t)
54-
5549
c := newCache()
5650
c.setOnce("asd", func() (res *Result, err error) {
5751
return NewResult(nil), nil
@@ -66,45 +60,42 @@ func TestCache_DeleteKeys(t *testing.T) {
6660
}()
6761

6862
time.Sleep(waitTime)
69-
at.Len(c.store, 1)
70-
at.Len(c.setLocks, 1)
63+
requireEquals(t, len(c.store), 1)
64+
requireEquals(t, len(c.setLocks), 1)
7165

7266
c.m.RUnlock()
7367
wg.Wait()
74-
at.Len(c.store, 0)
75-
at.Len(c.setLocks, 0)
68+
requireEquals(t, len(c.store), 0)
69+
requireEquals(t, len(c.setLocks), 0)
7670
})
7771
}
7872

7973
func TestCache_Get(t *testing.T) {
8074
t.Run("simple", func(t *testing.T) {
81-
at := assert.New(t)
8275
c := newCache()
8376

8477
_, ok := c.get("qwe")
85-
at.False(ok)
78+
requireFalse(t, ok)
8679

8780
c.store["asd"] = cacheVal{res: NewResult("val")}
8881

8982
res, ok := c.get("asd")
90-
at.True(ok)
91-
at.Equal(cacheVal{res: NewResult("val")}, res)
83+
requireTrue(t, ok)
84+
requireEquals(t, cacheVal{res: NewResult("val")}, res)
9285
})
9386

9487
t.Run("read_mutex", func(t *testing.T) {
95-
at := assert.New(t)
9688
c := newCache()
9789
c.setOnce("asd", func() (res *Result, err error) {
9890
return NewResult(nil), nil
9991
})
10092
c.m.RLock()
10193
_, ok := c.get("asd")
10294
c.m.RUnlock()
103-
at.True(ok)
95+
requireTrue(t, ok)
10496
})
10597

10698
t.Run("write_mutex", func(t *testing.T) {
107-
at := assert.New(t)
10899
c := newCache()
109100
c.setOnce("asd", func() (res *Result, err error) {
110101
return NewResult(nil), nil
@@ -119,42 +110,39 @@ func TestCache_Get(t *testing.T) {
119110
}()
120111

121112
time.Sleep(waitTime)
122-
at.False(ok)
113+
requireFalse(t, ok)
123114

124115
c.m.Unlock()
125116
wg.Wait()
126117

127-
at.True(ok)
118+
requireTrue(t, ok)
128119
})
129120

130121
}
131122

132123
func TestCache_SetOnce(t *testing.T) {
133124
t.Run("save_new_key", func(t *testing.T) {
134-
at := assert.New(t)
135-
136125
c := newCache()
137126
cnt := 0
138127
key1 := cacheKey("1")
139128
c.setOnce(key1, func() (res *Result, err error) {
140129
cnt++
141130
return NewResult(1), nil
142131
})
143-
at.Equal(1, cnt)
144-
at.Equal(1, c.store[key1].res.Value)
145-
at.NoError(c.store[key1].err)
132+
requireEquals(t, 1, cnt)
133+
requireEquals(t, 1, c.store[key1].res.Value)
134+
noError(t, c.store[key1].err)
146135

147136
c.setOnce(key1, func() (res *Result, err error) {
148137
cnt++
149138
return NewResult(2), nil
150139
})
151-
at.Equal(1, cnt)
152-
at.Equal(1, c.store[key1].res.Value)
153-
at.NoError(c.store[key1].err)
140+
requireEquals(t, 1, cnt)
141+
requireEquals(t, 1, c.store[key1].res.Value)
142+
noError(t, c.store[key1].err)
154143
})
155144

156145
t.Run("second_set_val", func(t *testing.T) {
157-
at := assert.New(t)
158146
c := newCache()
159147
key1 := cacheKey("1")
160148
key2 := cacheKey("2")
@@ -167,16 +155,15 @@ func TestCache_SetOnce(t *testing.T) {
167155
cnt++
168156
return NewResult(2), nil
169157
})
170-
at.Equal(2, cnt)
171-
at.Equal(1, c.store[key1].res.Value)
172-
at.NoError(c.store[key1].err)
173-
at.Equal(2, c.store[key2].res.Value)
174-
at.NoError(c.store[key2].err)
158+
requireEquals(t, 2, cnt)
159+
requireEquals(t, 1, c.store[key1].res.Value)
160+
noError(t, c.store[key1].err)
161+
requireEquals(t, 2, c.store[key2].res.Value)
162+
noError(t, c.store[key2].err)
175163
})
176164

177165
// exit without return value
178166
t.Run("exit_without_return", func(t *testing.T) {
179-
at := assert.New(t)
180167
c := newCache()
181168
key := cacheKey("3")
182169
var wg sync.WaitGroup
@@ -190,12 +177,11 @@ func TestCache_SetOnce(t *testing.T) {
190177
}()
191178
wg.Wait()
192179

193-
at.Nil(c.store[key].res)
194-
at.Error(c.store[key].err)
180+
requireNil(t, c.store[key].res)
181+
isError(t, c.store[key].err)
195182
})
196183

197184
t.Run("second_func_same_key_wait", func(t *testing.T) {
198-
at := assert.New(t)
199185
c := newCache()
200186
key := cacheKey("1")
201187

@@ -239,8 +225,8 @@ func TestCache_SetOnce(t *testing.T) {
239225
// second not work until first finished
240226
doneSecondVal := atomic.LoadInt64(&doneSecond)
241227
_, ok := c.store[key]
242-
at.False(ok)
243-
at.Equal(int64(0), doneSecondVal)
228+
requireFalse(t, ok)
229+
requireEquals(t, int64(0), doneSecondVal)
244230

245231
close(firstMuNeedFinish)
246232

@@ -251,12 +237,11 @@ func TestCache_SetOnce(t *testing.T) {
251237
<-secondFinished
252238

253239
doneSecondVal = atomic.LoadInt64(&doneSecond)
254-
at.Equal(1, c.store[key].res.Value)
255-
at.Equal(int64(1), doneSecondVal)
240+
requireEquals(t, 1, c.store[key].res.Value)
241+
requireEquals(t, int64(1), doneSecondVal)
256242
})
257243

258244
t.Run("second_func_other_key_work", func(t *testing.T) {
259-
at := assert.New(t)
260245
c := newCache()
261246
key1 := cacheKey("1")
262247
key2 := cacheKey("2")
@@ -295,8 +280,8 @@ func TestCache_SetOnce(t *testing.T) {
295280
// wait first func finished
296281
<-firstMuFinished
297282

298-
at.Equal(1, c.store[key1].res.Value)
299-
at.Equal(2, c.store[key2].res.Value)
283+
requireEquals(t, 1, c.store[key1].res.Value)
284+
requireEquals(t, 2, c.store[key2].res.Value)
300285
})
301286
}
302287

0 commit comments

Comments
 (0)