3 test_description
='tg -r and -u do the right thing
5 These are a bit tricky to test, but the `tg info` command will show a
6 "Remote Mate:" line if a matching remote is present so we check for that.
8 We do also check use of topgit.remote directly here as well and whether
9 it is set properly by `tg remote`.
18 test_expect_success
'test setup' '
19 test_create_repo mt-remote &&
20 test_create_repo remote &&
21 test_create_repo noremote &&
22 (cd remote && test_commit initial && >.topmsg && >.topdeps && git add -A && test_commit second) &&
23 (cd noremote && test_commit initial && >.topmsg && >.topdeps && git add -A && test_commit second) &&
24 git -C remote update-ref refs/heads/t/branch master &&
25 git -C remote update-ref refs/heads/{top-bases}/t/branch initial &&
26 git -C remote update-ref refs/remotes/origin/t/branch master &&
27 git -C remote update-ref refs/remotes/origin/{top-bases}/t/branch initial &&
28 git -C noremote update-ref refs/heads/t/branch master &&
29 git -C noremote update-ref refs/heads/{top-bases}/t/branch initial &&
30 git -C remote rev-parse --verify t/branch >/dev/null &&
31 git -C remote rev-parse --verify {top-bases}/t/branch >/dev/null &&
32 git -C remote rev-parse --verify remotes/origin/t/branch >/dev/null &&
33 git -C remote rev-parse --verify remotes/origin/{top-bases}/t/branch >/dev/null &&
34 git -C noremote rev-parse --verify t/branch >/dev/null &&
35 git -C noremote rev-parse --verify {top-bases}/t/branch >/dev/null &&
36 git -C mt-remote config remote.upstream.url . &&
37 git -C mt-remote config remote.downstream.url . &&
38 test "$(cd mt-remote && git config remote.upstream.url)" = "." &&
39 test "$(cd mt-remote && git config remote.downstream.url)" = "."
42 # remote_info <dir> [<options>]
44 ri
="$(tg -C "$@
" info t/branch | grep "^Remote Mate
:")" ||
:
45 ri
="${ri#Remote Mate: }"
47 [ -z "$ri" ] ||
echo "$ri"
50 test_expect_success
'no remote if no remotes' '
51 test "$(remote_info noremote)" = "" &&
52 test "$(remote_info noremote -r origin)" = "" &&
53 test "$(remote_info noremote -r nosuch)" = "" &&
54 test "$(remote_info noremote -c topgit.remote=origin)" = "" &&
55 test "$(remote_info noremote -c topgit.remote=nosuch)" = ""
58 test_expect_success
'no remote without topgit.remote' '
59 test "$(remote_info remote)" = "" &&
60 test "$(remote_info remote -r origin -u)" = "" &&
61 test "$(remote_info remote -u -c topgit.remote=origin)" = ""
64 test_expect_success
'remote mate with topgit.remote' '
65 test "$(remote_info remote -r bad -r origin)" = "origin" &&
66 test "$(remote_info remote -c topgit.remote=nosuch -c topgit.remote=origin)" = "origin" &&
67 test "$(remote_info remote -r origin -c topgit.remote=nosuch -c topgit.remote=other)" = "origin"
70 test_expect_success
'using -u overrides configed topgit.remote' '
71 git -C remote config topgit.remote origin &&
72 test "$(cd remote && git config topgit.remote)" = "origin" &&
73 test "$(remote_info remote)" = "origin" &&
74 test "$(remote_info remote -u)" = ""
77 test_expect_success
'tg remote non-populating does not set topgit.remote' '
78 tg -C mt-remote remote upstream &&
79 test "$(git -C mt-remote config --get topgit.remote)" = "" &&
80 tg -C mt-remote remote downstream &&
81 test "$(git -C mt-remote config --get topgit.remote)" = ""
84 test_expect_success
'tg remote --populate sets and changes topgit.remote' '
85 tg -C mt-remote remote --populate upstream &&
86 test "$(git -C mt-remote config --get topgit.remote)" = "upstream" &&
87 tg -C mt-remote remote --populate downstream &&
88 test "$(git -C mt-remote config --get topgit.remote)" = "downstream"
91 test_expect_success
'tg remote --populate with bad remote leaves topgit.remote unchanged' '
92 test_must_fail tg -C mt-remote remote --populate nosuch >/dev/null 2>&1 &&
93 test "$(git -C mt-remote config --get topgit.remote)" = "downstream"