Merge pull request #8448 from dmcgowan/archive-tests-darwin
Update tar tests to run on Darwin
This commit is contained in:
commit
634b123e75
@ -1,4 +1,4 @@
|
|||||||
//go:build !windows && !darwin
|
//go:build !windows
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The containerd Authors.
|
Copyright The containerd Authors.
|
||||||
@ -28,6 +28,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -359,13 +360,14 @@ func TestBreakouts(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
breakouts := []struct {
|
type breakoutTest struct {
|
||||||
name string
|
name string
|
||||||
w tartest.WriterToTar
|
w tartest.WriterToTar
|
||||||
apply fstest.Applier
|
apply fstest.Applier
|
||||||
validator func(string) error
|
validator func(string) error
|
||||||
err error
|
err error
|
||||||
}{
|
}
|
||||||
|
breakouts := []breakoutTest{
|
||||||
{
|
{
|
||||||
name: "SymlinkAbsolute",
|
name: "SymlinkAbsolute",
|
||||||
w: tartest.TarAll(
|
w: tartest.TarAll(
|
||||||
@ -497,42 +499,7 @@ func TestBreakouts(t *testing.T) {
|
|||||||
),
|
),
|
||||||
validator: sameFile("localpasswd", "/etc/passwd"),
|
validator: sameFile("localpasswd", "/etc/passwd"),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "HardlinkSymlinkBeforeCreateTarget",
|
|
||||||
w: tartest.TarAll(
|
|
||||||
tc.Dir("etc", 0770),
|
|
||||||
tc.Symlink("/etc/passwd", "localpasswd"),
|
|
||||||
tc.Link("localpasswd", "localpasswd-dup"),
|
|
||||||
tc.File("/etc/passwd", []byte("after"), 0644),
|
|
||||||
),
|
|
||||||
validator: sameFile("localpasswd-dup", "/etc/passwd"),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "HardlinkSymlinkRelative",
|
|
||||||
w: tartest.TarAll(
|
|
||||||
tc.Dir("etc", 0770),
|
|
||||||
tc.File("/etc/passwd", []byte("inside"), 0644),
|
|
||||||
tc.Symlink("../../../../../etc/passwd", "passwdlink"),
|
|
||||||
tc.Link("/passwdlink", "localpasswd"),
|
|
||||||
),
|
|
||||||
validator: all(
|
|
||||||
sameSymlinkFile("/localpasswd", "/passwdlink"),
|
|
||||||
sameFile("/localpasswd", "/etc/passwd"),
|
|
||||||
),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "HardlinkSymlinkAbsolute",
|
|
||||||
w: tartest.TarAll(
|
|
||||||
tc.Dir("etc", 0770),
|
|
||||||
tc.File("/etc/passwd", []byte("inside"), 0644),
|
|
||||||
tc.Symlink("/etc/passwd", "passwdlink"),
|
|
||||||
tc.Link("/passwdlink", "localpasswd"),
|
|
||||||
),
|
|
||||||
validator: all(
|
|
||||||
sameSymlinkFile("/localpasswd", "/passwdlink"),
|
|
||||||
sameFile("/localpasswd", "/etc/passwd"),
|
|
||||||
),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "SymlinkParentDirectory",
|
name: "SymlinkParentDirectory",
|
||||||
w: tartest.TarAll(
|
w: tartest.TarAll(
|
||||||
@ -745,8 +712,48 @@ func TestBreakouts(t *testing.T) {
|
|||||||
// resolution ends up just removing etc
|
// resolution ends up just removing etc
|
||||||
validator: fileNotExists("etc/passwd"),
|
validator: fileNotExists("etc/passwd"),
|
||||||
},
|
},
|
||||||
{
|
}
|
||||||
|
|
||||||
|
// The follow tests perform operations not permitted on Darwin
|
||||||
|
if runtime.GOOS != "darwin" {
|
||||||
|
breakouts = append(breakouts, []breakoutTest{
|
||||||
|
{
|
||||||
|
name: "HardlinkSymlinkBeforeCreateTarget",
|
||||||
|
w: tartest.TarAll(
|
||||||
|
tc.Dir("etc", 0770),
|
||||||
|
tc.Symlink("/etc/passwd", "localpasswd"),
|
||||||
|
tc.Link("localpasswd", "localpasswd-dup"),
|
||||||
|
tc.File("/etc/passwd", []byte("after"), 0644),
|
||||||
|
),
|
||||||
|
validator: sameFile("localpasswd-dup", "/etc/passwd"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "HardlinkSymlinkRelative",
|
||||||
|
w: tartest.TarAll(
|
||||||
|
tc.Dir("etc", 0770),
|
||||||
|
tc.File("/etc/passwd", []byte("inside"), 0644),
|
||||||
|
tc.Symlink("../../../../../etc/passwd", "passwdlink"),
|
||||||
|
tc.Link("/passwdlink", "localpasswd"),
|
||||||
|
),
|
||||||
|
validator: all(
|
||||||
|
sameSymlinkFile("/localpasswd", "/passwdlink"),
|
||||||
|
sameFile("/localpasswd", "/etc/passwd"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "HardlinkSymlinkAbsolute",
|
||||||
|
w: tartest.TarAll(
|
||||||
|
tc.Dir("etc", 0770),
|
||||||
|
tc.File("/etc/passwd", []byte("inside"), 0644),
|
||||||
|
tc.Symlink("/etc/passwd", "passwdlink"),
|
||||||
|
tc.Link("/passwdlink", "localpasswd"),
|
||||||
|
),
|
||||||
|
validator: all(
|
||||||
|
sameSymlinkFile("/localpasswd", "/passwdlink"),
|
||||||
|
sameFile("/localpasswd", "/etc/passwd"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
name: "HardlinkSymlinkChmod",
|
name: "HardlinkSymlinkChmod",
|
||||||
w: func() tartest.WriterToTar {
|
w: func() tartest.WriterToTar {
|
||||||
p := filepath.Join(td, "perm400")
|
p := filepath.Join(td, "perm400")
|
||||||
@ -775,6 +782,7 @@ func TestBreakouts(t *testing.T) {
|
|||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
}...)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, bo := range breakouts {
|
for _, bo := range breakouts {
|
||||||
|
Loading…
Reference in New Issue
Block a user