...
1 package embeddedpostgres
2
3 import (
4 "fmt"
5 "io/ioutil"
6 "os"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 )
12
13 type customLogger struct {
14 logLines []byte
15 }
16
17 func (cl *customLogger) Write(p []byte) (n int, err error) {
18 cl.logLines = append(cl.logLines, p...)
19 return len(p), nil
20 }
21
22 func Test_SyncedLogger_CreateError(t *testing.T) {
23 logger := customLogger{}
24 _, err := newSyncedLogger("/not-exists-anywhere", &logger)
25
26 assert.Error(t, err)
27 }
28
29 func Test_SyncedLogger_ErrorDuringFlush(t *testing.T) {
30 logger := customLogger{}
31
32 sl, slErr := newSyncedLogger("", &logger)
33
34 assert.NoError(t, slErr)
35
36 rmFileErr := os.Remove(sl.file.Name())
37
38 assert.NoError(t, rmFileErr)
39
40 err := sl.flush()
41
42 assert.Error(t, err)
43 }
44
45 func Test_SyncedLogger_NoErrorDuringFlush(t *testing.T) {
46 logger := customLogger{}
47
48 sl, slErr := newSyncedLogger("", &logger)
49
50 assert.NoError(t, slErr)
51
52 err := os.WriteFile(sl.file.Name(), []byte("some logs\non a new line"), os.ModeAppend)
53
54 assert.NoError(t, err)
55
56 err = sl.flush()
57
58 assert.NoError(t, err)
59
60 assert.Equal(t, "some logs\non a new line", string(logger.logLines))
61 }
62
63 func Test_readLogsOrTimeout(t *testing.T) {
64 logFile, err := ioutil.TempFile("", "prepare_database_test_log")
65 if err != nil {
66 panic(err)
67 }
68
69 logContent, err := readLogsOrTimeout(logFile)
70 assert.NoError(t, err)
71 assert.Equal(t, []byte(""), logContent)
72
73 _, _ = logFile.Write([]byte("and here are the logs!"))
74
75 logContent, err = readLogsOrTimeout(logFile)
76 assert.NoError(t, err)
77 assert.Equal(t, []byte("and here are the logs!"), logContent)
78
79 require.NoError(t, os.Remove(logFile.Name()))
80 logContent, err = readLogsOrTimeout(logFile)
81 assert.Equal(t, []byte("logs could not be read"), logContent)
82 assert.EqualError(t, err, fmt.Sprintf("open %s: no such file or directory", logFile.Name()))
83 }
84
View as plain text