mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-09 23:24:05 -08:00
Fix data race in lexer and lexer test
As described in #1898 'go test -race' detects a race in lexer code. This pacth fixes it and also add '-race' option to test target to prevent regression.
This commit is contained in:
parent
b23169d86f
commit
485f7dde08
2
Makefile
2
Makefile
|
@ -38,7 +38,7 @@ check_license:
|
|||
|
||||
test:
|
||||
@echo ">> running tests"
|
||||
@$(GO) test -short $(pkgs)
|
||||
@$(GO) test -race -short $(pkgs)
|
||||
|
||||
format:
|
||||
@echo ">> formatting code"
|
||||
|
|
|
@ -428,9 +428,16 @@ func (l *lexer) nextItem() item {
|
|||
|
||||
// lex creates a new scanner for the input string.
|
||||
func lex(input string) *lexer {
|
||||
return lexWithSeriesDesc(input, false)
|
||||
}
|
||||
|
||||
// lexWithSeriesDesc creates a new scanner for the input string
|
||||
// and specify seriesDesc to prevent data race in tests
|
||||
func lexWithSeriesDesc(input string, seriesDesc bool) *lexer {
|
||||
l := &lexer{
|
||||
input: input,
|
||||
items: make(chan item),
|
||||
input: input,
|
||||
items: make(chan item),
|
||||
seriesDesc: seriesDesc,
|
||||
}
|
||||
go l.run()
|
||||
return l
|
||||
|
|
|
@ -438,9 +438,7 @@ var tests = []struct {
|
|||
// for the parser to avoid duplicated effort.
|
||||
func TestLexer(t *testing.T) {
|
||||
for i, test := range tests {
|
||||
l := lex(test.input)
|
||||
l.seriesDesc = test.seriesDesc
|
||||
|
||||
l := lexWithSeriesDesc(test.input, test.seriesDesc)
|
||||
out := []item{}
|
||||
for it := range l.items {
|
||||
out = append(out, it)
|
||||
|
|
Loading…
Reference in a new issue