summaryrefslogtreecommitdiff
path: root/caddyconfig
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2020-05-05 14:32:12 -0400
committerGitHub <noreply@github.com>2020-05-05 12:32:12 -0600
commit96d6d277a453a602b9ec49131d8e332ce7aefcad (patch)
tree6e34311edcc3c82b7c9436d145a122fba7b65258 /caddyconfig
parent26e559662d677062874afed9775f660f1f5f9c1e (diff)
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
Diffstat (limited to 'caddyconfig')
-rw-r--r--caddyconfig/caddyfile/formatter.go3
-rw-r--r--caddyconfig/caddyfile/formatter_test.go9
-rwxr-xr-xcaddyconfig/caddyfile/lexer.go2
-rwxr-xr-xcaddyconfig/caddyfile/lexer_test.go20
4 files changed, 28 insertions, 6 deletions
diff --git a/caddyconfig/caddyfile/formatter.go b/caddyconfig/caddyfile/formatter.go
index 2c97f3b..6270541 100644
--- a/caddyconfig/caddyfile/formatter.go
+++ b/caddyconfig/caddyfile/formatter.go
@@ -131,9 +131,6 @@ func Format(input []byte) []byte {
//////////////////////////////////////////////////////////
if ch == '#' {
- if !spacePrior && !beginningOfLine {
- write(' ')
- }
comment = true
}
diff --git a/caddyconfig/caddyfile/formatter_test.go b/caddyconfig/caddyfile/formatter_test.go
index 25bd7fa..6751eca 100644
--- a/caddyconfig/caddyfile/formatter_test.go
+++ b/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
diff --git a/caddyconfig/caddyfile/lexer.go b/caddyconfig/caddyfile/lexer.go
index d9968ff..568d15c 100755
--- a/caddyconfig/caddyfile/lexer.go
+++ b/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 {
diff --git a/caddyconfig/caddyfile/lexer_test.go b/caddyconfig/caddyfile/lexer_test.go
index 734006e..c8c941a 100755
--- a/caddyconfig/caddyfile/lexer_test.go
+++ b/caddyconfig/caddyfile/lexer_test.go
@@ -78,6 +78,26 @@ func TestLexer(t *testing.T) {
},
},
{
+ 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`,
expected: []Token{