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
parent
commit
96d6d277a4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      caddyconfig/caddyfile/formatter.go
  2. 9
      caddyconfig/caddyfile/formatter_test.go
  3. 2
      caddyconfig/caddyfile/lexer.go
  4. 20
      caddyconfig/caddyfile/lexer_test.go

3
caddyconfig/caddyfile/formatter.go

@ -131,9 +131,6 @@ func Format(input []byte) []byte {
//////////////////////////////////////////////////////////
if ch == '#' {
if !spacePrior && !beginningOfLine {
write(' ')
}
comment = true
}

9
caddyconfig/caddyfile/formatter_test.go

@ -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

2
caddyconfig/caddyfile/lexer.go

@ -141,7 +141,7 @@ func (l *lexer) next() bool {
continue
}
if ch == '#' {
if ch == '#' && len(val) == 0 {
comment = true
}
if comment {

20
caddyconfig/caddyfile/lexer_test.go

@ -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`,

Loading…
Cancel
Save