Add directory permission tests

Adds tests for verifying parent directory permissions.
Currently an issue exists in extracting into some Docker graph
drivers. Supporting these graph drivers may require changes to
the diff logic, these tests clarify the existing behavior and
that extraction within containerd works.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
This commit is contained in:
Derek McGowan 2017-11-06 12:04:21 -08:00
parent 5acf187697
commit 8889d459af
No known key found for this signature in database
GPG Key ID: F58C5D0A4405ACDB
2 changed files with 42 additions and 0 deletions

View File

@ -108,6 +108,31 @@ func TestFileReplace(t *testing.T) {
} }
} }
func TestParentDirectoryPermission(t *testing.T) {
l1 := fstest.Apply(
fstest.CreateDir("/dir1", 0700),
fstest.CreateDir("/dir2", 0751),
fstest.CreateDir("/dir3", 0777),
)
l2 := fstest.Apply(
fstest.CreateDir("/dir1/d", 0700),
fstest.CreateFile("/dir1/d/f", []byte("irrelevant"), 0644),
fstest.CreateFile("/dir1/f", []byte("irrelevant"), 0644),
fstest.CreateFile("/dir2/f", []byte("irrelevant"), 0644),
fstest.CreateFile("/dir3/f", []byte("irrelevant"), 0644),
)
diff := []TestChange{
Add("/dir1/d"),
Add("/dir1/d/f"),
Add("/dir1/f"),
Add("/dir2/f"),
Add("/dir3/f"),
}
if err := testDiffWithBase(l1, l2, diff); err != nil {
t.Fatalf("Failed diff with base: %+v", err)
}
}
func TestUpdateWithSameTime(t *testing.T) { func TestUpdateWithSameTime(t *testing.T) {
tt := time.Now().Truncate(time.Second) tt := time.Now().Truncate(time.Second)
t1 := tt.Add(5 * time.Nanosecond) t1 := tt.Add(5 * time.Nanosecond)

View File

@ -18,6 +18,7 @@ func FSSuite(t *testing.T, a TestApplier) {
t.Run("Basic", makeTest(t, a, basicTest)) t.Run("Basic", makeTest(t, a, basicTest))
t.Run("Deletion", makeTest(t, a, deletionTest)) t.Run("Deletion", makeTest(t, a, deletionTest))
t.Run("Update", makeTest(t, a, updateTest)) t.Run("Update", makeTest(t, a, updateTest))
t.Run("DirectoryPermission", makeTest(t, a, directoryPermissionsTest))
t.Run("HardlinkUnmodified", makeTest(t, a, hardlinkUnmodified)) t.Run("HardlinkUnmodified", makeTest(t, a, hardlinkUnmodified))
t.Run("HardlinkBeforeUnmodified", makeTest(t, a, hardlinkBeforeUnmodified)) t.Run("HardlinkBeforeUnmodified", makeTest(t, a, hardlinkBeforeUnmodified))
t.Run("HardlinkBeforeModified", makeTest(t, a, hardlinkBeforeModified)) t.Run("HardlinkBeforeModified", makeTest(t, a, hardlinkBeforeModified))
@ -142,6 +143,22 @@ var (
), ),
} }
// directoryPermissionsTest covers directory permissions on update
directoryPermissionsTest = []Applier{
Apply(
CreateDir("/d1", 0700),
CreateDir("/d2", 0751),
CreateDir("/d3", 0777),
),
Apply(
CreateFile("/d1/f", []byte("irrelevant"), 0644),
CreateDir("/d1/d", 0700),
CreateFile("/d1/d/f", []byte("irrelevant"), 0644),
CreateFile("/d2/f", []byte("irrelevant"), 0644),
CreateFile("/d3/f", []byte("irrelevant"), 0644),
),
}
hardlinkUnmodified = []Applier{ hardlinkUnmodified = []Applier{
baseApplier, baseApplier,
Apply( Apply(