Skip to content

Commit

Permalink
feat: test directory removals
Browse files Browse the repository at this point in the history
Add some tests to make sure when a directory is removed, its
contents are not visible later on.

Signed-off-by: Serge Hallyn <[email protected]>
  • Loading branch information
hallyn committed Mar 18, 2024
1 parent b585bfb commit d7e60e1
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions test/basic.bats
Original file line number Diff line number Diff line change
Expand Up @@ -316,3 +316,59 @@ busybox:
EOF
stacker build --substitute "a=b,c" --substitute BUSYBOX_OCI=${BUSYBOX_OCI}
}

@test "Test whiteouts across layers" {
# /aaa is created in l1, removed in l2, re-created in l3
# /bbb is created in l2, removed in l3
# /ccc is created in l2, removed and recreated in l3
# /ddd is created in l1, removed and recreated in l2, and extended in l3
cat > stacker.yaml <<"EOF"
l1:
from:
type: tar
url: .stacker/layer-bases/busybox.tar
run: |
mkdir -p /aaa/111/ab
mkdir -p /ddd/111/ab
l2:
from:
type: built
tag: l1
run: |
rm -rf /aaa
mkdir -p /bbb/111/ab
mkdir -p /ccc/111/ab
rm -rf /ddd
mkdir -p /ddd/222/ab
l3:
from:
type: built
tag: l2
run: |
rm -rf /bbb
rm -rf /ccc
mkdir -p /aaa/222/ab
mkdir -p /ccc/222/ab
mkdir -p /ddd/333/ab
EOF
stacker build
umoci unpack --image oci:l3 l3

# aaa/111 should be deleted, aaa/222 should exist
[ ! -d l3/rootfs/aaa/111 ]
[ -d l3/rootfs/aaa/222/ab ]

# bbb should be deleted entirely
[ ! -d l3/rootfs/bbb ]

# ccc should be like aaa - but doesn't have an intermediate layer
[ -d l3/rootfs/ccc/222 ]
[ ! -d l3/rootfs/ccc/111 ]

# ddd should have both 222 and 333 but not 111
# This is to test specifically that the opaque xattr is not copied
# up, causing 222 to be missed.
[ -d l3/rootfs/ddd/333 ]
[ -d l3/rootfs/ddd/222 ]
[ ! -d l3/rootfs/ddd/111 ]
}

0 comments on commit d7e60e1

Please sign in to comment.