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