Commit 4dccc541 authored by Chris Bednarski's avatar Chris Bednarski

Merge pull request #2442 from mitchellh/b-2385

Don't override packer build version with min_packer_version from template
parents e7092ff5 b3eacc5c
...@@ -20,6 +20,13 @@ func fatalCommand(t *testing.T, m Meta) { ...@@ -20,6 +20,13 @@ func fatalCommand(t *testing.T, m Meta) {
err.String()) err.String())
} }
func outputCommand(t *testing.T, m Meta) (string, string) {
ui := m.Ui.(*packer.BasicUi)
out := ui.Writer.(*bytes.Buffer)
err := ui.ErrorWriter.(*bytes.Buffer)
return out.String(), err.String()
}
func testFixture(n string) string { func testFixture(n string) string {
return filepath.Join(fixturesDir, n) return filepath.Join(fixturesDir, n)
} }
......
...@@ -43,7 +43,6 @@ func (m *Meta) Core(tpl *template.Template) (*packer.Core, error) { ...@@ -43,7 +43,6 @@ func (m *Meta) Core(tpl *template.Template) (*packer.Core, error) {
config := *m.CoreConfig config := *m.CoreConfig
config.Template = tpl config.Template = tpl
config.Variables = m.flagVars config.Variables = m.flagVars
config.Version = m.Version
// Init the core // Init the core
core, err := packer.NewCore(&config) core, err := packer.NewCore(&config)
......
...@@ -122,10 +122,8 @@ func TestPush_noName(t *testing.T) { ...@@ -122,10 +122,8 @@ func TestPush_noName(t *testing.T) {
func TestPush_cliName(t *testing.T) { func TestPush_cliName(t *testing.T) {
var actual []string var actual []string
var actualOpts *uploadOpts
uploadFn := func(r io.Reader, opts *uploadOpts) (<-chan struct{}, <-chan error, error) { uploadFn := func(r io.Reader, opts *uploadOpts) (<-chan struct{}, <-chan error, error) {
actual = testArchive(t, r) actual = testArchive(t, r)
actualOpts = opts
doneCh := make(chan struct{}) doneCh := make(chan struct{})
close(doneCh) close(doneCh)
......
{
"builders":[
{
"type":"file",
"target":"chocolate.txt",
"content":"chocolate"
}
],
"min_packer_version":"101.0.0"
}
package command
import (
"path/filepath"
"testing"
)
func TestValidateCommandOKVersion(t *testing.T) {
c := &ValidateCommand{
Meta: testMetaFile(t),
}
args := []string{
filepath.Join(testFixture("validate"), "template.json"),
}
// This should pass with a valid configuration version
c.CoreConfig.Version = "102.0.0"
if code := c.Run(args); code != 0 {
fatalCommand(t, c.Meta)
}
}
func TestValidateCommandBadVersion(t *testing.T) {
c := &ValidateCommand{
Meta: testMetaFile(t),
}
args := []string{
filepath.Join(testFixture("validate"), "template.json"),
}
// This should fail with an invalid configuration version
c.CoreConfig.Version = "100.0.0"
if code := c.Run(args); code != 1 {
t.Errorf("Expected exit code 1")
}
stdout, stderr := outputCommand(t, c.Meta)
expected := `Error initializing core: This template requires Packer version 101.0.0 or higher; using 100.0.0
`
if stderr != expected {
t.Fatalf("Expected:\n%s\nFound:\n%s\n", expected, stderr)
}
t.Log(stdout)
}
...@@ -246,8 +246,7 @@ func (c *Core) validate() error { ...@@ -246,8 +246,7 @@ func (c *Core) validate() error {
if versionActual.LessThan(versionMin) { if versionActual.LessThan(versionMin) {
return fmt.Errorf( return fmt.Errorf(
"This template requires a minimum Packer version of %s,\n"+ "This template requires Packer version %s or higher; using %s",
"but version %s is running.",
versionMin, versionMin,
versionActual) versionActual)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment