]>
Commit | Line | Data |
---|---|---|
d6a31e08 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='check output directory names used by git-clone' | |
4 | . ./test-lib.sh | |
5 | ||
6 | # we use a fake ssh wrapper that ignores the arguments | |
7 | # entirely; we really only care that we get _some_ repo, | |
8 | # as the real test is what clone does on the local side | |
9 | test_expect_success 'setup ssh wrapper' ' | |
10 | write_script "$TRASH_DIRECTORY/ssh-wrapper" <<-\EOF && | |
11 | git upload-pack "$TRASH_DIRECTORY" | |
12 | EOF | |
13 | GIT_SSH="$TRASH_DIRECTORY/ssh-wrapper" && | |
14 | export GIT_SSH && | |
15 | export TRASH_DIRECTORY | |
16 | ' | |
17 | ||
18 | # make sure that cloning $1 results in local directory $2 | |
19 | test_clone_dir () { | |
20 | url=$1; shift | |
21 | dir=$1; shift | |
22 | expect=success | |
23 | bare=non-bare | |
24 | clone_opts= | |
25 | for i in "$@" | |
26 | do | |
27 | case "$i" in | |
28 | fail) | |
29 | expect=failure | |
30 | ;; | |
31 | bare) | |
32 | bare=bare | |
33 | clone_opts=--bare | |
34 | ;; | |
35 | esac | |
36 | done | |
37 | test_expect_$expect "clone of $url goes to $dir ($bare)" " | |
38 | rm -rf $dir && | |
39 | git clone $clone_opts $url && | |
40 | test_path_is_dir $dir | |
41 | " | |
42 | } | |
43 | ||
44 | # basic syntax with bare and non-bare variants | |
45 | test_clone_dir host:foo foo | |
46 | test_clone_dir host:foo foo.git bare | |
47 | test_clone_dir host:foo.git foo | |
48 | test_clone_dir host:foo.git foo.git bare | |
49 | test_clone_dir host:foo/.git foo | |
db2e2204 | 50 | test_clone_dir host:foo/.git foo.git bare |
d6a31e08 JK |
51 | |
52 | # similar, but using ssh URL rather than host:path syntax | |
53 | test_clone_dir ssh://host/foo foo | |
54 | test_clone_dir ssh://host/foo foo.git bare | |
55 | test_clone_dir ssh://host/foo.git foo | |
56 | test_clone_dir ssh://host/foo.git foo.git bare | |
57 | test_clone_dir ssh://host/foo/.git foo | |
db2e2204 | 58 | test_clone_dir ssh://host/foo/.git foo.git bare |
d6a31e08 JK |
59 | |
60 | # we should remove trailing slashes and .git suffixes | |
61 | test_clone_dir ssh://host/foo/ foo | |
62 | test_clone_dir ssh://host/foo/// foo | |
63 | test_clone_dir ssh://host/foo/.git/ foo | |
db2e2204 JK |
64 | test_clone_dir ssh://host/foo.git/ foo |
65 | test_clone_dir ssh://host/foo.git/// foo | |
d6a31e08 JK |
66 | test_clone_dir ssh://host/foo///.git/ foo |
67 | test_clone_dir ssh://host/foo/.git/// foo | |
68 | ||
69 | test_clone_dir host:foo/ foo | |
70 | test_clone_dir host:foo/// foo | |
db2e2204 | 71 | test_clone_dir host:foo.git/ foo |
d6a31e08 | 72 | test_clone_dir host:foo/.git/ foo |
db2e2204 | 73 | test_clone_dir host:foo.git/// foo |
d6a31e08 JK |
74 | test_clone_dir host:foo///.git/ foo |
75 | test_clone_dir host:foo/.git/// foo | |
76 | ||
77 | # omitting the path should default to the hostname | |
78 | test_clone_dir ssh://host/ host | |
92722efe | 79 | test_clone_dir ssh://host:1234/ host |
e8959867 | 80 | test_clone_dir ssh://user@host/ host |
92722efe | 81 | test_clone_dir host:/ host |
d6a31e08 JK |
82 | |
83 | # auth materials should be redacted | |
e8959867 | 84 | test_clone_dir ssh://user:password@host/ host |
92722efe PS |
85 | test_clone_dir ssh://user:password@host:1234/ host |
86 | test_clone_dir ssh://user:passw@rd@host:1234/ host | |
87 | test_clone_dir user@host:/ host | |
88 | test_clone_dir user:password@host:/ host | |
89 | test_clone_dir user:passw@rd@host:/ host | |
d6a31e08 JK |
90 | |
91 | # auth-like material should not be dropped | |
92 | test_clone_dir ssh://host/foo@bar foo@bar | |
93 | test_clone_dir ssh://host/foo@bar.git foo@bar | |
94 | test_clone_dir ssh://user:password@host/foo@bar foo@bar | |
95 | test_clone_dir ssh://user:passw@rd@host/foo@bar.git foo@bar | |
96 | ||
97 | test_clone_dir host:/foo@bar foo@bar | |
98 | test_clone_dir host:/foo@bar.git foo@bar | |
99 | test_clone_dir user:password@host:/foo@bar foo@bar | |
100 | test_clone_dir user:passw@rd@host:/foo@bar.git foo@bar | |
101 | ||
102 | # trailing port-like numbers should not be stripped for paths | |
103 | test_clone_dir ssh://user:password@host/test:1234 1234 | |
104 | test_clone_dir ssh://user:password@host/test:1234.git 1234 | |
105 | ||
106 | test_done |