]>
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" && | |
3fa5e0d0 | 14 | GIT_SSH_VARIANT=ssh && |
d6a31e08 | 15 | export GIT_SSH && |
3fa5e0d0 | 16 | export GIT_SSH_VARIANT && |
d6a31e08 JK |
17 | export TRASH_DIRECTORY |
18 | ' | |
19 | ||
20 | # make sure that cloning $1 results in local directory $2 | |
21 | test_clone_dir () { | |
22 | url=$1; shift | |
23 | dir=$1; shift | |
24 | expect=success | |
25 | bare=non-bare | |
26 | clone_opts= | |
27 | for i in "$@" | |
28 | do | |
29 | case "$i" in | |
30 | fail) | |
31 | expect=failure | |
32 | ;; | |
33 | bare) | |
34 | bare=bare | |
35 | clone_opts=--bare | |
36 | ;; | |
37 | esac | |
38 | done | |
39 | test_expect_$expect "clone of $url goes to $dir ($bare)" " | |
40 | rm -rf $dir && | |
41 | git clone $clone_opts $url && | |
42 | test_path_is_dir $dir | |
43 | " | |
44 | } | |
45 | ||
46 | # basic syntax with bare and non-bare variants | |
47 | test_clone_dir host:foo foo | |
48 | test_clone_dir host:foo foo.git bare | |
49 | test_clone_dir host:foo.git foo | |
50 | test_clone_dir host:foo.git foo.git bare | |
51 | test_clone_dir host:foo/.git foo | |
db2e2204 | 52 | test_clone_dir host:foo/.git foo.git bare |
d6a31e08 JK |
53 | |
54 | # similar, but using ssh URL rather than host:path syntax | |
55 | test_clone_dir ssh://host/foo foo | |
56 | test_clone_dir ssh://host/foo foo.git bare | |
57 | test_clone_dir ssh://host/foo.git foo | |
58 | test_clone_dir ssh://host/foo.git foo.git bare | |
59 | test_clone_dir ssh://host/foo/.git foo | |
db2e2204 | 60 | test_clone_dir ssh://host/foo/.git foo.git bare |
d6a31e08 JK |
61 | |
62 | # we should remove trailing slashes and .git suffixes | |
63 | test_clone_dir ssh://host/foo/ foo | |
64 | test_clone_dir ssh://host/foo/// foo | |
65 | test_clone_dir ssh://host/foo/.git/ foo | |
db2e2204 JK |
66 | test_clone_dir ssh://host/foo.git/ foo |
67 | test_clone_dir ssh://host/foo.git/// foo | |
d6a31e08 JK |
68 | test_clone_dir ssh://host/foo///.git/ foo |
69 | test_clone_dir ssh://host/foo/.git/// foo | |
70 | ||
71 | test_clone_dir host:foo/ foo | |
72 | test_clone_dir host:foo/// foo | |
db2e2204 | 73 | test_clone_dir host:foo.git/ foo |
d6a31e08 | 74 | test_clone_dir host:foo/.git/ foo |
db2e2204 | 75 | test_clone_dir host:foo.git/// foo |
d6a31e08 JK |
76 | test_clone_dir host:foo///.git/ foo |
77 | test_clone_dir host:foo/.git/// foo | |
78 | ||
79 | # omitting the path should default to the hostname | |
80 | test_clone_dir ssh://host/ host | |
92722efe | 81 | test_clone_dir ssh://host:1234/ host |
e8959867 | 82 | test_clone_dir ssh://user@host/ host |
92722efe | 83 | test_clone_dir host:/ host |
d6a31e08 JK |
84 | |
85 | # auth materials should be redacted | |
e8959867 | 86 | test_clone_dir ssh://user:password@host/ host |
92722efe PS |
87 | test_clone_dir ssh://user:password@host:1234/ host |
88 | test_clone_dir ssh://user:passw@rd@host:1234/ host | |
89 | test_clone_dir user@host:/ host | |
90 | test_clone_dir user:password@host:/ host | |
91 | test_clone_dir user:passw@rd@host:/ host | |
d6a31e08 JK |
92 | |
93 | # auth-like material should not be dropped | |
94 | test_clone_dir ssh://host/foo@bar foo@bar | |
95 | test_clone_dir ssh://host/foo@bar.git foo@bar | |
96 | test_clone_dir ssh://user:password@host/foo@bar foo@bar | |
97 | test_clone_dir ssh://user:passw@rd@host/foo@bar.git foo@bar | |
98 | ||
99 | test_clone_dir host:/foo@bar foo@bar | |
100 | test_clone_dir host:/foo@bar.git foo@bar | |
101 | test_clone_dir user:password@host:/foo@bar foo@bar | |
102 | test_clone_dir user:passw@rd@host:/foo@bar.git foo@bar | |
103 | ||
104 | # trailing port-like numbers should not be stripped for paths | |
105 | test_clone_dir ssh://user:password@host/test:1234 1234 | |
106 | test_clone_dir ssh://user:password@host/test:1234.git 1234 | |
107 | ||
108 | test_done |