...

Source file src/github.com/fergusstrange/embedded-postgres/logging_test.go

Documentation: github.com/fergusstrange/embedded-postgres

     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