caddyhttp: Support single-line not matcher (#3228)

* caddyhttp: Support single-line not matcher shortcut

* caddyhttp: Some tests, I guess
This commit is contained in:
Francis Lavoie 2020-04-06 15:05:49 -04:00 committed by GitHub
parent 437d5095a6
commit a3cfe437b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 4 deletions

View file

@ -6,7 +6,7 @@ import (
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
)
func TestServerType(t *testing.T) {
func TestMatcherSyntax(t *testing.T) {
for i, tc := range []struct {
input string
expectWarn bool
@ -15,7 +15,7 @@ func TestServerType(t *testing.T) {
{
input: `http://localhost
@debug {
query showdebug=1
query showdebug=1
}
`,
expectWarn: false,
@ -24,12 +24,32 @@ func TestServerType(t *testing.T) {
{
input: `http://localhost
@debug {
query bad format
query bad format
}
`,
expectWarn: false,
expectError: true,
},
{
input: `http://localhost
@debug {
not {
path /somepath*
}
}
`,
expectWarn: false,
expectError: false,
},
{
input: `http://localhost
@debug {
not path /somepath*
}
`,
expectWarn: false,
expectError: false,
},
} {
adapter := caddyfile.Adapter{

View file

@ -559,7 +559,7 @@ func (m *MatchNot) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
for d.Next() {
var mp matcherPair
matcherMap := make(map[string]RequestMatcher)
for d.NextBlock(0) {
for d.NextArg() || d.NextBlock(0) {
matcherName := d.Val()
mod, err := caddy.GetModule("http.matchers." + matcherName)
if err != nil {