From 140f461f505a55e885735d0030025d24c07005f2 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Tue, 24 Feb 2015 19:43:29 -0800 Subject: [PATCH] Support windows style dockerfile paths for build cmd Currently TestBuildRenamedDockerfile fails since passing custom dockerfile paths like: docker build -f dir/file . fails on windows because those are unix paths. Instead, on windows accept windows style paths like: docker build -f dir\file . and convert them to unix style paths using the helper we have in `pkg/archive` so that daemon can correctly locate the path in the context. Signed-off-by: Ahmet Alp Balkan --- archive/archive.go | 2 +- archive/archive_unix.go | 2 +- archive/archive_unix_test.go | 2 +- archive/archive_windows.go | 2 +- archive/archive_windows_test.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/archive/archive.go b/archive/archive.go index 40b1a40..bce66a5 100644 --- a/archive/archive.go +++ b/archive/archive.go @@ -175,7 +175,7 @@ type tarAppender struct { // canonicalTarName provides a platform-independent and consistent posix-style //path for files and directories to be archived regardless of the platform. func canonicalTarName(name string, isDir bool) (string, error) { - name, err := canonicalTarNameForPath(name) + name, err := CanonicalTarNameForPath(name) if err != nil { return "", err } diff --git a/archive/archive_unix.go b/archive/archive_unix.go index 19590ec..8c7079f 100644 --- a/archive/archive_unix.go +++ b/archive/archive_unix.go @@ -12,7 +12,7 @@ import ( // canonicalTarNameForPath returns platform-specific filepath // to canonical posix-style path for tar archival. p is relative // path. -func canonicalTarNameForPath(p string) (string, error) { +func CanonicalTarNameForPath(p string) (string, error) { return p, nil // already unix-style } diff --git a/archive/archive_unix_test.go b/archive/archive_unix_test.go index 27cfd77..52f28e2 100644 --- a/archive/archive_unix_test.go +++ b/archive/archive_unix_test.go @@ -13,7 +13,7 @@ func TestCanonicalTarNameForPath(t *testing.T) { {"foo/dir/", "foo/dir/"}, } for _, v := range cases { - if out, err := canonicalTarNameForPath(v.in); err != nil { + if out, err := CanonicalTarNameForPath(v.in); err != nil { t.Fatalf("cannot get canonical name for path: %s: %v", v.in, err) } else if out != v.expected { t.Fatalf("wrong canonical tar name. expected:%s got:%s", v.expected, out) diff --git a/archive/archive_windows.go b/archive/archive_windows.go index b763844..b95aa17 100644 --- a/archive/archive_windows.go +++ b/archive/archive_windows.go @@ -12,7 +12,7 @@ import ( // canonicalTarNameForPath returns platform-specific filepath // to canonical posix-style path for tar archival. p is relative // path. -func canonicalTarNameForPath(p string) (string, error) { +func CanonicalTarNameForPath(p string) (string, error) { // windows: convert windows style relative path with backslashes // into forward slashes. since windows does not allow '/' or '\' // in file names, it is mostly safe to replace however we must diff --git a/archive/archive_windows_test.go b/archive/archive_windows_test.go index d79f333..2b7993c 100644 --- a/archive/archive_windows_test.go +++ b/archive/archive_windows_test.go @@ -17,7 +17,7 @@ func TestCanonicalTarNameForPath(t *testing.T) { {`foo\bar`, "foo/bar/", false}, } for _, v := range cases { - if out, err := canonicalTarNameForPath(v.in); err != nil && !v.shouldFail { + if out, err := CanonicalTarNameForPath(v.in); err != nil && !v.shouldFail { t.Fatalf("cannot get canonical name for path: %s: %v", v.in, err) } else if v.shouldFail && err == nil { t.Fatalf("canonical path call should have pailed with error. in=%s out=%s", v.in, out)