Browse Source
caddyconfig: Don't start comments in middle of tokens (#3267)
* caddyconfig: Only parse # as start of comment if preceded by space
* caddyconfig: Simplify # logic using len(val), add a test
master
Francis Lavoie
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
28 additions and
6 deletions
-
caddyconfig/caddyfile/formatter.go
-
caddyconfig/caddyfile/formatter_test.go
-
caddyconfig/caddyfile/lexer.go
-
caddyconfig/caddyfile/lexer_test.go
|
|
@ -131,9 +131,6 @@ func Format(input []byte) []byte { |
|
|
|
//////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
if ch == '#' { |
|
|
|
if !spacePrior && !beginningOfLine { |
|
|
|
write(' ') |
|
|
|
} |
|
|
|
comment = true |
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -201,7 +201,7 @@ c |
|
|
|
} |
|
|
|
|
|
|
|
d { |
|
|
|
e #f |
|
|
|
e#f |
|
|
|
# g |
|
|
|
} |
|
|
|
|
|
|
@ -229,7 +229,7 @@ bar" |
|
|
|
j { |
|
|
|
"\"k\" l m" |
|
|
|
}`, |
|
|
|
expect: `"a \"b\" " #c |
|
|
|
expect: `"a \"b\" "#c |
|
|
|
d |
|
|
|
|
|
|
|
e { |
|
|
@ -305,6 +305,11 @@ bar "{\"key\":34}"`, |
|
|
|
|
|
|
|
baz`, |
|
|
|
}, |
|
|
|
{ |
|
|
|
description: "hash within string is not a comment", |
|
|
|
input: `redir / /some/#/path`, |
|
|
|
expect: `redir / /some/#/path`, |
|
|
|
}, |
|
|
|
} { |
|
|
|
// the formatter should output a trailing newline,
|
|
|
|
// even if the tests aren't written to expect that
|
|
|
|
|
|
@ -141,7 +141,7 @@ func (l *lexer) next() bool { |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
if ch == '#' { |
|
|
|
if ch == '#' && len(val) == 0 { |
|
|
|
comment = true |
|
|
|
} |
|
|
|
if comment { |
|
|
|
|
|
@ -77,6 +77,26 @@ func TestLexer(t *testing.T) { |
|
|
|
{Line: 6, Text: "}"}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
input: `host:123 { |
|
|
|
# hash inside string is not a comment |
|
|
|
redir / /some/#/path |
|
|
|
}`, |
|
|
|
expected: []Token{ |
|
|
|
{Line: 1, Text: "host:123"}, |
|
|
|
{Line: 1, Text: "{"}, |
|
|
|
{Line: 3, Text: "redir"}, |
|
|
|
{Line: 3, Text: "/"}, |
|
|
|
{Line: 3, Text: "/some/#/path"}, |
|
|
|
{Line: 4, Text: "}"}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
input: "# comment at beginning of file\n# comment at beginning of line\nhost:123", |
|
|
|
expected: []Token{ |
|
|
|
{Line: 3, Text: "host:123"}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
input: `a "quoted value" b |
|
|
|
foobar`, |
|
|
|