diff --git a/caddyconfig/httpcaddyfile/builtins.go b/caddyconfig/httpcaddyfile/builtins.go index 4cc453e9..2bb9b907 100644 --- a/caddyconfig/httpcaddyfile/builtins.go +++ b/caddyconfig/httpcaddyfile/builtins.go @@ -469,6 +469,11 @@ func parseHandleErrors(h Helper) ([]ConfigValue, error) { func parseLog(h Helper) ([]ConfigValue, error) { var configValues []ConfigValue for h.Next() { + // log does not currently support any arguments + if h.NextArg() { + return nil, h.ArgErr() + } + cl := new(caddy.CustomLog) for h.NextBlock(0) { diff --git a/caddyconfig/httpcaddyfile/builtins_test.go b/caddyconfig/httpcaddyfile/builtins_test.go new file mode 100644 index 00000000..a255538c --- /dev/null +++ b/caddyconfig/httpcaddyfile/builtins_test.go @@ -0,0 +1,62 @@ +package httpcaddyfile + +import ( + "testing" + + "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile" + _ "github.com/caddyserver/caddy/v2/modules/logging" +) + +func TestLogDirectiveSyntax(t *testing.T) { + for i, tc := range []struct { + input string + expectWarn bool + expectError bool + }{ + { + input: `:8080 { + log + } + `, + expectWarn: false, + expectError: false, + }, + { + input: `:8080 { + log { + output file foo.log + } + } + `, + expectWarn: false, + expectError: false, + }, + { + input: `:8080 { + log /foo { + output file foo.log + } + } + `, + expectWarn: false, + expectError: true, + }, + } { + + adapter := caddyfile.Adapter{ + ServerType: ServerType{}, + } + + _, warnings, err := adapter.Adapt([]byte(tc.input), nil) + + if len(warnings) > 0 != tc.expectWarn { + t.Errorf("Test %d warning expectation failed Expected: %v, got %v", i, tc.expectWarn, warnings) + continue + } + + if err != nil != tc.expectError { + t.Errorf("Test %d error expectation failed Expected: %v, got %s", i, tc.expectError, err) + continue + } + } +}