2020-02-29 12:12:16 -05:00
|
|
|
// 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
|
|
|
|
}
|
2020-02-29 15:23:08 -05:00
|
|
|
|
|
|
|
g {
|
|
|
|
h {
|
|
|
|
i
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
j { k {
|
|
|
|
l
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
m {
|
|
|
|
n { o
|
|
|
|
}
|
|
|
|
}
|
2020-02-29 12:12:16 -05:00
|
|
|
`)
|
|
|
|
expected := []byte(`
|
|
|
|
a
|
|
|
|
b
|
|
|
|
|
|
|
|
c {
|
|
|
|
d
|
|
|
|
}
|
|
|
|
|
|
|
|
e {
|
|
|
|
f
|
|
|
|
}
|
2020-02-29 15:23:08 -05:00
|
|
|
|
|
|
|
g {
|
|
|
|
h {
|
|
|
|
i
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
j {
|
|
|
|
k {
|
|
|
|
l
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
m {
|
|
|
|
n {
|
|
|
|
o
|
|
|
|
}
|
|
|
|
}
|
2020-02-29 12:12:16 -05:00
|
|
|
`)
|
|
|
|
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))
|
|
|
|
}
|
|
|
|
}
|