From a3cfe437b1d27fa0eb20d112de7c257cb25e4ea7 Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Mon, 6 Apr 2020 15:05:49 -0400 Subject: [PATCH] caddyhttp: Support single-line not matcher (#3228) * caddyhttp: Support single-line not matcher shortcut * caddyhttp: Some tests, I guess --- caddyconfig/httpcaddyfile/httptype_test.go | 26 +++++++++++++++++++--- modules/caddyhttp/matchers.go | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/caddyconfig/httpcaddyfile/httptype_test.go b/caddyconfig/httpcaddyfile/httptype_test.go index d612cd4f6..64f0f82a8 100644 --- a/caddyconfig/httpcaddyfile/httptype_test.go +++ b/caddyconfig/httpcaddyfile/httptype_test.go @@ -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{ diff --git a/modules/caddyhttp/matchers.go b/modules/caddyhttp/matchers.go index f69fc67e3..f608ccd0d 100644 --- a/modules/caddyhttp/matchers.go +++ b/modules/caddyhttp/matchers.go @@ -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 {