wandb
74 строки · 1.8 Кб
1package observability_test
2
3import (
4"fmt"
5"io/fs"
6"os"
7"testing"
8
9"github.com/spf13/afero"
10"github.com/stretchr/testify/assert"
11
12"github.com/wandb/wandb/core/pkg/observability"
13)
14
15type AferoFs struct {
16Afs afero.Fs
17}
18
19func (afs AferoFs) MkdirAll(path string, perm os.FileMode) error {
20return afs.Afs.MkdirAll(path, perm)
21}
22
23func (afs AferoFs) OpenFile(name string, flag int, perm os.FileMode) (fs.File, error) {
24return afs.Afs.OpenFile(name, flag, perm)
25}
26
27func TestGetLoggerPath(t *testing.T) {
28fs := AferoFs{Afs: afero.NewMemMapFs()}
29
30os.Setenv("WANDB_CACHE_DIR", "/tmp/wandb")
31defer os.Unsetenv("WANDB_CACHE_DIR")
32
33file, err := observability.GetLoggerPathFS(fs)
34assert.NoError(t, err)
35assert.NotNil(t, file)
36
37// Type assert to afero.File to access the Name method
38aferoFile, ok := file.(afero.File)
39assert.True(t, ok, "File should be of type afero.File")
40
41// Assert file was created
42_, err = fs.Afs.Stat(aferoFile.Name())
43assert.NoError(t, err)
44
45aferoFile.Close()
46}
47
48func TestGetLoggerPath_MkdirFail(t *testing.T) {
49fs := AferoFs{Afs: afero.NewReadOnlyFs(afero.NewMemMapFs())}
50
51os.Setenv("WANDB_CACHE_DIR", "/tmp/wandb")
52defer os.Unsetenv("WANDB_CACHE_DIR")
53
54_, err := observability.GetLoggerPathFS(fs)
55assert.Error(t, err, "Expected an error when failing to create a directory")
56}
57
58type FailOpenFileFs struct {
59afero.Fs
60}
61
62func (fs FailOpenFileFs) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
63return nil, fmt.Errorf("simulated open file error")
64}
65
66func TestGetLoggerPath_OpenFileFail(t *testing.T) {
67fs := AferoFs{Afs: FailOpenFileFs{afero.NewMemMapFs()}}
68
69os.Setenv("WANDB_CACHE_DIR", "/tmp/wandb")
70defer os.Unsetenv("WANDB_CACHE_DIR")
71
72_, err := observability.GetLoggerPathFS(fs)
73assert.Error(t, err, "Expected an error when failing to open a file")
74}
75