OSDN Git Service

am fa01b4ca: Merge changes Ie1705960,I8b94351f,I661540a9,Id2dbdcab,I1223578c, ...
[android-x86/external-toybox.git] / tests / cp.test
1 #!/bin/bash
2
3 [ -f testing.sh ] && . testing.sh
4
5 # Create test file
6 dd if=/dev/urandom of=random bs=64 count=1 2> /dev/null
7
8 #testing "name" "command" "result" "infile" "stdin"
9
10 testing "cp not enough arguments [fail]" "cp one 2>/dev/null || echo yes" \
11         "yes\n" "" ""
12 testing "cp -missing source [fail]" "cp missing two 2>/dev/null || echo yes" \
13         "yes\n" "" ""
14 testing "cp file->file" "cp random two && cmp random two && echo yes" \
15         "yes\n" "" ""
16 rm two
17
18 mkdir two
19 testing "cp file->dir" "cp random two && cmp random two/random && echo yes" \
20         "yes\n" "" ""
21 rm two/random
22 testing "cp file->dir/file" \
23         "cp random two/random && cmp random two/random && echo yes" \
24         "yes\n" "" ""
25 testing "cp -r dir->missing" \
26         "cp -r two three && cmp random three/random && echo yes" \
27         "yes\n" "" ""
28 touch walrus
29 testing "cp -r dir->file [fail]" \
30         "cp -r two walrus 2>/dev/null || echo yes" "yes\n" "" ""
31 touch two/three
32 testing "cp -r dir hits file." \
33         "cp -r three two 2>/dev/null || echo yes" "yes\n" "" ""
34 rm -rf two three walrus
35
36 touch two
37 chmod 000 two
38 testing "cp file->inaccessable [fail]" \
39         "cp random two 2>/dev/null || echo yes" "yes\n" "" ""
40 rm -f two
41
42 touch two
43 chmod 000 two
44 testing "cp -f file->inaccessable" \
45         "cp -f random two && cmp random two && echo yes" "yes\n" "" ""
46 mkdir sub
47 chmod 000 sub
48 testing "cp file->inaccessable_dir [fail]" \
49         "cp random sub 2>/dev/null || echo yes" "yes\n" "" ""
50 rm two
51 rmdir sub
52
53 # This test fails because our -rf deletes existing target files without
54 # regard to what we'd be copying over it. Posix says to only do that if
55 # we'd be copying a file over the file, but does not say _why_.
56
57 #mkdir dir
58 #touch file
59 #testing "cp -rf dir file [fail]" "cp -rf dir file 2>/dev/null || echo yes" \
60 #       "yes\n" "" ""
61 #rm -rf dir file
62
63 touch one two
64 testing "cp file1 file2 missing [fail]" \
65         "cp one two missing 2>/dev/null || echo yes" "yes\n" "" ""
66 mkdir dir
67 testing "cp dir file missing [fail]" \
68         "cp dir two missing 2>/dev/null || echo yes" "yes\n" "" ""
69 testing "cp -rf dir file missing [fail]" \
70         "cp dir two missing 2>/dev/null || echo yes" "yes\n" "" ""
71 testing "cp file1 file2 file [fail]" \
72         "cp random one two 2>/dev/null || echo yes" "yes\n" "" ""
73 testing "cp file1 file2 dir" \
74         "cp random one dir && cmp random dir/random && cmp one dir/one && echo yes" \
75         "yes\n" "" ""
76 rm one two random
77 rm -rf dir
78
79 mkdir -p one/two/three/four
80 touch one/two/three/five
81 touch one/{six,seven,eight}
82 testing "cp -r /abspath dest" \
83         "cp -r \"$(readlink -f one)\" dir && diff -r one dir && echo yes" \
84         "yes\n" "" ""
85 testing "cp -r dir again" "cp -r one/. dir && diff -r one dir && echo yes" \
86         "yes\n" "" ""
87 mkdir dir2
88 testing "cp -r dir1/* dir2" \
89         "cp -r one/* dir2 && diff -r one dir2 && echo yes" "yes\n" "" ""
90 rm -rf one dir dir2
91
92 # cp -r ../source destdir
93 # cp -r one/two/three missing
94 # cp -r one/two/three two
95 # mkdir one; touch one/two; ln -s two one/three
96 # cp file1 file2 dir
97 # cp file1 missing file2 -> dir
98
99 # Make sure it's truncating existing file
100 # copy with -d at top level, with -d in directory, without -d at top level,
101 #      without -d in directory