Skip to content

Commit b1b10c2

Browse files
authored
Merge pull request #33 add standard fixtures: Context,TempFile,TempFileNamed
2 parents 0f142c1 + 8ede8c1 commit b1b10c2

File tree

4 files changed

+72
-1
lines changed

4 files changed

+72
-1
lines changed

sf/context.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package sf
2+
3+
import (
4+
"context"
5+
"github.com/rekby/fixenv"
6+
)
7+
8+
func Context(e fixenv.Env) context.Context {
9+
return e.CacheWithCleanup(nil, nil, func() (res interface{}, _ fixenv.FixtureCleanupFunc, _ error) {
10+
ctx, ctxCancel := context.WithCancel(context.Background())
11+
return ctx, fixenv.FixtureCleanupFunc(ctxCancel), nil
12+
}).(context.Context)
13+
}

sf/context_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package sf
2+
3+
import (
4+
"context"
5+
"github.com/rekby/fixenv"
6+
"github.com/rekby/fixenv/internal"
7+
"testing"
8+
)
9+
10+
func TestContext(t *testing.T) {
11+
tm := &internal.TestMock{}
12+
13+
e := fixenv.New(tm)
14+
ctx := Context(e)
15+
if ctx.Err() != nil {
16+
t.Fatal(ctx.Err())
17+
}
18+
19+
tm.CallCleanup()
20+
if ctx.Err() != context.Canceled {
21+
t.Fatal(ctx.Err())
22+
}
23+
}

sf/filesystem.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ import (
55
"os"
66
)
77

8+
// TempDir return path for existet temporary folder
9+
// the folder will remove after test finish with all contents
810
func TempDir(e fixenv.Env) string {
911
return e.CacheWithCleanup(nil, nil, func() (res interface{}, cleanup fixenv.FixtureCleanupFunc, err error) {
10-
dir, err := os.MkdirTemp("", "")
12+
dir, err := os.MkdirTemp("", "fixenv-auto-")
1113
mustNoErr(e, err, "failed to create temp dir: %v", err)
1214
e.T().Logf("Temp dir created: %v", dir)
1315
clean := func() {
@@ -17,3 +19,20 @@ func TempDir(e fixenv.Env) string {
1719
return dir, clean, nil
1820
}).(string)
1921
}
22+
23+
// TempFile return path to empty existed file in TempDir
24+
func TempFile(e fixenv.Env) string {
25+
return TempFileNamed(e, "fixenv-auto-")
26+
}
27+
28+
// TempFileNamed return path to empty file in TempDir
29+
// pattern is pattern for os.CreateTemp
30+
func TempFileNamed(e fixenv.Env, pattern string) string {
31+
return e.Cache(nil, nil, func() (res interface{}, err error) {
32+
dir := TempDir(e)
33+
f, err := os.CreateTemp(dir, pattern)
34+
mustNoErr(e, err, "failed to create temp file: %w", err)
35+
fName := f.Name()
36+
return fName, f.Close()
37+
}).(string)
38+
}

sf/filesystem_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,19 @@ func TestTempDir(t *testing.T) {
2020
t.Fatalf("Directory must be removed after test finished, have err: %v", err)
2121
}
2222
}
23+
24+
func TestTempFile(t *testing.T) {
25+
var file string
26+
t.Run("subtest", func(t *testing.T) {
27+
e := fixenv.New(t)
28+
file := TempFile(e)
29+
if _, err := os.Stat(file); err != nil {
30+
t.Fatal(err)
31+
}
32+
})
33+
34+
_, err := os.Stat(file)
35+
if !os.IsNotExist(err) {
36+
t.Fatal("File must be removed with temp directory")
37+
}
38+
}

0 commit comments

Comments
 (0)