Procházet zdrojové kódy

Merge pull request #44060 from thaJeztah/archive_cleanup

pkg/archive: make CanonicalTarNameForPath and alias for filepath.ToSlash
Sebastiaan van Stijn před 2 roky
rodič
revize
a39ba095eb

+ 9 - 2
pkg/archive/archive.go

@@ -519,10 +519,17 @@ func newTarAppender(idMapping idtools.IdentityMapping, writer io.Writer, chownOp
 	}
 	}
 }
 }
 
 
-// canonicalTarName provides a platform-independent and consistent posix-style
+// CanonicalTarNameForPath canonicalizes relativePath to a POSIX-style path using
+// forward slashes. It is an alias for filepath.ToSlash, which is a no-op on
+// Linux and Unix.
+func CanonicalTarNameForPath(relativePath string) string {
+	return filepath.ToSlash(relativePath)
+}
+
+// canonicalTarName provides a platform-independent and consistent POSIX-style
 // path for files and directories to be archived regardless of the platform.
 // path for files and directories to be archived regardless of the platform.
 func canonicalTarName(name string, isDir bool) string {
 func canonicalTarName(name string, isDir bool) string {
-	name = CanonicalTarNameForPath(name)
+	name = filepath.ToSlash(name)
 
 
 	// suffix with '/' for directories
 	// suffix with '/' for directories
 	if isDir && !strings.HasSuffix(name, "/") {
 	if isDir && !strings.HasSuffix(name, "/") {

+ 0 - 8
pkg/archive/archive_unix.go

@@ -35,16 +35,8 @@ func getWalkRoot(srcPath string, include string) string {
 	return strings.TrimSuffix(srcPath, string(filepath.Separator)) + string(filepath.Separator) + include
 	return strings.TrimSuffix(srcPath, string(filepath.Separator)) + string(filepath.Separator) + include
 }
 }
 
 
-// CanonicalTarNameForPath returns platform-specific filepath
-// to canonical posix-style path for tar archival. p is relative
-// path.
-func CanonicalTarNameForPath(p string) string {
-	return p // already unix-style
-}
-
 // chmodTarEntry is used to adjust the file permissions used in tar header based
 // chmodTarEntry is used to adjust the file permissions used in tar header based
 // on the platform the archival is done.
 // on the platform the archival is done.
-
 func chmodTarEntry(perm os.FileMode) os.FileMode {
 func chmodTarEntry(perm os.FileMode) os.FileMode {
 	return perm // noop for unix as golang APIs provide perm bits correctly
 	return perm // noop for unix as golang APIs provide perm bits correctly
 }
 }

+ 0 - 13
pkg/archive/archive_unix_test.go

@@ -23,19 +23,6 @@ import (
 	"gotest.tools/v3/skip"
 	"gotest.tools/v3/skip"
 )
 )
 
 
-func TestCanonicalTarNameForPath(t *testing.T) {
-	cases := []struct{ in, expected string }{
-		{"foo", "foo"},
-		{"foo/bar", "foo/bar"},
-		{"foo/dir/", "foo/dir/"},
-	}
-	for _, v := range cases {
-		if CanonicalTarNameForPath(v.in) != v.expected {
-			t.Fatalf("wrong canonical tar name. expected:%s got:%s", v.expected, CanonicalTarNameForPath(v.in))
-		}
-	}
-}
-
 func TestCanonicalTarName(t *testing.T) {
 func TestCanonicalTarName(t *testing.T) {
 	cases := []struct {
 	cases := []struct {
 		in       string
 		in       string

+ 0 - 7
pkg/archive/archive_windows.go

@@ -21,13 +21,6 @@ func getWalkRoot(srcPath string, include string) string {
 	return filepath.Join(srcPath, include)
 	return filepath.Join(srcPath, include)
 }
 }
 
 
-// CanonicalTarNameForPath returns platform-specific filepath
-// to canonical posix-style path for tar archival. p is relative
-// path.
-func CanonicalTarNameForPath(p string) string {
-	return filepath.ToSlash(p)
-}
-
 // chmodTarEntry is used to adjust the file permissions used in tar header based
 // chmodTarEntry is used to adjust the file permissions used in tar header based
 // on the platform the archival is done.
 // on the platform the archival is done.
 func chmodTarEntry(perm os.FileMode) os.FileMode {
 func chmodTarEntry(perm os.FileMode) os.FileMode {

+ 0 - 15
pkg/archive/archive_windows_test.go

@@ -33,21 +33,6 @@ func TestCopyFileWithInvalidDest(t *testing.T) {
 	}
 	}
 }
 }
 
 
-func TestCanonicalTarNameForPath(t *testing.T) {
-	cases := []struct {
-		in, expected string
-	}{
-		{"foo", "foo"},
-		{"foo/bar", "foo/bar"},
-		{`foo\bar`, "foo/bar"},
-	}
-	for _, v := range cases {
-		if CanonicalTarNameForPath(v.in) != v.expected {
-			t.Fatalf("wrong canonical tar name. expected:%s got:%s", v.expected, CanonicalTarNameForPath(v.in))
-		}
-	}
-}
-
 func TestCanonicalTarName(t *testing.T) {
 func TestCanonicalTarName(t *testing.T) {
 	cases := []struct {
 	cases := []struct {
 		in       string
 		in       string