1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package template
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- )
- var defaults = map[string]string{
- "FOO": "first",
- "BAR": "",
- }
- func defaultMapping(name string) (string, bool) {
- val, ok := defaults[name]
- return val, ok
- }
- func TestEscaped(t *testing.T) {
- result, err := Substitute("$${foo}", defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "${foo}", result)
- }
- func TestInvalid(t *testing.T) {
- invalidTemplates := []string{
- "${",
- "$}",
- "${}",
- "${ }",
- "${ foo}",
- "${foo }",
- "${foo!}",
- }
- for _, template := range invalidTemplates {
- _, err := Substitute(template, defaultMapping)
- assert.Error(t, err)
- assert.IsType(t, &InvalidTemplateError{}, err)
- }
- }
- func TestNoValueNoDefault(t *testing.T) {
- for _, template := range []string{"This ${missing} var", "This ${BAR} var"} {
- result, err := Substitute(template, defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "This var", result)
- }
- }
- func TestValueNoDefault(t *testing.T) {
- for _, template := range []string{"This $FOO var", "This ${FOO} var"} {
- result, err := Substitute(template, defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "This first var", result)
- }
- }
- func TestNoValueWithDefault(t *testing.T) {
- for _, template := range []string{"ok ${missing:-def}", "ok ${missing-def}"} {
- result, err := Substitute(template, defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "ok def", result)
- }
- }
- func TestEmptyValueWithSoftDefault(t *testing.T) {
- result, err := Substitute("ok ${BAR:-def}", defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "ok def", result)
- }
- func TestEmptyValueWithHardDefault(t *testing.T) {
- result, err := Substitute("ok ${BAR-def}", defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "ok ", result)
- }
- func TestNonAlphanumericDefault(t *testing.T) {
- result, err := Substitute("ok ${BAR:-/non:-alphanumeric}", defaultMapping)
- assert.NoError(t, err)
- assert.Equal(t, "ok /non:-alphanumeric", result)
- }
|