add cnf/parser/nginx/decoder receiver/syntax/writer error
This commit is contained in:
parent
a77923a686
commit
a9a69a5728
|
@ -155,12 +155,3 @@ func (d *Decoder) Decode(v interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func inArray(haystack string, needle byte) bool {
|
|
||||||
for i, l := 0, len(haystack); i < l; i++ {
|
|
||||||
if haystack[i] == needle {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package nginx
|
package nginx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -160,3 +161,68 @@ func TestNestedSections(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReceiverAndSyntaxErrors(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Receiver interface{}
|
||||||
|
Input string
|
||||||
|
Err error
|
||||||
|
}{
|
||||||
|
{new(Line), "", nil},
|
||||||
|
{nil, "", ErrNullReceiver},
|
||||||
|
{[]byte{}, "", ErrInvalidReceiver},
|
||||||
|
|
||||||
|
{new(Line), "}", &LineError{0, ErrUnexpectedSectionClose}},
|
||||||
|
{new(Line), "key valuewithoutsemicolon", &LineError{0, ErrInvalidSyntax}},
|
||||||
|
{new(Line), "section {\nkey value;", ErrUnclosedSection},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, test := range tests {
|
||||||
|
|
||||||
|
// create reader
|
||||||
|
r := strings.NewReader(test.Input)
|
||||||
|
|
||||||
|
// parse input
|
||||||
|
var receiver interface{} = test.Receiver
|
||||||
|
decoder := NewDecoder(r)
|
||||||
|
err := decoder.Decode(receiver)
|
||||||
|
if err == nil {
|
||||||
|
if test.Err != nil {
|
||||||
|
t.Errorf("[%d] expected error", i)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err.Error() != test.Err.Error() {
|
||||||
|
t.Errorf("[%d] expected error <%s>, got <%s>", i, test.Err, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var readerError = errors.New("error")
|
||||||
|
|
||||||
|
type defectiveReader struct{}
|
||||||
|
|
||||||
|
func (d defectiveReader) Read(buf []byte) (int, error) {
|
||||||
|
return 0, readerError
|
||||||
|
}
|
||||||
|
func TestReadErrors(t *testing.T) {
|
||||||
|
|
||||||
|
// create reader
|
||||||
|
r := &defectiveReader{}
|
||||||
|
|
||||||
|
// parse input
|
||||||
|
receiver := new(Line)
|
||||||
|
decoder := NewDecoder(r)
|
||||||
|
err := decoder.Decode(receiver)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("expected error")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err.Error() != (&LineError{0, readerError}).Error() {
|
||||||
|
t.Fatalf("expected error <%s>, got <%s>", &LineError{0, readerError}, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue