/
utils.go
57 lines (41 loc) · 906 Bytes
/
utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package utils
import (
"errors"
"path/filepath"
"runtime"
"testing"
)
var (
dir, _ = Dirname()
TestDirectoryRoot = dir + "/../../"
)
func ValueFromOrFail[T any](t *testing.T, value T, err error) T {
t.Helper()
AssertNilOrFail(t, err)
return value
}
func ValueFromSupplierOrFail[T any](t *testing.T, supplier func() (T, error)) T {
t.Helper()
value, err := supplier()
AssertNilOrFail(t, err)
return value
}
func SuccessOrFailNow[T any](t *testing.T, tester func() (T, error)) {
t.Helper()
_, err := tester()
AssertNilOrFail(t, err)
}
func Filename() (string, error) {
_, filename, _, ok := runtime.Caller(1)
if !ok {
return "", errors.New("unable to get the current filename") // nolint:goerr113
}
return filename, nil
}
func Dirname() (string, error) {
filename, err := Filename()
if err != nil {
return "", err
}
return filepath.Dir(filename), nil
}