Merge pull request #44060 from thaJeztah/archive_cleanup

pkg/archive: make CanonicalTarNameForPath and alias for filepath.ToSlash
This commit is contained in:
Sebastiaan van Stijn 2022-09-21 18:01:24 +02:00 committed by GitHub
commit a39ba095eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 45 deletions

View File

@ -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.
func canonicalTarName(name string, isDir bool) string {
name = CanonicalTarNameForPath(name)
name = filepath.ToSlash(name)
// suffix with '/' for directories
if isDir && !strings.HasSuffix(name, "/") {

View File

@ -35,16 +35,8 @@ func getWalkRoot(srcPath string, include string) string {
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
// on the platform the archival is done.
func chmodTarEntry(perm os.FileMode) os.FileMode {
return perm // noop for unix as golang APIs provide perm bits correctly
}

View File

@ -23,19 +23,6 @@ import (
"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) {
cases := []struct {
in string

View File

@ -21,13 +21,6 @@ func getWalkRoot(srcPath string, include string) string {
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
// on the platform the archival is done.
func chmodTarEntry(perm os.FileMode) os.FileMode {

View File

@ -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) {
cases := []struct {
in string