aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--caddyfile/lexer.go3
-rw-r--r--caddyfile/parse_test.go54
2 files changed, 43 insertions, 14 deletions
diff --git a/caddyfile/lexer.go b/caddyfile/lexer.go
index 2b38627be..f928772e1 100644
--- a/caddyfile/lexer.go
+++ b/caddyfile/lexer.go
@@ -48,6 +48,9 @@ func (l *lexer) load(input io.Reader) error {
// discard byte order mark, if present
firstCh, _, err := l.reader.ReadRune()
if err != nil {
+ if err == io.EOF {
+ return nil
+ }
return err
}
if firstCh != 0xFEFF {
diff --git a/caddyfile/parse_test.go b/caddyfile/parse_test.go
index 10beb5b56..2b1409192 100644
--- a/caddyfile/parse_test.go
+++ b/caddyfile/parse_test.go
@@ -23,21 +23,47 @@ import (
)
func TestAllTokens(t *testing.T) {
- input := strings.NewReader("a b c\nd e")
- expected := []string{"a", "b", "c", "d", "e"}
- tokens, err := allTokens(input)
-
- if err != nil {
- t.Fatalf("Expected no error, got %v", err)
- }
- if len(tokens) != len(expected) {
- t.Fatalf("Expected %d tokens, got %d", len(expected), len(tokens))
- }
+ tests := []struct {
+ name string
+ input string
+ expected []string
+ }{
+ {
+ name: "not-empty",
+ input: "a b c\nd e",
+ expected: []string{"a", "b", "c", "d", "e"},
+ }, {
+ name: "empty",
+ input: "",
+ }, {
+ name: "newline",
+ input: "\n",
+ }, {
+ name: "space",
+ input: " ",
+ }, {
+ name: "tab and newline",
+ input: "\t\n",
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ tokens, err := allTokens(strings.NewReader(tt.input))
+
+ if err != nil {
+ t.Fatalf("Expected no error, got %v", err)
+ }
+ if len(tokens) != len(tt.expected) {
+ t.Fatalf("Expected %d tokens, got %d", len(tt.expected), len(tokens))
+ }
- for i, val := range expected {
- if tokens[i].Text != val {
- t.Errorf("Token %d should be '%s' but was '%s'", i, val, tokens[i].Text)
- }
+ for i, val := range tt.expected {
+ if tokens[i].Text != val {
+ t.Errorf("Token %d should be '%s' but was '%s'", i, val, tokens[i].Text)
+ }
+ }
+ })
}
}