d90b87cc9aa2bb78b8f6e5c0a025f9dc5b3f7194
[platform/upstream/coreutils.git] / tests / cp / cp-mv-backup
1 #!/bin/sh
2 # Test basic --backup functionality for both cp and mv.
3
4 if test "$VERBOSE" = yes; then
5   set -x
6   cp --version
7 fi
8
9 # Ensure that ls sorts the same way for everyone.
10 . $srcdir/../lang-default
11
12 . $srcdir/../envvar-check
13
14 umask 022
15
16 # Be careful to close $actual before removing the containing directory.
17 # Use `1>&2' rather than `1<&-' since the latter appears not to work
18 # with /bin/sh from powerpc-ibm-aix4.2.0.0.
19
20 pwd=`pwd`
21 t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
22 trap 'status=$?; cd $pwd; exec 1>&2; rm -rf $t0 && exit $status' 0
23 trap '(exit $?); exit' 1 2 13 15
24
25 framework_failure=0
26 mkdir -p $tmp || framework_failure=1
27 cd $tmp || framework_failure=1
28
29 if test $framework_failure = 1; then
30   echo "$0: failure in testing framework" 1>&2
31   (exit 1); exit 1
32 fi
33
34 actual=actual
35 expected=expected
36
37 exec 1> $actual
38
39 fail=0
40 for prog in cp mv; do
41   for initial_files in 'x' 'x y' 'x y y~' 'x y y.~1~' 'x y y~ y.~1~'; do
42     for opt in none off  numbered t  existing nil  simple never; do
43       touch $initial_files
44         $prog --backup=$opt x y || fail=1
45       echo $initial_files $opt: `ls [xy]*`; rm -f x y y~ y.~?~
46     done
47   done
48 done
49
50 cat <<\EOF > $expected-tmp
51 x none: x y
52 x off: x y
53 x numbered: x y
54 x t: x y
55 x existing: x y
56 x nil: x y
57 x simple: x y
58 x never: x y
59 x y none: x y
60 x y off: x y
61 x y numbered: x y y.~1~
62 x y t: x y y.~1~
63 x y existing: x y y~
64 x y nil: x y y~
65 x y simple: x y y~
66 x y never: x y y~
67 x y y~ none: x y y~
68 x y y~ off: x y y~
69 x y y~ numbered: x y y.~1~ y~
70 x y y~ t: x y y.~1~ y~
71 x y y~ existing: x y y~
72 x y y~ nil: x y y~
73 x y y~ simple: x y y~
74 x y y~ never: x y y~
75 x y y.~1~ none: x y y.~1~
76 x y y.~1~ off: x y y.~1~
77 x y y.~1~ numbered: x y y.~1~ y.~2~
78 x y y.~1~ t: x y y.~1~ y.~2~
79 x y y.~1~ existing: x y y.~1~ y.~2~
80 x y y.~1~ nil: x y y.~1~ y.~2~
81 x y y.~1~ simple: x y y.~1~ y~
82 x y y.~1~ never: x y y.~1~ y~
83 x y y~ y.~1~ none: x y y.~1~ y~
84 x y y~ y.~1~ off: x y y.~1~ y~
85 x y y~ y.~1~ numbered: x y y.~1~ y.~2~ y~
86 x y y~ y.~1~ t: x y y.~1~ y.~2~ y~
87 x y y~ y.~1~ existing: x y y.~1~ y.~2~ y~
88 x y y~ y.~1~ nil: x y y.~1~ y.~2~ y~
89 x y y~ y.~1~ simple: x y y.~1~ y~
90 x y y~ y.~1~ never: x y y.~1~ y~
91 EOF
92
93 sed 's/: x/:/' $expected-tmp |cat $expected-tmp - > $expected
94
95 cmp $expected $actual || fail=1
96
97 # Uncomment this if you see a failure and want to try to diagnose it.
98 test $fail = 1 && diff -c $expected $actual 1>&2
99
100 (exit $fail); exit $fail