diff --git a/common/step_download.go b/common/step_download.go index e3ff8cc2e..ab75f3392 100644 --- a/common/step_download.go +++ b/common/step_download.go @@ -179,8 +179,9 @@ func (s *StepDownload) download(ctx context.Context, ui packer.Ui, source string // subdirectory command, which it most likely isn't. src = filepath.Clean(u.String()) if _, err := os.Stat(filepath.Clean(u.Path)); err != nil { - // Cleaned path isn't actually present on system so it must be some - // other weird thing; see if go-getter can figure it out. + // Cleaned path isn't present on system so it must be some other + // scheme. Don't error right away; see if go-getter can figure it + // out. src = u.String() } } diff --git a/common/step_download_test.go b/common/step_download_test.go index 8a8df9960..6a5a70bd8 100644 --- a/common/step_download_test.go +++ b/common/step_download_test.go @@ -71,6 +71,14 @@ func TestStepDownload_Run(t *testing.T) { toSha1(abs(t, "./test-fixtures/root/another.txt")) + ".lock", }, }, + {"double slashes on a local filesystem passes", + fields{Url: []string{abs(t, "./test-fixtures/root//another.txt")}}, + multistep.ActionContinue, + []string{ + toSha1(abs(t, "./test-fixtures/root//another.txt")), + toSha1(abs(t, "./test-fixtures/root//another.txt")) + ".lock", + }, + }, {"none checksum works, without a checksum", fields{Url: []string{abs(t, "./test-fixtures/root/another.txt")}, ChecksumType: "none"}, multistep.ActionContinue,