summaryrefslogtreecommitdiff
path: root/caddyconfig/caddyfile/formatter_test.go
diff options
context:
space:
mode:
authorVaibhav <vrongmeal@gmail.com>2020-02-29 22:42:16 +0530
committerGitHub <noreply@github.com>2020-02-29 10:12:16 -0700
commit5fe69ac4ab8bb1da84fc80776548fcc16f89b1db (patch)
tree4b3f4c0f21d88ebaa1d1f209110dd7e63f07d179 /caddyconfig/caddyfile/formatter_test.go
parente717028f83bcb8187b8e4559c9abacd529c12eea (diff)
cmd: Add `caddy fmt` command. (#3090)
This takes the config file as input and formats it. Prints the result to stdout. Can write changes to file if `--write` flag is passed. Fixes #3020 Signed-off-by: Vaibhav <vrongmeal@gmail.com>
Diffstat (limited to 'caddyconfig/caddyfile/formatter_test.go')
-rw-r--r--caddyconfig/caddyfile/formatter_test.go161
1 files changed, 161 insertions, 0 deletions
diff --git a/caddyconfig/caddyfile/formatter_test.go b/caddyconfig/caddyfile/formatter_test.go
new file mode 100644
index 0000000..a78ec7c
--- /dev/null
+++ b/caddyconfig/caddyfile/formatter_test.go
@@ -0,0 +1,161 @@
+// Copyright 2015 Matthew Holt and The Caddy Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package caddyfile
+
+import (
+ "testing"
+)
+
+func TestFormatBasicIndentation(t *testing.T) {
+ input := []byte(`
+ a
+b
+
+ c {
+ d
+}
+
+e { f
+}
+`)
+ expected := []byte(`
+a
+b
+
+c {
+ d
+}
+
+e {
+ f
+}
+`)
+ testFormat(t, input, expected)
+}
+
+func TestFormatBasicSpacing(t *testing.T) {
+ input := []byte(`
+a{
+ b
+}
+
+c{ d
+}
+`)
+ expected := []byte(`
+a {
+ b
+}
+
+c {
+ d
+}
+`)
+ testFormat(t, input, expected)
+}
+
+func TestFormatEnvironmentVariable(t *testing.T) {
+ input := []byte(`
+{$A}
+
+b {
+{$C}
+}
+
+d { {$E}
+}
+`)
+ expected := []byte(`
+{$A}
+
+b {
+ {$C}
+}
+
+d {
+ {$E}
+}
+`)
+ testFormat(t, input, expected)
+}
+
+func TestFormatComments(t *testing.T) {
+ input := []byte(`
+# a "\n"
+
+# b {
+ c
+}
+
+d {
+e # f
+# g
+}
+
+h { # i
+}
+`)
+ expected := []byte(`
+# a "\n"
+
+# b {
+c
+}
+
+d {
+ e # f
+ # g
+}
+
+h {
+ # i
+}
+`)
+ testFormat(t, input, expected)
+}
+
+func TestFormatQuotesAndEscapes(t *testing.T) {
+ input := []byte(`
+"a \"b\" #c
+ d
+
+e {
+"f"
+}
+
+g { "h"
+}
+`)
+ expected := []byte(`
+"a \"b\" #c
+d
+
+e {
+ "f"
+}
+
+g {
+ "h"
+}
+`)
+ testFormat(t, input, expected)
+}
+
+func testFormat(t *testing.T, input, expected []byte) {
+ output := Format(input)
+ if string(output) != string(expected) {
+ t.Errorf("Expected:\n%s\ngot:\n%s", string(output), string(expected))
+ }
+}