X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=fuse%2Ftest-fuse.sh;h=cfa277aa603a75da11c8c1f02b6bed8a6e7b4694;hp=2b4d0d75e4f15ec7b276f20805d48e612876a621;hb=f7d18c84dde596699ffc5100fec2cf7b0d582450;hpb=60d020d363ec49a547fe047ac2f9bd88c8efcd5c diff --git a/fuse/test-fuse.sh b/fuse/test-fuse.sh index 2b4d0d7..cfa277a 100755 --- a/fuse/test-fuse.sh +++ b/fuse/test-fuse.sh @@ -1,6 +1,6 @@ #!/bin/bash - # libguestfs -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2011 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,6 +31,10 @@ nr_stages=$(grep "^stage " $0 | wc -l) # and move to that directory for the initial phase of the script. top_builddir=$(cd "$top_builddir" > /dev/null; pwd) +# Set TMPDIR so the appliance doesn't conflict with globally +# installed libguestfs. +export TMPDIR=$top_builddir + # Set libguestfs up for running locally. export LIBGUESTFS_PATH="$top_builddir/appliance" @@ -86,20 +90,29 @@ function stage () ((s++)) } -stage Create filesystem with some inital content +stage Create filesystem with some initial content $guestfish < /dev/null EOF stage Mounting the filesystem -$guestmount -a "$image" -m /dev/sda1 "$mp" +$guestmount \ + -a "$image" -m /dev/sda1:/:acl,user_xattr \ + -o uid="$(id -u)" -o gid="$(id -g)" "$mp" +# To debug guestmount, add this to the end of the preceding command: +# -v -x & sleep 60 stage Changing into mounted directory cd "$mp" @@ -195,21 +208,46 @@ truncate -c -s 0 truncated [ "$(stat -c %s truncated)" -eq 0 ] rm -f truncated -stage Checking utimens and timestamps -for ts in 12345 1234567 987654321; do - # NB: It's not possible to set the ctime with touch. - touch -a -d @$ts timestamp - [ "$(stat -c %X timestamp)" -eq $ts ] - touch -m -d @$ts timestamp - [ "$(stat -c %Y timestamp)" -eq $ts ] - touch -d @$ts timestamp - [ "$(stat -c %X timestamp)" -eq $ts ] - [ "$(stat -c %Y timestamp)" -eq $ts ] -done +# Disabled because of RHBZ#660687 on Debian. +# stage Checking utimens and timestamps +# for ts in 12345 1234567 987654321; do +# # NB: It's not possible to set the ctime with touch. +# touch -a -d @$ts timestamp +# [ "$(stat -c %X timestamp)" -eq $ts ] +# touch -m -d @$ts timestamp +# [ "$(stat -c %Y timestamp)" -eq $ts ] +# touch -d @$ts timestamp +# [ "$(stat -c %X timestamp)" -eq $ts ] +# [ "$(stat -c %Y timestamp)" -eq $ts ] +# done + +stage Checking writes +cp hello.txt copy.txt +echo >> copy.txt +echo world >> copy.txt +echo bigger >> copy.txt +echo biggest >> copy.txt +[ "$(cat copy.txt)" = "hello +world +bigger +biggest" ] + +stage 'Checking extended attribute (xattr) read operation' +if getfattr --help > /dev/null 2>&1 ; then + [ "$(getfattr -d user_xattr | grep -v ^#)" = 'user.test="hello123"' ] +fi + +stage Checking POSIX ACL read operation +if getfacl --help > /dev/null 2>&1 ; then + [ "$(getfacl -n acl | grep -v ^#)" = "user::rw- +user:500:r-- +group::r-- +mask::r-- +other::r--" ] +fi # These ones are not yet tested by the current script: #stage XXX statfs/statvfs -#stage XXX xattr operations # These ones cannot easily be tested by the current script, eg because # this script doesn't run as root: