builder/docker: validate export path is not a dir [GH-2105]
This commit is contained in:
parent
911a868ac5
commit
819986d19f
|
@ -30,6 +30,7 @@ BUG FIXES:
|
||||||
* builder/docker: Use `docker exec` for newer versions of Docker for
|
* builder/docker: Use `docker exec` for newer versions of Docker for
|
||||||
running scripts [GH-1993]
|
running scripts [GH-1993]
|
||||||
* builder/docker: Fix crash that could occur at certain timed ctrl-c [GH-1838]
|
* builder/docker: Fix crash that could occur at certain timed ctrl-c [GH-1838]
|
||||||
|
* builder/docker: validate that `export_path` is not a directory [GH-2105]
|
||||||
* builder/qemu: Add `disk_discard` option [GH-2120]
|
* builder/qemu: Add `disk_discard` option [GH-2120]
|
||||||
* builder/virtualbox: Added SCSI support
|
* builder/virtualbox: Added SCSI support
|
||||||
* builder/vmware: Case-insensitive match of MAC address to find IP [GH-1989]
|
* builder/vmware: Case-insensitive match of MAC address to find IP [GH-1989]
|
||||||
|
|
|
@ -2,6 +2,7 @@ package docker
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
"github.com/mitchellh/packer/common"
|
"github.com/mitchellh/packer/common"
|
||||||
|
@ -79,6 +80,13 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) {
|
||||||
fmt.Errorf("both commit and export_path cannot be set"))
|
fmt.Errorf("both commit and export_path cannot be set"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.ExportPath != "" {
|
||||||
|
if fi, err := os.Stat(c.ExportPath); err == nil && fi.IsDir() {
|
||||||
|
errs = packer.MultiErrorAppend(errs, fmt.Errorf(
|
||||||
|
"export_path must be a file, not a directory"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if errs != nil && len(errs.Errors) > 0 {
|
if errs != nil && len(errs.Errors) > 0 {
|
||||||
return nil, nil, errs
|
return nil, nil, errs
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package docker
|
package docker
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -42,6 +44,12 @@ func testConfigOk(t *testing.T, warns []string, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigPrepare_exportPath(t *testing.T) {
|
func TestConfigPrepare_exportPath(t *testing.T) {
|
||||||
|
td, err := ioutil.TempDir("", "packer")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(td)
|
||||||
|
|
||||||
raw := testConfig()
|
raw := testConfig()
|
||||||
|
|
||||||
// No export path
|
// No export path
|
||||||
|
@ -53,6 +61,11 @@ func TestConfigPrepare_exportPath(t *testing.T) {
|
||||||
raw["export_path"] = "good"
|
raw["export_path"] = "good"
|
||||||
_, warns, errs = NewConfig(raw)
|
_, warns, errs = NewConfig(raw)
|
||||||
testConfigOk(t, warns, errs)
|
testConfigOk(t, warns, errs)
|
||||||
|
|
||||||
|
// Bad export path (directory)
|
||||||
|
raw["export_path"] = td
|
||||||
|
_, warns, errs = NewConfig(raw)
|
||||||
|
testConfigErr(t, warns, errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigPrepare_exportPathAndCommit(t *testing.T) {
|
func TestConfigPrepare_exportPathAndCommit(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue