cp.test revision 50c8c023358645195585f1503bfb97e2fb92c940
1dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley#!/bin/bash
2dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
3dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley[ -f testing.sh ] && . testing.sh
4dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
5dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley# Create test file
6dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleydd if=/dev/urandom of=random bs=64 count=1 > /dev/null
7dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
8dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley#testing "name" "command" "result" "infile" "stdin"
9dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
10dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp not enough arguments [fail]" "cp one 2>/dev/null || echo yes" \
11dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
12dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -missing source [fail]" "cp missing two 2>/dev/null || echo yes" \
13dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
14dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file->file" "cp random two && cmp random two && echo yes" \
15dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
16dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm two
17dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
18dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleymkdir two
19dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file->dir" "cp random two && cmp random two/random && echo yes" \
20dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
21dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm two/random
22dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file->dir/file" \
23dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp random two/random && cmp random two/random && echo yes" \
24dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
25dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -r dir->missing" \
26dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp -r two three && cmp random three/random && echo yes" \
27dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" "" 
28dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch walrus
29dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -r dir->file [fail]" \
30dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp -r two walrus 2>/dev/null || echo yes" "yes\n" "" ""
31dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch two/three
32dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -r dir hits file." \
33dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp -r three two 2>/dev/null || echo yes" "yes\n" "" ""
34dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm -rf two three walrus
35dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
36dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch two
37dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleychmod 000 two
38dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file->inaccessable [fail]" \
39dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp random two 2>/dev/null || echo yes" "yes\n" "" ""
40dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm -f two
41dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
42dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch two
43dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleychmod 000 two
44dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -f file->inaccessable" \
45dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp -f random two && cmp random two && echo yes" "yes\n" "" ""
46dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleymkdir sub
47dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleychmod 000 sub
48dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file->inaccessable_dir [fail]" \
49dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp random sub 2>/dev/null || echo yes" "yes\n" "" ""
50dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm two
51dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrmdir sub
52dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
53dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleymkdir dir
54dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch file
55dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -rf dir file [fail]" "cp -rf dir file 2>/dev/null || echo yes" \
56dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
57dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm -rf dir file
58dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
59dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytouch one two
60dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file1 file2 missing [fail]" \
61dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp one two missing 2>/dev/null || echo yes" "yes\n" "" ""
62dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleymkdir dir
63dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp dir file missing [fail]" \
64dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp dir two missing 2>/dev/null || echo yes" "yes\n" "" ""
65dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp -rf dir file missing [fail]" \
66dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp dir two missing 2>/dev/null || echo yes" "yes\n" "" ""
67dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file1 file2 file [fail]" \
68dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp random one two 2>/dev/null || echo yes" "yes\n" "" ""
69dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleytesting "cp file1 file2 dir" \
70dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"cp random one dir && cmp random dir/random && cmp one dir/one && echo yes" \
71dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley	"yes\n" "" ""
72dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm one two random
73dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landleyrm -rf dir
74dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley
755ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleymkdir -p one/two/three/four
765ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleytouch one/two/three/five
775ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleytouch one/{six,seven,eight}
785ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleytesting "cp -r /abspath dest" \
795ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley	"cp -r \"$(readlink -f one)\" dir && diff -r one dir && echo yes" \
805ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley	"yes\n" "" ""
8150c8c023358645195585f1503bfb97e2fb92c940Rob Landleytesting "cp -r dir again" "cp -r one/. dir && diff -r one dir && echo yes" \
8250c8c023358645195585f1503bfb97e2fb92c940Rob Landley	"yes\n" "" ""
835ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleymkdir dir2
845ba6663ad463973a39fd65397f9ebda52657eb7cRob Landleytesting "cp -r dir1/* dir2" \
855ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley	"cp -r one/* dir2 && diff -r one dir2 && echo yes" "yes\n" "" ""
8650c8c023358645195585f1503bfb97e2fb92c940Rob Landleyrm -rf one dir dir2
876e6871c3b253d26ab31e328dd5f9b6996b75688cRob Landley
885ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# cp -r ../source destdir
895ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# cp -r one/two/three missing
905ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# cp -r one/two/three two
915ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# mkdir one; touch one/two; ln -s two one/three
92dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley# cp file1 file2 dir
93dd282026714cb3bf4a1b98f0ecd360c980bc65b0Rob Landley# cp file1 missing file2 -> dir
945ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley
955ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# Make sure it's truncating existing file
965ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley# copy with -d at top level, with -d in directory, without -d at top level,
975ba6663ad463973a39fd65397f9ebda52657eb7cRob Landley#      without -d in directory
98