summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2011-10-14 17:02:21 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2011-10-14 17:02:21 +0100
commit43ea764b160ca41a599c978f556f8248fe5380be (patch)
tree5efc971fe01673b17d16098ea27694bffc591834 /tests
parent87f84d4305716e73f43d0e0577b8295fdff2a64d (diff)
downloadtbdiff-43ea764b160ca41a599c978f556f8248fe5380be.tar.gz
Restructured tests so mandatory delay between source and target
directories can be inserted, to ensure mtime is not equal now dir_add_remove fails because the mtime of the directory changed after a file in it was altered
Diffstat (limited to 'tests')
-rwxr-xr-xtests/00_regular_file_diff.sh18
-rwxr-xr-xtests/01_regular_file_add_remove.sh9
-rwxr-xr-xtests/02_fifo_diff.sh11
-rwxr-xr-xtests/03_fifo_add_remove.sh11
-rwxr-xr-xtests/04_symlink_diff.sh27
-rwxr-xr-xtests/05_symlink_add_remove.sh29
-rwxr-xr-xtests/06_dir_diff.sh7
-rwxr-xr-xtests/07_dir_add_remove.sh7
-rwxr-xr-xtests/08_chardev_diff.sh5
-rwxr-xr-xtests/09_chardev_add_remove.sh9
-rwxr-xr-xtests/10_blockdev_diff.sh5
-rwxr-xr-xtests/11_blockdev_add_remove.sh9
-rwxr-xr-xtests/12_socket_remove.sh6
-rwxr-xr-xtests/13_socket_add.sh6
-rwxr-xr-xtests/14_socket_diff.sh18
-rwxr-xr-xtests/15_xattr_add.sh7
-rw-r--r--tests/test_lib.sh67
17 files changed, 149 insertions, 102 deletions
diff --git a/tests/00_regular_file_diff.sh b/tests/00_regular_file_diff.sh
index 613d924..0e12454 100755
--- a/tests/00_regular_file_diff.sh
+++ b/tests/00_regular_file_diff.sh
@@ -14,13 +14,17 @@ TEST_TOOLS=$3
ORG_FILE=$ORIGIN/b.txt
TGT_FILE=$TARGET/b.txt
-setup () {
- echo 1 >$ORIGIN/a.txt &&
- echo 2 >$TARGET/a.txt &&
- chgrp tty $ORIGIN/a.txt $TARGET/a.txt &&
- echo 1 > $ORG_FILE && \
- echo 2 > $TGT_FILE && \
- chown :cdrom $TGT_FILE && \
+setup_origin () {
+ echo 1 >$ORIGIN/a.txt &&
+ chgrp tty $ORIGIN/a.txt &&
+ echo 1 > $ORG_FILE
+}
+
+setup_target () {
+ echo 2 >$TARGET/a.txt &&
+ chgrp tty $TARGET/a.txt &&
+ echo 2 > $TGT_FILE &&
+ chown :cdrom $TGT_FILE &&
chmod 707 $TGT_FILE
}
diff --git a/tests/01_regular_file_add_remove.sh b/tests/01_regular_file_add_remove.sh
index f97d407..66b5bc8 100755
--- a/tests/01_regular_file_add_remove.sh
+++ b/tests/01_regular_file_add_remove.sh
@@ -11,9 +11,12 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- touch $ORIGIN/remove && \
- echo 1 > $TARGET/add && \
+setup_origin () {
+ touch $ORIGIN/remove
+}
+
+setup_target () {
+ echo 1 > $TARGET/add &&
chown -h :cdrom $TARGET/add
}
diff --git a/tests/02_fifo_diff.sh b/tests/02_fifo_diff.sh
index 73faf6b..f256414 100755
--- a/tests/02_fifo_diff.sh
+++ b/tests/02_fifo_diff.sh
@@ -11,10 +11,13 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- mkfifo $ORIGIN/remove && \
- mkfifo $TARGET/add && \
- chmod 707 $TARGET/add && \
+setup_origin () {
+ mkfifo $ORIGIN/remove
+}
+
+setup_target () {
+ mkfifo $TARGET/add &&
+ chmod 707 $TARGET/add &&
chown -h :cdrom $TARGET/add
}
diff --git a/tests/03_fifo_add_remove.sh b/tests/03_fifo_add_remove.sh
index fb42406..9db6d12 100755
--- a/tests/03_fifo_add_remove.sh
+++ b/tests/03_fifo_add_remove.sh
@@ -11,10 +11,13 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- mkfifo $ORIGIN/remove && \
- mkfifo $TARGET/add && \
- chmod 707 $TARGET/add && \
+setup_origin () {
+ mkfifo $ORIGIN/remove
+}
+
+setup_target () {
+ mkfifo $TARGET/add &&
+ chmod 707 $TARGET/add &&
chown -h :cdrom $TARGET/add
}
diff --git a/tests/04_symlink_diff.sh b/tests/04_symlink_diff.sh
index 7b414fb..d975191 100755
--- a/tests/04_symlink_diff.sh
+++ b/tests/04_symlink_diff.sh
@@ -11,21 +11,32 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- for dir in $ORIGIN $TARGET; do
+setup_origin () {
(
- cd $dir &&
+ cd $ORIGIN &&
echo 1 >file &&
chown :cdrom file &&
mkdir -p dir &&
chown :cdrom dir &&
ln -s file flink &&
ln -s dir dlink
- ); done &&
- chgrp -h daemon $TARGET/flink $TARGET/dlink &&
- ln -s /foo $ORIGIN/a && \
- ln -s /bar $TARGET/a && \
- chown -h :cdrom $TARGET/a
+ ln -s /foo a
+ )
+}
+
+setup_target () {
+ (
+ cd $TARGET &&
+ echo 1 >file &&
+ chown :cdrom file &&
+ mkdir -p dir &&
+ chown :cdrom dir &&
+ ln -s file flink &&
+ ln -s dir dlink
+ chgrp -h daemon flink dlink &&
+ ln -s /bar a &&
+ chown -h :cdrom a
+ )
}
check_results () {
diff --git a/tests/05_symlink_add_remove.sh b/tests/05_symlink_add_remove.sh
index 0c8b0ac..badf199 100755
--- a/tests/05_symlink_add_remove.sh
+++ b/tests/05_symlink_add_remove.sh
@@ -11,16 +11,21 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- ln -s /foo $ORIGIN/remove &&
- ln -s /bar $TARGET/add &&
- chown -h :cdrom $TARGET/add &&
- for dir in $ORIGIN $TARGET; do
+setup_origin () {
(
- cd $dir && mkdir -p data &&
- touch data/a data/b
- ); done &&
- (cd $ORIGIN && ln -s data datalink)
+ cd $ORIGIN
+ ln -s /foo remove &&
+ mkdir -p data &&
+ touch data/a data/b &&
+ ln -s data datalink
+ )
+}
+
+setup_target () {
+ mkdir -p $TARGET/data &&
+ touch $TARGET/data/a $TARGET/data/b &&
+ ln -s /bar $TARGET/add &&
+ chown -h :cdrom $TARGET/add
}
check_results () {
@@ -30,9 +35,13 @@ check_results () {
check_same_mtime $ORIGIN/add $TARGET/add &&
check_same_uidgid $ORIGIN/add $TARGET/add &&
test ! -L $ORIGIN/datalink &&
+ echo datalink not link &&
test -d $ORIGIN/data &&
+ echo data is dir &&
test -f $ORIGIN/data/a &&
- test -f $ORIGIN/data/b
+ echo a is dir &&
+ test -f $ORIGIN/data/b &&
+ echo b is dir
}
#############################################
diff --git a/tests/06_dir_diff.sh b/tests/06_dir_diff.sh
index 99ec034..f9f56dd 100755
--- a/tests/06_dir_diff.sh
+++ b/tests/06_dir_diff.sh
@@ -11,8 +11,11 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- mkdir $ORIGIN/a $ORIGIN/sticky $ORIGIN/setgid &&
+setup_origin () {
+ mkdir $ORIGIN/a $ORIGIN/sticky $ORIGIN/setgid
+}
+
+setup_target () {
mkdir $TARGET/a $TARGET/sticky $TARGET/setgid &&
echo "1" > $TARGET/a/1 &&
chown -h :cdrom $TARGET/a &&
diff --git a/tests/07_dir_add_remove.sh b/tests/07_dir_add_remove.sh
index a213de1..295b0f9 100755
--- a/tests/07_dir_add_remove.sh
+++ b/tests/07_dir_add_remove.sh
@@ -11,8 +11,11 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- mkdir -p $ORIGIN/remove/1/2/3/4 &&
+setup_origin () {
+ mkdir -p $ORIGIN/remove/1/2/3/4
+}
+
+setup_target () {
mkdir -p $TARGET/add/4/3/2/1 &&
mkdir -p $TARGET/addsticky &&
mkdir -p $TARGET/addsetgid &&
diff --git a/tests/08_chardev_diff.sh b/tests/08_chardev_diff.sh
index 2e3e734..c0cc72c 100755
--- a/tests/08_chardev_diff.sh
+++ b/tests/08_chardev_diff.sh
@@ -11,8 +11,11 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
+setup_origin () {
mknod $ORIGIN/tochange c `stat /dev/null -c '%t %T'`
+}
+
+setup_target () {
mknod $TARGET/tochange c `stat /dev/full -c '%t %T'`
}
diff --git a/tests/09_chardev_add_remove.sh b/tests/09_chardev_add_remove.sh
index cb4212c..edd7c93 100755
--- a/tests/09_chardev_add_remove.sh
+++ b/tests/09_chardev_add_remove.sh
@@ -11,10 +11,13 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- #make a node with the same numbers as /dev/null
- setup_block_major_minor="`stat /dev/null -c '%t %T'`"
+setup_block_major_minor="`stat /dev/null -c '%t %T'`"
+
+setup_origin () {
mknod $ORIGIN/toremove c $setup_block_major_minor
+}
+
+setup_target () {
mknod $TARGET/toadd c $setup_block_major_minor
}
diff --git a/tests/10_blockdev_diff.sh b/tests/10_blockdev_diff.sh
index 2565ba4..ebb529a 100755
--- a/tests/10_blockdev_diff.sh
+++ b/tests/10_blockdev_diff.sh
@@ -11,8 +11,11 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
+setup_origin () {
mknod $ORIGIN/tochange b `stat /dev/null -c '%t %T'`
+}
+
+setup_target () {
mknod $TARGET/tochange b `stat /dev/full -c '%t %T'`
}
diff --git a/tests/11_blockdev_add_remove.sh b/tests/11_blockdev_add_remove.sh
index 4fa7f5a..3cc4ecb 100755
--- a/tests/11_blockdev_add_remove.sh
+++ b/tests/11_blockdev_add_remove.sh
@@ -11,10 +11,13 @@ TEST_TOOLS=$3
############# Test specific code ############
-setup () {
- #make a node with the same numbers as /dev/null
- setup_block_major_minor="`stat /dev/null -c '%t %T'`"
+setup_block_major_minor="`stat /dev/null -c '%t %T'`"
+
+setup_origin () {
mknod $ORIGIN/toremove b $setup_block_major_minor
+}
+
+setup_target () {
mknod $TARGET/toadd b $setup_block_major_minor
}
diff --git a/tests/12_socket_remove.sh b/tests/12_socket_remove.sh
index db44380..d594b2a 100755
--- a/tests/12_socket_remove.sh
+++ b/tests/12_socket_remove.sh
@@ -14,7 +14,7 @@ TEST_TOOLS=$3
# creation is only performed by the program that acts as the server
# tbdiff won't be doing that so the only sensible operation is removal
SOCKBIND=`mktemp`
-setup () {
+setup_origin () {
# sockbind creates a socket then writes any data written to it to stdout
# have to fork it because it will never stop, have to wait for it to
# make the socket
@@ -26,6 +26,10 @@ setup () {
rm -f $SOCKBIND
}
+setup_target () {
+ true
+}
+
create_test_return () {
test $1 = 0
}
diff --git a/tests/13_socket_add.sh b/tests/13_socket_add.sh
index daa4f8f..b8c84d6 100755
--- a/tests/13_socket_add.sh
+++ b/tests/13_socket_add.sh
@@ -12,7 +12,11 @@ TEST_TOOLS=$3
############# Test specific code ############
# sockets can't be added sensibly, test that it hasn't been
SOCKBIND=`mktemp`
-setup () {
+setup_origin () {
+ true
+}
+
+setup_target () {
gcc sockbind.c -o $SOCKBIND 2>/dev/null >/dev/null
$SOCKBIND "$TARGET/toadd" &
SOCKBINDPID=$!
diff --git a/tests/14_socket_diff.sh b/tests/14_socket_diff.sh
index 9cf9195..d7d393f 100755
--- a/tests/14_socket_diff.sh
+++ b/tests/14_socket_diff.sh
@@ -13,15 +13,21 @@ TEST_TOOLS=$3
# sockets can't be changed sensibly, test that it hasn't been
SOCKBIND=`mktemp`
-setup () {
+setup_origin () {
gcc sockbind.c -o $SOCKBIND 2>/dev/null >/dev/null
$SOCKBIND "$ORIGIN/tochange" &
- SOCKBINDPID1=$!
+ SOCKBINDPID=$!
+ until test -S "$ORIGIN/tochange"; do :; done
+ kill $SOCKBINDPID
+ wait $SOCKBINDPID 2>/dev/null || true #wait returns false
+}
+
+setup_target () {
$SOCKBIND "$TARGET/tochange" &
- SOCKBINDPID2=$!
- until test -S "$TARGET/tochange" -a -S "$ORIGIN/tochange"; do :; done
- kill $SOCKBINDPID1 $SOCKBINDPID2 &&
- wait $SOCKBINDPID1 $SOCKBINDPID2 2>/dev/null #surpress terminated output
+ SOCKBINDPID=$!
+ until test -S "$TARGET/tochange"; do :; done
+ kill $SOCKBINDPID &&
+ wait $SOCKBINDPID 2>/dev/null #surpress terminated output
rm -f $SOCKBIND
}
diff --git a/tests/15_xattr_add.sh b/tests/15_xattr_add.sh
index 18156aa..1dcec4c 100755
--- a/tests/15_xattr_add.sh
+++ b/tests/15_xattr_add.sh
@@ -15,11 +15,14 @@ if is_command getfattr && is_command setfattr; then :; else
exit 127
fi
-setup () {
+setup_origin () {
touch $ORIGIN/file &&
setfattr -n "user.preserve" -v "true" $ORIGIN/file &&
setfattr -n "user.change" -v "false" $ORIGIN/file &&
- setfattr -n "user.remove" -v "false" $ORIGIN/file &&
+ setfattr -n "user.remove" -v "false" $ORIGIN/file
+}
+
+setup_target () {
touch $TARGET/file &&
setfattr -n "user.preserve" -v "true" $TARGET/file &&
setfattr -n "user.change" -v "true" $TARGET/file &&
diff --git a/tests/test_lib.sh b/tests/test_lib.sh
index eb66c9e..85df52b 100644
--- a/tests/test_lib.sh
+++ b/tests/test_lib.sh
@@ -21,12 +21,12 @@ check_same_mode () {
test $(stat -c "%f" $1) = $(stat -c "%f" $2)
}
-# check_perm FILE EXPECTED_OCTAL_PERMISSIONS
+# check_content FILE EXPECTED_OCTAL_PERMISSIONS
check_perm () {
test $(stat -c %a $1) = $2
}
-# check_symlink FILE EXPECTED_PATH
+# check_content FILE EXPECTED_OCTAL_PERMISSIONS
check_symlink () {
test $(readlink $1) = $2
}
@@ -41,31 +41,6 @@ check_group () {
test $(stat -c %G $1) = $2
}
-# check_xattrs FILE1 FILE2
-# check that two files have the same attributes
-check_xattrs () {
- test "`getfattr --dump --encoding=base64 $1 | tail -n +2`" = \
- "`getfattr --dump --encoding=base64 $2 | tail -n +2`"
-}
-
-# check_xattr_exists FILE KEY
-check_xattr_exists () {
- # attr doesn't use user. prefix, but getfattr returns 0 on non-existant
- noprefix=`echo $2 | sed s/user.//`
- attr -g $2 $1 >dev/null 2>/dev/null
-}
-
-# xattr_get FILE KEY
-xattr_get () {
- getfattr --only-values --name=$2 $1
-}
-
-# check_xattr_value FILE KEY VALUE
-check_xattr_value () {
- check_xattr_exists &&
- test "`xattr_get $1 $2`" = "$3"
-}
-
# tests whether a command exists
is_command () {
type $1 >/dev/null 2>/dev/null
@@ -73,9 +48,9 @@ is_command () {
#check_command COMMAND_STRING TEST_COMMAND COMMAND_DESCRIPTION
check_command () {
- COMMAND_STRING=$1
- TEST_COMMAND=$2
- COMMAND_DESCRIPTION="$3"
+ COMMAND_STRING="$1"
+ COMMAND_DESCRIPTION="$2"
+ TEST_COMMAND="$3"
eval $COMMAND_STRING
RETVAL=$?
if is_command "$TEST_COMMAND"; then #test explicitly checks return
@@ -130,7 +105,9 @@ cleanup_and_exit () {
rm -rf $TESTDIR
exit 1
}
-
+command_succeeded () {
+ test "$1" = "0"
+}
main () {
start $@
echo -n "$TEST_ID Setting up $TEST_NAME test: "
@@ -141,25 +118,27 @@ main () {
"Please check mktemp accepts -d and permissions." >&2
cleanup_and_exit
fi
- mkdir -p $ORIGIN && \
- mkdir -p $TARGET && \
- setup
- if [ $? -ne 0 ]
- then
- echo $FAIL
- echo "Couldn't setup the test directory structure. Check your privileges" 1>&2
- cleanup_and_exit
- fi
+ mkdir -p $ORIGIN &&
+ check_command 'setup_origin' "$TEST_ID-$TEST_NAME: creating origin" \
+ 'command_succeeded' &&
+ sleep 2s &&
+ mkdir -p $TARGET &&
+ check_command 'setup_target' "$TEST_ID-$TEST_NAME: creating target" \
+ 'command_succeeded' &&
+
echo $OK
echo "$TEST_ID Performing $TEST_NAME image creation and deployment: "
+ sleep 2s &&
CWD=$(pwd) &&
- check_command "$CREATE $IMGFILE $ORIGIN $TARGET" 'create_test_return' \
- "$TEST_ID-$TEST_NAME: creating image"
+ check_command "$CREATE $IMGFILE $ORIGIN $TARGET" \
+ "$TEST_ID-$TEST_NAME: creating image" \
+ 'create_test_return'
cd $ORIGIN &&
- check_command "$DEPLOY $IMGFILE" 'deploy_test_return' \
- "$TEST_ID-$TEST_NAME: deploying image"
+ check_command "$DEPLOY $IMGFILE" \
+ "$TEST_ID-$TEST_NAME: deploying image" \
+ 'deploy_test_return'
cd $CWD
echo -n "$TEST_ID Checking $TEST_NAME results: "