diff --git a/config/rjreader.go b/config/rjreader.go index e01e64811..5dd03667c 100644 --- a/config/rjreader.go +++ b/config/rjreader.go @@ -317,10 +317,7 @@ func (rjr *rjReader) getJSONOffsetLine(offset int64) (line, character int64) { return nil } readLineComment := func() error { - for i < offset { - if rjr.isEndOfFile() { - return io.EOF - } + for !rjr.isEndOfFile() { b := rjr.buf[rjr.indx] rjr.indx++ if isNewLine(b) { @@ -330,14 +327,11 @@ func (rjr *rjReader) getJSONOffsetLine(offset int64) (line, character int64) { } character++ } - return nil + return io.EOF } readComment := func() error { - for i < offset { - if rjr.isEndOfFile() { - return io.EOF - } + for !rjr.isEndOfFile() { b := rjr.buf[rjr.indx] rjr.indx++ if isNewLine(b) { @@ -361,9 +355,8 @@ func (rjr *rjReader) getJSONOffsetLine(offset int64) (line, character int64) { rjr.UnreadByte() } } - return nil + return io.EOF } - for i < offset { // handle the parsing if rjr.isEndOfFile() { return diff --git a/config/rjreader_test.go b/config/rjreader_test.go index ab60e4c99..3a8c8fd61 100644 --- a/config/rjreader_test.go +++ b/config/rjreader_test.go @@ -483,65 +483,65 @@ func TestGetErrorLine2(t *testing.T) { func TestGetJSONOffsetLineFuncError(t *testing.T) { rjr := NewRjReaderFromBytes([]byte("{}")) rjr.indx = 7 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } func TestGetJSONOffsetLineReadStringEOF(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`{","}`)) rjr.indx = 3 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } func TestGetJSONOffsetLineReadString1(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`{,}, {val1, val2}`)) rjr.indx = 0 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } -func TestGetJSONOffsetLineReadStringNilError1(t *testing.T) { +func TestGetJSONOffsetLineReadStringNilError(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`" ", {,}, {val1, val2}`)) rjr.indx = 0 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } -func TestGetJSONOffsetLineReadLineCommentEOF(t *testing.T) { +func TestGetJSONOffsetLineReadLineCommentEOFInvalid(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`random/`)) rjr.indx = 6 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } func TestGetJSONOffsetLineReadLineCommentEOF1(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`random//`)) rjr.indx = 6 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } func TestGetJSONOffsetLineReadCommentEOF(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`random/*`)) rjr.indx = 5 - var eLine, eCharachter int64 = 1, 0 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 0 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } @@ -550,27 +550,37 @@ func TestGetJSONOffsetLineReadCommentInvalidEnding(t *testing.T) { **`)) rjr.indx = 5 - var eLine, eCharachter int64 = 3, 2 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 3, 2 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } -func TestGetJSONOffsetLineReadComment1(t *testing.T) { +func TestGetJSONOffsetLineReadComment(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`/* **`)) rjr.indx = 0 - var eLine, eCharachter int64 = 3, 2 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 3, 2 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } -func TestGetJSONOffsetLineInvalidComment2(t *testing.T) { +func TestGetJSONOffsetLineInvalidComment(t *testing.T) { rjr := NewRjReaderFromBytes([]byte(`/noComm`)) rjr.indx = 0 - var eLine, eCharachter int64 = 1, 5 - if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter { - fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character) + var eLine, eCharacter int64 = 1, 5 + if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) } } + +func TestGetJSONOffsetLineReadCommentOffset(t *testing.T) { + rjr := NewRjReaderFromBytes([]byte(`//noCOmment`)) + rjr.indx = 0 + var eLine, eCharacter int64 = 1, 5 + if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharacter { + fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharacter, line, character) + } + +}