diff options
Diffstat (limited to 'acid_test.go')
-rw-r--r-- | acid_test.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/acid_test.go b/acid_test.go new file mode 100644 index 0000000..f23d892 --- /dev/null +++ b/acid_test.go @@ -0,0 +1,32 @@ +package main + +import ( + "bytes" + "testing" + ttemplate "text/template" +) + +func TestTemplateQuote(t *testing.T) { + // Ideally, we should back-parse it using sh syntax. + // This is an unnecessarily fragile test. + for _, test := range []struct { + input, output string + }{ + {`!!`, `'!!'`}, + {``, `""`}, + {`${var}`, `"\${var}"`}, + {"`cat`", "\"\\`cat\\`\""}, + {`"魚\"`, `"\"魚\\\""`}, + } { + var b bytes.Buffer + err := ttemplate.Must(ttemplate.New("test"). + Funcs(shellFuncs).Parse("{{quote .}}")).Execute(&b, test.input) + if err != nil { + t.Errorf("template execution error: %s\n", err) + } + if b.String() != test.output { + t.Errorf("%q should be quoted os %q, not %q\n", + test.input, test.output, b.String()) + } + } +} |