@@ -313,7 +313,7 @@ expect_ssh () {
313
313
314
314
setup_ssh_wrapper
315
315
316
- test_expect_success ' cloning myhost:src uses ssh' '
316
+ test_expect_success ' clone myhost:src uses ssh' '
317
317
git clone myhost:src ssh-clone &&
318
318
expect_ssh myhost src
319
319
'
@@ -329,6 +329,104 @@ test_expect_success 'bracketed hostnames are still ssh' '
329
329
expect_ssh myhost:123 src
330
330
'
331
331
332
+ counter=0
333
+ # $1 url
334
+ # $2 none|host
335
+ # $3 path
336
+ test_clone_url () {
337
+ counter=$(( $counter + 1 ))
338
+ test_might_fail git clone " $1 " tmp$counter &&
339
+ expect_ssh " $2 " " $3 "
340
+ }
341
+
342
+ test_expect_success NOT_MINGW ' clone c:temp is ssl' '
343
+ test_clone_url c:temp c temp
344
+ '
345
+
346
+ test_expect_success MINGW ' clone c:temp is dos drive' '
347
+ test_clone_url c:temp none
348
+ '
349
+
350
+ # ip v4
351
+ for repo in rep rep/home/project /~proj 123
352
+ do
353
+ test_expect_success " clone host:$repo " '
354
+ test_clone_url host:$repo host $repo
355
+ '
356
+ done
357
+
358
+ # ipv6
359
+ # failing
360
+ for repo in /~proj
361
+ do
362
+ test_expect_failure " clone [::1]:$repo " '
363
+ test_clone_url [::1]:$repo ::1 $repo
364
+ '
365
+ done
366
+
367
+ for repo in rep rep/home/project 123
368
+ do
369
+ test_expect_success " clone [::1]:$repo " '
370
+ test_clone_url [::1]:$repo ::1 $repo
371
+ '
372
+ done
373
+
374
+ # Corner cases
375
+ # failing
376
+ for repo in [foo]bar/baz:qux [foo/bar]:baz
377
+ do
378
+ test_expect_failure " clone $url is not ssh" '
379
+ test_clone_url $url none
380
+ '
381
+ done
382
+
383
+ for url in foo/bar:baz
384
+ do
385
+ test_expect_success " clone $url is not ssh" '
386
+ test_clone_url $url none
387
+ '
388
+ done
389
+
390
+ # with ssh:// scheme
391
+ test_expect_success ' clone ssh://host.xz/home/user/repo' '
392
+ test_clone_url "ssh://host.xz/home/user/repo" host.xz "/home/user/repo"
393
+ '
394
+
395
+ # from home directory
396
+ test_expect_success ' clone ssh://host.xz/~repo' '
397
+ test_clone_url "ssh://host.xz/~repo" host.xz "~repo"
398
+ '
399
+
400
+ # with port number
401
+ test_expect_success ' clone ssh://host.xz:22/home/user/repo' '
402
+ test_clone_url "ssh://host.xz:22/home/user/repo" "-p 22 host.xz" "/home/user/repo"
403
+ '
404
+
405
+ # from home directory with port number
406
+ test_expect_success ' clone ssh://host.xz:22/~repo' '
407
+ test_clone_url "ssh://host.xz:22/~repo" "-p 22 host.xz" "~repo"
408
+ '
409
+
410
+ # IPv6
411
+ test_expect_success ' clone ssh://[::1]/home/user/repo' '
412
+ test_clone_url "ssh://[::1]/home/user/repo" "::1" "/home/user/repo"
413
+ '
414
+
415
+ # IPv6 from home directory
416
+ test_expect_success ' clone ssh://[::1]/~repo' '
417
+ test_clone_url "ssh://[::1]/~repo" "::1" "~repo"
418
+ '
419
+
420
+ # IPv6 with port number
421
+ test_expect_success ' clone ssh://[::1]:22/home/user/repo' '
422
+ test_clone_url "ssh://[::1]:22/home/user/repo" "-p 22 ::1" "/home/user/repo"
423
+ '
424
+
425
+ # IPv6 from home directory with port number
426
+ test_expect_success ' clone ssh://[::1]:22/~repo' '
427
+ test_clone_url "ssh://[::1]:22/~repo" "-p 22 ::1" "~repo"
428
+ '
429
+
332
430
test_expect_success ' clone from a repository with two identical branches' '
333
431
334
432
(
0 commit comments