@@ -49,4 +49,62 @@ test_expect_success 'ls-remote self' '
49
49
50
50
'
51
51
52
+ test_expect_success ' dies when no remote specified and no default remotes found' '
53
+
54
+ test_must_fail git ls-remote
55
+
56
+ '
57
+
58
+ test_expect_success ' use "origin" when no remote specified' '
59
+
60
+ git remote add origin "$(pwd)/.git" &&
61
+ git ls-remote >actual &&
62
+ test_cmp expected.all actual
63
+
64
+ '
65
+
66
+ test_expect_success ' use branch.<name>.remote if possible' '
67
+
68
+ #
69
+ # Test that we are indeed using branch.<name>.remote, not "origin", even
70
+ # though the "origin" remote has been set.
71
+ #
72
+
73
+ # setup a new remote to differentiate from "origin"
74
+ git clone . other.git &&
75
+ (
76
+ cd other.git &&
77
+ echo "$(git rev-parse HEAD) HEAD"
78
+ git show-ref | sed -e "s/ / /"
79
+ ) >exp &&
80
+
81
+ git remote add other other.git &&
82
+ git config branch.master.remote other &&
83
+
84
+ git ls-remote >actual &&
85
+ test_cmp exp actual
86
+
87
+ '
88
+
89
+ cat > exp << EOF
90
+ fatal: 'refs*master' does not appear to be a git repository
91
+ fatal: The remote end hung up unexpectedly
92
+ EOF
93
+ test_expect_success ' confuses pattern as remote when no remote specified' '
94
+ #
95
+ # Do not expect "git ls-remote <pattern>" to work; ls-remote, correctly,
96
+ # confuses <pattern> for <remote>. Although ugly, this behaviour is akin
97
+ # to the confusion of refspecs for remotes by git-fetch and git-push,
98
+ # eg:
99
+ #
100
+ # $ git fetch branch
101
+ #
102
+
103
+ # We could just as easily have used "master"; the "*" emphasizes its
104
+ # role as a pattern.
105
+ test_must_fail git ls-remote refs*master >actual 2>&1 &&
106
+ test_cmp exp actual
107
+
108
+ '
109
+
52
110
test_done
0 commit comments