master
guangwu 1 year ago committed by GitHub
parent 4a2a8d9e45
commit 76a7a17e57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -78,7 +78,7 @@ func TestBulkExecutorFlush(t *testing.T) {
wait.Wait() wait.Wait()
} }
func TestBuldExecutorFlushSlowTasks(t *testing.T) { func TestBulkExecutorFlushSlowTasks(t *testing.T) {
const total = 1500 const total = 1500
lock := new(sync.Mutex) lock := new(sync.Mutex)
result := make([]any, 0, 10000) result := make([]any, 0, 10000)

@ -168,23 +168,23 @@ func TestPeriodicalExecutor_FlushPanic(t *testing.T) {
func TestPeriodicalExecutor_Wait(t *testing.T) { func TestPeriodicalExecutor_Wait(t *testing.T) {
var lock sync.Mutex var lock sync.Mutex
executer := NewBulkExecutor(func(tasks []any) { executor := NewBulkExecutor(func(tasks []any) {
lock.Lock() lock.Lock()
defer lock.Unlock() defer lock.Unlock()
time.Sleep(10 * time.Millisecond) time.Sleep(10 * time.Millisecond)
}, WithBulkTasks(1), WithBulkInterval(time.Second)) }, WithBulkTasks(1), WithBulkInterval(time.Second))
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
executer.Add(1) executor.Add(1)
} }
executer.Flush() executor.Flush()
executer.Wait() executor.Wait()
} }
func TestPeriodicalExecutor_WaitFast(t *testing.T) { func TestPeriodicalExecutor_WaitFast(t *testing.T) {
const total = 3 const total = 3
var cnt int var cnt int
var lock sync.Mutex var lock sync.Mutex
executer := NewBulkExecutor(func(tasks []any) { executor := NewBulkExecutor(func(tasks []any) {
defer func() { defer func() {
cnt++ cnt++
}() }()
@ -193,10 +193,10 @@ func TestPeriodicalExecutor_WaitFast(t *testing.T) {
time.Sleep(10 * time.Millisecond) time.Sleep(10 * time.Millisecond)
}, WithBulkTasks(1), WithBulkInterval(10*time.Millisecond)) }, WithBulkTasks(1), WithBulkInterval(10*time.Millisecond))
for i := 0; i < total; i++ { for i := 0; i < total; i++ {
executer.Add(2) executor.Add(2)
} }
executer.Flush() executor.Flush()
executer.Wait() executor.Wait()
assert.Equal(t, total, cnt) assert.Equal(t, total, cnt)
} }

@ -11,29 +11,29 @@ import (
// The file is kept as open, the caller should close the file handle, // The file is kept as open, the caller should close the file handle,
// and remove the file by name. // and remove the file by name.
func TempFileWithText(text string) (*os.File, error) { func TempFileWithText(text string) (*os.File, error) {
tmpfile, err := os.CreateTemp(os.TempDir(), hash.Md5Hex([]byte(text))) tmpFile, err := os.CreateTemp(os.TempDir(), hash.Md5Hex([]byte(text)))
if err != nil { if err != nil {
return nil, err return nil, err
} }
if err := os.WriteFile(tmpfile.Name(), []byte(text), os.ModeTemporary); err != nil { if err := os.WriteFile(tmpFile.Name(), []byte(text), os.ModeTemporary); err != nil {
return nil, err return nil, err
} }
return tmpfile, nil return tmpFile, nil
} }
// TempFilenameWithText creates the file with the given content, // TempFilenameWithText creates the file with the given content,
// and returns the filename (full path). // and returns the filename (full path).
// The caller should remove the file after use. // The caller should remove the file after use.
func TempFilenameWithText(text string) (string, error) { func TempFilenameWithText(text string) (string, error) {
tmpfile, err := TempFileWithText(text) tmpFile, err := TempFileWithText(text)
if err != nil { if err != nil {
return "", err return "", err
} }
filename := tmpfile.Name() filename := tmpFile.Name()
if err = tmpfile.Close(); err != nil { if err = tmpFile.Close(); err != nil {
return "", err return "", err
} }

@ -40,11 +40,11 @@ b`,
for _, test := range tests { for _, test := range tests {
t.Run(test.input, func(t *testing.T) { t.Run(test.input, func(t *testing.T) {
tmpfile, err := fs.TempFilenameWithText(test.input) tmpFile, err := fs.TempFilenameWithText(test.input)
assert.Nil(t, err) assert.Nil(t, err)
defer os.Remove(tmpfile) defer os.Remove(tmpFile)
content, err := ReadText(tmpfile) content, err := ReadText(tmpFile)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, test.expect, content) assert.Equal(t, test.expect, content)
}) })
@ -59,9 +59,9 @@ func TestReadTextLines(t *testing.T) {
#a #a
3` 3`
tmpfile, err := fs.TempFilenameWithText(text) tmpFile, err := fs.TempFilenameWithText(text)
assert.Nil(t, err) assert.Nil(t, err)
defer os.Remove(tmpfile) defer os.Remove(tmpFile)
tests := []struct { tests := []struct {
options []TextReadOption options []TextReadOption
@ -87,7 +87,7 @@ func TestReadTextLines(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(stringx.Rand(), func(t *testing.T) { t.Run(stringx.Rand(), func(t *testing.T) {
lines, err := ReadTextLines(tmpfile, test.options...) lines, err := ReadTextLines(tmpFile, test.options...)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, test.expectLines, len(lines)) assert.Equal(t, test.expectLines, len(lines))
}) })

@ -250,11 +250,11 @@ func EqualDoc(spec1, spec2 Spec) bool {
} }
func (v *ApiVisitor) getDoc(t TokenStream) []Expr { func (v *ApiVisitor) getDoc(t TokenStream) []Expr {
return v.getHiddenTokensToLeft(t, api.COMEMNTS, false) return v.getHiddenTokensToLeft(t, api.COMMENTS, false)
} }
func (v *ApiVisitor) getComment(t TokenStream) Expr { func (v *ApiVisitor) getComment(t TokenStream) Expr {
list := v.getHiddenTokensToRight(t, api.COMEMNTS) list := v.getHiddenTokensToRight(t, api.COMMENTS)
if len(list) == 0 { if len(list) == 0 {
return nil return nil
} }

@ -237,4 +237,4 @@ const (
ApiParserLexerLetterOrDigit = 25 ApiParserLexerLetterOrDigit = 25
) )
const COMEMNTS = 88 const COMMENTS = 88

@ -175,7 +175,7 @@ func isNormal(p *ApiParserParser) bool {
return len(list) > 1 return len(list) > 1
} }
// MatchTag returns a Boolean value, which returns true if it does matched, otherwise returns fase // MatchTag returns a Boolean value, which returns true if it does matched, otherwise returns false
func MatchTag(v string) bool { func MatchTag(v string) bool {
return matchRegex(v, tagRegex) return matchRegex(v, tagRegex)
} }

Loading…
Cancel
Save