summaryrefslogtreecommitdiff
path: root/qa/738
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/738
downloadpcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/738')
-rwxr-xr-xqa/738215
1 files changed, 215 insertions, 0 deletions
diff --git a/qa/738 b/qa/738
new file mode 100755
index 0000000..fb4189c
--- /dev/null
+++ b/qa/738
@@ -0,0 +1,215 @@
+#!/bin/sh
+# PCP QA Test No. 738
+# Exercise pmlogmv
+#
+# Copyright (c) 2014 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=1 # failure is the default!
+$sudo rm -rf $tmp.* $seq.full
+mkdir $tmp
+cd $tmp
+trap "cd $here; rm -rf $tmp.* $tmp; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ # there are a lot of bizarre quoting variants for ln(1) error
+ # messages!
+ sed \
+ -e '/^[rwx.-]* /s/.* /... ls data ... /' \
+ -e 's/`'"/'/g" \
+ -e 's/‘'"/'/g" \
+ -e 's/’'"/'/g" \
+ -e 's/ln: creating hard link/ln: failed to create hard link/'
+}
+
+# real QA test starts here
+#
+
+echo "=== Usage, no input files, incomplete input archive ==="
+pmlogmv
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv foo
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv foo bar
+sts=$?
+[ $sts -eq 0 ] || echo exit status $sts
+cp $here/src/foo.0 .
+pmlogmv foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+rm foo.0
+cp $here/src/foo.meta .
+pmlogmv foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+rm -f foo.* bar.*
+
+echo
+echo "=== non-pcp archives and output files already exist ==="
+cp $here/src/foo.* .
+touch foo.frog
+pmlogmv -V foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls foo* bar*
+rm -f foo.* bar.*
+cp $here/src/foo.* .
+for i in 0 index meta
+do
+ echo "--- bar.$i already exists ---"
+ cp $here/src/bar.$i .
+ pmlogmv -V foo bar >$tmp.out 2>&1
+ sts=$?
+ _filter <$tmp.out
+ [ $sts -eq 0 ] || echo exit status $sts
+ ls foo* bar*
+ rm bar.$i
+done
+rm -f foo.* bar.*
+
+echo
+echo "=== simplest case ==="
+cp $here/src/foo.* .
+pmlogmv -NV foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+pmlogmv -V foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for part in 0 index meta
+do
+ if cmp $here/src/foo.$part bar.$part
+ then
+ :
+ else
+ echo "Arrgh ... input foo.$part not the same as output bar.$part"
+ ls -l $here/src/foo.$part bar.$part
+ fi
+done
+ls foo* bar*
+rm -f foo.* bar.*
+
+echo
+echo "=== single oldfile name cases ==="
+for ext in meta 0 index
+do
+ echo "--- foo.$ext ---"
+ cp $here/src/foo.* .
+ pmlogmv -V foo.$ext bar >$tmp.out 2>&1
+ sts=$?
+ _filter <$tmp.out
+ [ $sts -eq 0 ] || echo exit status $sts
+ for part in 0 index meta
+ do
+ if cmp $here/src/foo.$part bar.$part
+ then
+ :
+ else
+ echo "Arrgh ... input foo.$part not the same as output bar.$part"
+ ls -l $here/src/foo.$part bar.$part
+ fi
+ done
+ ls foo* bar*
+ rm -f foo.* bar.*
+done
+
+echo
+echo "=== multi-volume case ==="
+cp $here/src/mv-foo.* .
+cp mv-foo.2 mv-foo.123456789
+pmlogmv -V mv-foo bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for opart in 0 1 2 123456789 index meta
+do
+ npart=$opart
+ [ "$opart" = 123456789 ] && opart=2
+ if cmp $here/src/mv-foo.$opart bar.$npart
+ then
+ :
+ else
+ echo "Arrgh ... input mv-foo.$opart not the same as output bar.$npart"
+ ls -l $here/src/mv-foo.$opart bar.$npart
+ fi
+done
+ls foo* bar*
+rm -f foo.* bar.*
+
+echo
+echo "=== old and new in different directories =="
+mkdir new
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+for part in 0 1 2 index meta
+do
+ if cmp $here/src/mv-foo.$part new/mv-foo.$part
+ then
+ :
+ else
+ echo "Arrgh ... input mv-foo.$part not the same as output new/mv-foo.$part"
+ ls -l $here/src/mv-foo.$part new/mv-foo.$part
+ fi
+done
+ls foo* new/*
+rm -rf foo.* new
+
+echo
+echo "=== error case for ln failing ==="
+mkdir new
+chmod u-w,g-w,o-w new
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* new/*
+rm -rf foo.* new
+
+echo
+echo "=== error case for rm failing ==="
+mkdir new
+chmod u-w,g-w,o-w .
+cp $here/src/mv-foo.* .
+pmlogmv -V mv-foo new/mv-foo >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* new/*
+chmod u+w,g+w,o+w .
+rm -rf mv-foo.* new
+
+echo
+echo "=== Frank's error case rm failing after first file ==="
+cp $here/src/mv-foo.* .
+ln mv-foo.2 mv-foo.3
+pmlogmv -V mv-foo mv-bar >$tmp.out 2>&1
+sts=$?
+_filter <$tmp.out
+[ $sts -eq 0 ] || echo exit status $sts
+ls mv-foo* mv-bar*
+rm -rf mv-foo.* mv-bar.*
+
+# success, all done
+status=0
+
+exit