mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-24 09:18:31 +02:00
fix(rules): simplify and correct tests
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
package rules
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"math/rand"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"github.com/yusing/godoxy/internal/common"
|
||||
"github.com/yusing/godoxy/internal/logging/accesslog"
|
||||
gperr "github.com/yusing/goutils/errs"
|
||||
)
|
||||
@@ -21,6 +26,11 @@ var (
|
||||
stderr io.WriteCloser = noopWriteCloser{os.Stderr}
|
||||
)
|
||||
|
||||
var (
|
||||
testFiles = make(map[string]*bytes.Buffer)
|
||||
testFilesLock sync.Mutex
|
||||
)
|
||||
|
||||
func openFile(path string) (io.WriteCloser, gperr.Error) {
|
||||
switch path {
|
||||
case "/dev/stdout":
|
||||
@@ -28,9 +38,36 @@ func openFile(path string) (io.WriteCloser, gperr.Error) {
|
||||
case "/dev/stderr":
|
||||
return stderr, nil
|
||||
}
|
||||
|
||||
if common.IsTest {
|
||||
testFilesLock.Lock()
|
||||
defer testFilesLock.Unlock()
|
||||
if buf, ok := testFiles[path]; ok {
|
||||
return noopWriteCloser{buf}, nil
|
||||
}
|
||||
buf := bytes.NewBuffer(nil)
|
||||
testFiles[path] = buf
|
||||
return noopWriteCloser{buf}, nil
|
||||
}
|
||||
|
||||
f, err := accesslog.NewFileIO(path)
|
||||
if err != nil {
|
||||
return nil, ErrInvalidArguments.With(err)
|
||||
}
|
||||
return f, nil
|
||||
}
|
||||
|
||||
func TestRandomFileName() string {
|
||||
return fmt.Sprintf("test-file-%d.txt", rand.Intn(1000000))
|
||||
}
|
||||
|
||||
func TestFileContent(path string) []byte {
|
||||
testFilesLock.Lock()
|
||||
defer testFilesLock.Unlock()
|
||||
|
||||
buf, ok := testFiles[path]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user