function beforefiles {
cat <<FILES
f $LOWER_DIR1/d1/d2/d3/d4/.wh.c
+c $LOWER_DIR1/devnull
FILES
}
function afterfiles_rw {
cat <<FILES
b $LOWER_DIR0/a
+d $LOWER_DIR0/d1/d2
+d $LOWER_DIR0/d1/d2/d3
+d $LOWER_DIR0/d1/d2/d3/d4
+b $LOWER_DIR0/d1/d2/d3/d4/c
+d $LOWER_DIR0/d5
+c $LOWER_DIR0/d5/b
-c $LOWER_DIR1/d5/b
-
-b $LOWER_DIR1/d1/d2/d3/d4/c
+f $LOWER_DIR1/d1/d2/d3/d4/.wh.c
+c $LOWER_DIR1/devnull
FILES
}
d $LOWER_DIR0/d5
c $LOWER_DIR0/d5/b
-
-f $LOWER_DIR1/d1/d2/d3/d4/.wh.c
d $LOWER_DIR0/d1/d2
d $LOWER_DIR0/d1/d2/d3
d $LOWER_DIR0/d1/d2/d3/d4
b $LOWER_DIR0/d1/d2/d3/d4/c
+c $LOWER_DIR0/devnull
+
+f $LOWER_DIR1/d1/d2/d3/d4/.wh.c
+c $LOWER_DIR1/devnull
FILES
}
-
+function test_rw {
+# The read-write tests
( directories ; beforefiles) | create_hierarchy
mount_union "" $LOWER_DIR0 $LOWER_DIR1
mknod $MOUNTPOINT/d1/d2/d3/d4/c b 200 0
checktype "$MOUNTPOINT/d1/d2/d3/d4/c" 'b'
+checkperms $MOUNTPOINT/devnull 644
+chmod 666 $MOUNTPOINT/devnull
+echo > $MOUNTPOINT/devnull
+checkperms $MOUNTPOINT/devnull 666
unmount_union
( directories ; afterfiles_rw ) | check_hierarchy $TOP_LOWER_DIR
+echo -n "[rw] "
+}
+function test_ro {
+# The read-only tests
( directories ; beforefiles) | create_hierarchy
mount_union "" $LOWER_DIR0 $LOWER_DIR1=ro
mknod $MOUNTPOINT/d1/d2/d3/d4/c b 200 0
checktype "$MOUNTPOINT/d1/d2/d3/d4/c" 'b'
+checkperms $MOUNTPOINT/devnull 644
+chmod 666 $MOUNTPOINT/devnull
+echo > $MOUNTPOINT/devnull
+checkperms $MOUNTPOINT/devnull 666
+
unmount_union
( directories ; afterfiles_ro ) | check_hierarchy $TOP_LOWER_DIR
+echo -n "[ro] "
+}
+
+test_rw
+test_ro
complete_test