post-processor/vagrant: validate the template
This commit is contained in:
parent
6f3d0f6bcd
commit
838abe4069
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
"github.com/mitchellh/packer/packer"
|
"github.com/mitchellh/packer/packer"
|
||||||
"log"
|
"log"
|
||||||
|
"text/template"
|
||||||
)
|
)
|
||||||
|
|
||||||
var builtins = map[string]string{
|
var builtins = map[string]string{
|
||||||
|
@ -31,7 +32,12 @@ func (p *PostProcessor) Configure(raw interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.OutputPath == "" {
|
if p.config.OutputPath == "" {
|
||||||
return fmt.Errorf("`output` must be specified.")
|
p.config.OutputPath = "packer_{{.Provider}}.box"
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = template.New("output").Parse(p.config.OutputPath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("output invalid template: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
mapConfig, ok := raw.(map[string]interface{})
|
mapConfig, ok := raw.(map[string]interface{})
|
||||||
|
|
|
@ -20,10 +20,18 @@ func TestPostProcessor_ImplementsPostProcessor(t *testing.T) {
|
||||||
func TestBuilderPrepare_OutputPath(t *testing.T) {
|
func TestBuilderPrepare_OutputPath(t *testing.T) {
|
||||||
var p PostProcessor
|
var p PostProcessor
|
||||||
|
|
||||||
|
// Default
|
||||||
c := testConfig()
|
c := testConfig()
|
||||||
delete(c, "output")
|
delete(c, "output")
|
||||||
err := p.Configure(c)
|
err := p.Configure(c)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bad template
|
||||||
|
c["output"] = "bad {{{{.Template}}}}"
|
||||||
|
err = p.Configure(c)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("configure should fail")
|
t.Fatal("should have error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue