tg.sh: handle help -h
[topgit/pro.git] / t / t4200-out-of-date.sh
blob41e7176a9a304b042d886872dfbc6d577907260a
1 #!/bin/sh
3 test_description='out of date checking
5 TopGit branches can be out-of-date with respect to:
6 1) one or more of their depedencies
7 2) their remote base
8 3) their base
9 4) their remote
11 Check for each of these cases separately with both needs_update and
12 needs_update_check noting that (3) and (4) are never detected by
13 needs_update and may be disabled for needs_update_check.
15 Then check each case again using a higher level branch that has
16 a single dep in one of those states.
18 Annihilated branches should be ignored for the checks. It is possible
19 for an annihilated branch to contain commits not contained by its
20 dependents if it was annihilated when non-empty and before those
21 updates had been merged into the dependent(s) base(s). Check this too.
25 TEST_NO_CREATE_REPO=1
27 . ./test-lib.sh
29 test_plan 59
31 switch_to_ref() {
32 git symbolic-ref HEAD "$1" &&
33 git reset --hard
36 test_expect_success 'setup' '
37 test_create_repo outofdate && cd outofdate &&
38 tg_test_v_getbases topbases &&
39 tg_test_v_getbases topbasesrmt1 rmt1 &&
40 tg_test_create_branches <<-EOT &&
41 movealong nothing to see here
44 t/dep the dep
47 +t/dep a commit on dep
48 :::t/dep
50 hasdep one out-of-date dep
52 t/dep
54 hasbase base is ahead
57 rmt1::hasrmt1 remote base is ahead
60 rmt2::hasrmt2 remote head is ahead
63 +rmt2:hasrmt2 commit on remote head
64 :::rmt2/hasrmt2
65 EOT
66 # have to do the bases by hand
67 switch_to_ref "$topbases/hasbase" &&
68 test_commit "commit on base" &&
69 switch_to_ref "$topbasesrmt1/hasrmt1" &&
70 test_commit "commit on remote base" &&
72 # make an up-to-date copy (kinda icky without using tg update)
73 cd .. && cp -pR outofdate uptodate && cd uptodate &&
74 # make it up-to-date with some -s ours merges
75 switch_to_ref "$topbases/hasdep" &&
76 test_merge "include dep updates" -s ours t/dep &&
77 git checkout -f hasdep &&
78 test_merge "include base changes" -s ours "$topbases/hasdep" &&
79 git checkout -f hasbase &&
80 test_merge "include base changes" -s ours "$topbases/hasbase" &&
81 switch_to_ref "$topbases/hasrmt1" &&
82 test_merge "include remote base changes" -s ours "$topbasesrmt1/hasrmt1" &&
83 git checkout -f hasrmt1 &&
84 test_merge "include base changes" -s ours "$topbases/hasrmt1" &&
85 # this last one is a little bit sticky
86 git checkout --detach "$topbases/hasrmt2" &&
87 test_merge "merge remote head changes onto local base" -s ours rmt2/hasrmt2 &&
88 tomerge="$(git rev-parse --verify HEAD --)" &&
89 git checkout -f hasrmt2 &&
90 test_merge "include remote head changes" -s ours "$tomerge" &&
91 cd .. &&
93 # now make the upper level branches
94 for repo in outofdate uptodate; do
95 tg_test_create_branches -C "$repo" <<-EOT &&
96 uphasdep dep with $repo dep
97 hasdep
99 uphasbase dep with $repo base
100 hasbase
102 uphasrmt1 dep with $repo remote base
103 hasrmt1
105 uphasrmt2 dep with $repo remote head
106 hasrmt2
108 git -C "$repo" checkout -f movealong &&
109 git -C "$repo" clean -d -x -f || return
110 done
113 test_expect_success 'setup more' '
114 test_create_repo more && cd more &&
115 tg_test_v_getbases topbases &&
116 tg_test_create_branches <<-EOT &&
117 dep1 first dep
120 +dep1 commit on first dep
121 :::dep1
123 dep2 second dep
126 dep3 third dep
129 +dep3 commit on third dep
130 :::dep3
132 combined branch with all
133 dep1
134 dep2
135 dep3
137 switch_to_ref "$topbases/combined" &&
138 test_merge "bring base up-to-date" -s ours dep2 dep3 &&
139 git checkout -f combined &&
140 test_merge "bring branch up-to-date" -s ours "$topbases/combined" &&
141 git checkout -f dep2 &&
142 test_commit "make dep2 dirty" &&
143 newc="$(git commit-tree -p dep2 -m "annihilate dep2" "$topbases/dep2"^{tree})" &&
144 git update-ref refs/heads/dep2 $newc dep2 &&
145 git checkout -f --orphan orphan &&
146 git read-tree --empty &&
147 git clean -x -d -f
150 test_expect_success 'setup solitary' '
151 test_create_repo solitary &&
152 tg_test_create_branch -C solitary solitary : &&
153 tg_test_create_branch -C solitary +solitary -m "one solitary commit" :::solitary
156 # branch_needs_update level 1
158 test_expect_success 'branch_needs_update hasdep outofdate' '
159 echo "t/dep hasdep" > expected &&
160 test_must_fail branch_needs_update -C outofdate hasdep > actual &&
161 test_diff expected actual &&
162 test_must_fail branch_needs_update -C outofdate -r rmt1 hasdep > actual &&
163 test_diff expected actual &&
164 test_must_fail branch_needs_update -C outofdate -r rmt2 hasdep > actual &&
165 test_diff expected actual
168 test_expect_success 'branch_needs_update hasdep uptodate' '
169 > expected &&
170 branch_needs_update -C uptodate hasdep > actual &&
171 test_diff expected actual &&
172 branch_needs_update -C uptodate -r rmt1 hasdep > actual &&
173 test_diff expected actual &&
174 branch_needs_update -C uptodate -r rmt2 hasdep > actual &&
175 test_diff expected actual
178 test_expect_success 'branch_needs_update hasbase outofdate' '
179 > expected &&
180 branch_needs_update -C outofdate hasbase > actual &&
181 test_diff expected actual &&
182 branch_needs_update -C outofdate -r rmt1 hasbase > actual &&
183 test_diff expected actual &&
184 branch_needs_update -C outofdate -r rmt2 hasbase > actual &&
185 test_diff expected actual
188 test_expect_success 'branch_needs_update hasbase uptodate' '
189 > expected &&
190 branch_needs_update -C uptodate hasbase > actual &&
191 test_diff expected actual &&
192 branch_needs_update -C uptodate -r rmt1 hasbase > actual &&
193 test_diff expected actual &&
194 branch_needs_update -C uptodate -r rmt2 hasbase > actual &&
195 test_diff expected actual
198 test_expect_success 'branch_needs_update hasrmt1 outofdate' '
199 > expected &&
200 tg_test_v_getbases topbasesrmt1 rmt1 &&
201 echo ":$topbasesrmt1/hasrmt1 hasrmt1" > expected-base &&
202 branch_needs_update -C outofdate hasrmt1 > actual &&
203 test_diff expected actual &&
204 test_must_fail branch_needs_update -C outofdate -r rmt1 hasrmt1 > actual &&
205 test_diff expected-base actual &&
206 branch_needs_update -C outofdate -r rmt2 hasrmt1 > actual &&
207 test_diff expected actual
210 test_expect_success 'branch_needs_update hasrmt1 uptodate' '
211 > expected &&
212 branch_needs_update -C uptodate hasrmt1 > actual &&
213 test_diff expected actual &&
214 branch_needs_update -C uptodate -r rmt1 hasrmt1 > actual &&
215 test_diff expected actual &&
216 branch_needs_update -C uptodate -r rmt2 hasrmt1 > actual &&
217 test_diff expected actual
220 test_expect_success 'branch_needs_update hasrmt2 outofdate' '
221 > expected &&
222 branch_needs_update -C outofdate hasrmt2 > actual &&
223 test_diff expected actual &&
224 branch_needs_update -C outofdate -r rmt1 hasrmt2 > actual &&
225 test_diff expected actual &&
226 branch_needs_update -C outofdate -r rmt2 hasrmt2 > actual &&
227 test_diff expected actual
230 test_expect_success 'branch_needs_update hasrmt2 uptodate' '
231 > expected &&
232 branch_needs_update -C uptodate hasrmt2 > actual &&
233 test_diff expected actual &&
234 branch_needs_update -C uptodate -r rmt1 hasrmt2 > actual &&
235 test_diff expected actual &&
236 branch_needs_update -C uptodate -r rmt2 hasrmt2 > actual &&
237 test_diff expected actual
240 # branch_needs_update level 2
242 test_expect_success 'branch_needs_update uphasdep outofdate' '
243 echo "t/dep hasdep uphasdep" > expected &&
244 test_must_fail branch_needs_update -C outofdate uphasdep > actual &&
245 test_diff expected actual &&
246 test_must_fail branch_needs_update -C outofdate -r rmt1 uphasdep > actual &&
247 test_diff expected actual &&
248 test_must_fail branch_needs_update -C outofdate -r rmt2 uphasdep > actual &&
249 test_diff expected actual
252 test_expect_success 'branch_needs_update uphasdep uptodate' '
253 > expected &&
254 branch_needs_update -C uptodate uphasdep > actual &&
255 test_diff expected actual &&
256 branch_needs_update -C uptodate -r rmt1 uphasdep > actual &&
257 test_diff expected actual &&
258 branch_needs_update -C uptodate -r rmt2 uphasdep > actual &&
259 test_diff expected actual
262 test_expect_success 'branch_needs_update uphasbase outofdate' '
263 echo ": hasbase uphasbase" > expected &&
264 test_must_fail branch_needs_update -C outofdate uphasbase > actual &&
265 test_diff expected actual &&
266 test_must_fail branch_needs_update -C outofdate -r rmt1 uphasbase > actual &&
267 test_diff expected actual &&
268 test_must_fail branch_needs_update -C outofdate -r rmt2 uphasbase > actual &&
269 test_diff expected actual
272 test_expect_success 'branch_needs_update uphasbase uptodate' '
273 > expected &&
274 branch_needs_update -C uptodate uphasbase > actual &&
275 test_diff expected actual &&
276 branch_needs_update -C uptodate -r rmt1 uphasbase > actual &&
277 test_diff expected actual &&
278 branch_needs_update -C uptodate -r rmt2 uphasbase > actual &&
279 test_diff expected actual
282 test_expect_success 'branch_needs_update uphasrmt1 outofdate' '
283 > expected &&
284 tg_test_v_getbases topbasesrmt1 rmt1 &&
285 echo ":$topbasesrmt1/hasrmt1 hasrmt1 uphasrmt1" > expected-base &&
286 branch_needs_update -C outofdate uphasrmt1 > actual &&
287 test_diff expected actual &&
288 test_must_fail branch_needs_update -C outofdate -r rmt1 uphasrmt1 > actual &&
289 test_diff expected-base actual &&
290 branch_needs_update -C outofdate -r rmt2 uphasrmt1 > actual &&
291 test_diff expected actual
294 test_expect_success 'branch_needs_update uphasrmt1 uptodate' '
295 > expected &&
296 branch_needs_update -C uptodate uphasrmt1 > actual &&
297 test_diff expected actual &&
298 branch_needs_update -C uptodate -r rmt1 uphasrmt1 > actual &&
299 test_diff expected actual &&
300 branch_needs_update -C uptodate -r rmt2 uphasrmt1 > actual &&
301 test_diff expected actual
304 test_expect_success 'branch_needs_update uphasrmt2 outofdate' '
305 > expected &&
306 echo ":refs/remotes/rmt2/hasrmt2 hasrmt2 uphasrmt2" > expected-remote &&
307 branch_needs_update -C outofdate uphasrmt2 > actual &&
308 test_diff expected actual &&
309 branch_needs_update -C outofdate -r rmt1 uphasrmt2 > actual &&
310 test_diff expected actual &&
311 test_must_fail branch_needs_update -C outofdate -r rmt2 uphasrmt2 > actual &&
312 test_diff expected-remote actual
315 test_expect_success 'branch_needs_update uphasrmt2 uptodate' '
316 > expected &&
317 branch_needs_update -C uptodate uphasrmt2 > actual &&
318 test_diff expected actual &&
319 branch_needs_update -C uptodate -r rmt1 uphasrmt2 > actual &&
320 test_diff expected actual &&
321 branch_needs_update -C uptodate -r rmt2 uphasrmt2 > actual &&
322 test_diff expected actual
325 # needs_update_check level 1
327 test_expect_success 'needs_update_check hasdep outofdate' '
328 printf "%s\n" "t/dep hasdep" "hasdep" "t/dep" ":" >expected &&
329 needs_update_check -C outofdate hasdep > actual &&
330 test_diff expected actual &&
331 needs_update_check -C outofdate -r rmt1 hasdep > actual &&
332 test_diff expected actual &&
333 needs_update_check -C outofdate -r rmt2 hasdep > actual &&
334 test_diff expected actual
337 test_expect_success 'needs_update_check --no-self hasdep outofdate' '
338 printf "%s\n" "t/dep hasdep" "hasdep" "t/dep" ":" >expected &&
339 needs_update_check -C outofdate --no-self hasdep > actual &&
340 test_diff expected actual &&
341 needs_update_check -C outofdate --no-self -r rmt1 hasdep > actual &&
342 test_diff expected actual &&
343 needs_update_check -C outofdate --no-self -r rmt2 hasdep > actual &&
344 test_diff expected actual
347 test_expect_success 'needs_update_check hasdep uptodate' '
348 printf "%s\n" "t/dep hasdep" ":" ":" ":" >expected &&
349 needs_update_check -C uptodate hasdep > actual &&
350 test_diff expected actual &&
351 needs_update_check -C uptodate -r rmt1 hasdep > actual &&
352 test_diff expected actual &&
353 needs_update_check -C uptodate -r rmt2 hasdep > actual &&
354 test_diff expected actual
357 test_expect_success 'needs_update_check hasbase outofdate' '
358 printf "%s\n" "hasbase" "hasbase" ":" ":" >expected &&
359 needs_update_check -C outofdate hasbase > actual &&
360 test_diff expected actual &&
361 needs_update_check -C outofdate -r rmt1 hasbase > actual &&
362 test_diff expected actual &&
363 needs_update_check -C outofdate -r rmt2 hasbase > actual &&
364 test_diff expected actual
367 test_expect_success 'needs_update_check --no-self hasbase outofdate' '
368 printf "%s\n" "hasbase" ":" ":" ":" >expected &&
369 needs_update_check -C outofdate --no-self hasbase > actual &&
370 test_diff expected actual &&
371 needs_update_check -C outofdate --no-self -r rmt1 hasbase > actual &&
372 test_diff expected actual &&
373 needs_update_check -C outofdate --no-self -r rmt2 hasbase > actual &&
374 test_diff expected actual
377 test_expect_success 'needs_update_check hasbase uptodate' '
378 printf "%s\n" "hasbase" ":" ":" ":" >expected &&
379 needs_update_check -C uptodate hasbase > actual &&
380 test_diff expected actual &&
381 needs_update_check -C uptodate -r rmt1 hasbase > actual &&
382 test_diff expected actual &&
383 needs_update_check -C uptodate -r rmt2 hasbase > actual &&
384 test_diff expected actual
387 test_expect_success 'needs_update_check hasrmt1 outofdate' '
388 printf "%s\n" "hasrmt1" ":" ":" ":" >expected &&
389 printf "%s\n" "hasrmt1" "hasrmt1" ":" ":" >expected-remote &&
390 needs_update_check -C outofdate hasrmt1 > actual &&
391 test_diff expected actual &&
392 needs_update_check -C outofdate -r rmt1 hasrmt1 > actual &&
393 test_diff expected-remote actual &&
394 needs_update_check -C outofdate -r rmt2 hasrmt1 > actual &&
395 test_diff expected actual
398 test_expect_success 'needs_update_check --no-self hasrmt1 outofdate' '
399 printf "%s\n" "hasrmt1" ":" ":" ":" >expected &&
400 needs_update_check -C outofdate --no-self hasrmt1 > actual &&
401 test_diff expected actual &&
402 needs_update_check -C outofdate --no-self -r rmt1 hasrmt1 > actual &&
403 test_diff expected actual &&
404 needs_update_check -C outofdate --no-self -r rmt2 hasrmt1 > actual &&
405 test_diff expected actual
408 test_expect_success 'needs_update_check hasrmt1 uptodate' '
409 printf "%s\n" "hasrmt1" ":" ":" ":" >expected &&
410 needs_update_check -C uptodate hasrmt1 > actual &&
411 test_diff expected actual &&
412 needs_update_check -C uptodate -r rmt1 hasrmt1 > actual &&
413 test_diff expected actual &&
414 needs_update_check -C uptodate -r rmt2 hasrmt1 > actual &&
415 test_diff expected actual
418 test_expect_success 'needs_update_check hasrmt2 outofdate' '
419 printf "%s\n" "hasrmt2" ":" ":" ":" >expected &&
420 printf "%s\n" "hasrmt2" "hasrmt2" ":" ":" >expected-remote &&
421 needs_update_check -C outofdate hasrmt2 > actual &&
422 test_diff expected actual &&
423 needs_update_check -C outofdate -r rmt1 hasrmt2 > actual &&
424 test_diff expected actual &&
425 needs_update_check -C outofdate -r rmt2 hasrmt2 > actual &&
426 test_diff expected-remote actual
429 test_expect_success 'needs_update_check --no-self hasrmt2 outofdate' '
430 printf "%s\n" "hasrmt2" ":" ":" ":" >expected &&
431 needs_update_check -C outofdate --no-self hasrmt2 > actual &&
432 test_diff expected actual &&
433 needs_update_check -C outofdate --no-self -r rmt1 hasrmt2 > actual &&
434 test_diff expected actual &&
435 needs_update_check -C outofdate --no-self -r rmt2 hasrmt2 > actual &&
436 test_diff expected actual
439 test_expect_success 'needs_update_check hasrmt2 uptodate' '
440 printf "%s\n" "hasrmt2" ":" ":" ":" >expected &&
441 needs_update_check -C uptodate hasrmt2 > actual &&
442 test_diff expected actual &&
443 needs_update_check -C uptodate -r rmt1 hasrmt2 > actual &&
444 test_diff expected actual &&
445 needs_update_check -C uptodate -r rmt2 hasrmt2 > actual &&
446 test_diff expected actual
449 # needs_update_check level 2
451 test_expect_success 'needs_update_check uphasdep outofdate' '
452 printf "%s\n" "t/dep hasdep uphasdep" "hasdep uphasdep" "t/dep" ":" >expected &&
453 needs_update_check -C outofdate uphasdep > actual &&
454 test_diff expected actual &&
455 needs_update_check -C outofdate -r rmt1 uphasdep > actual &&
456 test_diff expected actual &&
457 needs_update_check -C outofdate -r rmt2 uphasdep > actual &&
458 test_diff expected actual
461 test_expect_success 'needs_update_check --no-self uphasdep outofdate' '
462 printf "%s\n" "t/dep hasdep uphasdep" "hasdep uphasdep" "t/dep" ":" >expected &&
463 needs_update_check -C outofdate --no-self uphasdep > actual &&
464 test_diff expected actual &&
465 needs_update_check -C outofdate --no-self -r rmt1 uphasdep > actual &&
466 test_diff expected actual &&
467 needs_update_check -C outofdate --no-self -r rmt2 uphasdep > actual &&
468 test_diff expected actual
471 test_expect_success 'needs_update_check --no-same uphasdep outofdate' '
472 printf "%s\n" "t/dep hasdep uphasdep" "hasdep uphasdep" "t/dep" ":" >expected &&
473 needs_update_check -C outofdate --no-same uphasdep > actual &&
474 test_diff expected actual &&
475 needs_update_check -C outofdate --no-same -r rmt1 uphasdep > actual &&
476 test_diff expected actual &&
477 needs_update_check -C outofdate --no-same -r rmt2 uphasdep > actual &&
478 test_diff expected actual
481 test_expect_success 'needs_update_check uphasdep uptodate' '
482 printf "%s\n" "t/dep hasdep uphasdep" ":" ":" ":" >expected &&
483 needs_update_check -C uptodate uphasdep > actual &&
484 test_diff expected actual &&
485 needs_update_check -C uptodate -r rmt1 uphasdep > actual &&
486 test_diff expected actual &&
487 needs_update_check -C uptodate -r rmt2 uphasdep > actual &&
488 test_diff expected actual
491 test_expect_success 'needs_update_check uphasbase outofdate' '
492 printf "%s\n" "hasbase uphasbase" "hasbase uphasbase" ":" ":" >expected &&
493 needs_update_check -C outofdate uphasbase > actual &&
494 test_diff expected actual &&
495 needs_update_check -C outofdate -r rmt1 uphasbase > actual &&
496 test_diff expected actual &&
497 needs_update_check -C outofdate -r rmt2 uphasbase > actual &&
498 test_diff expected actual
501 test_expect_success 'needs_update_check --no-self uphasbase outofdate' '
502 printf "%s\n" "hasbase uphasbase" "hasbase uphasbase" ":" ":" >expected &&
503 needs_update_check -C outofdate --no-self uphasbase > actual &&
504 test_diff expected actual &&
505 needs_update_check -C outofdate --no-self -r rmt1 uphasbase > actual &&
506 test_diff expected actual &&
507 needs_update_check -C outofdate --no-self -r rmt2 uphasbase > actual &&
508 test_diff expected actual
511 test_expect_success 'needs_update_check --no-same uphasbase outofdate' '
512 printf "%s\n" "hasbase uphasbase" "uphasbase" ":" ":" >expected &&
513 needs_update_check -C outofdate --no-same uphasbase > actual &&
514 test_diff expected actual &&
515 needs_update_check -C outofdate --no-same -r rmt1 uphasbase > actual &&
516 test_diff expected actual &&
517 needs_update_check -C outofdate --no-same -r rmt2 uphasbase > actual &&
518 test_diff expected actual
521 test_expect_success 'needs_update_check uphasbase uptodate' '
522 printf "%s\n" "hasbase uphasbase" ":" ":" ":" >expected &&
523 needs_update_check -C uptodate uphasbase > actual &&
524 test_diff expected actual &&
525 needs_update_check -C uptodate -r rmt1 uphasbase > actual &&
526 test_diff expected actual &&
527 needs_update_check -C uptodate -r rmt2 uphasbase > actual &&
528 test_diff expected actual
531 test_expect_success 'needs_update_check uphasrmt1 outofdate' '
532 printf "%s\n" "hasrmt1 uphasrmt1" ":" ":" ":" >expected &&
533 printf "%s\n" "hasrmt1 uphasrmt1" "hasrmt1 uphasrmt1" ":" ":" >expected-remote &&
534 needs_update_check -C outofdate uphasrmt1 > actual &&
535 test_diff expected actual &&
536 needs_update_check -C outofdate -r rmt1 uphasrmt1 > actual &&
537 test_diff expected-remote actual &&
538 needs_update_check -C outofdate -r rmt2 uphasrmt1 > actual &&
539 test_diff expected actual
542 test_expect_success 'needs_update_check --no-self uphasrmt1 outofdate' '
543 printf "%s\n" "hasrmt1 uphasrmt1" ":" ":" ":" >expected &&
544 printf "%s\n" "hasrmt1 uphasrmt1" "hasrmt1 uphasrmt1" ":" ":" >expected-remote &&
545 needs_update_check -C outofdate --no-self uphasrmt1 > actual &&
546 test_diff expected actual &&
547 needs_update_check -C outofdate --no-self -r rmt1 uphasrmt1 > actual &&
548 test_diff expected-remote actual &&
549 needs_update_check -C outofdate --no-self -r rmt2 uphasrmt1 > actual &&
550 test_diff expected actual
553 test_expect_success 'needs_update_check --no-same uphasrmt1 outofdate' '
554 printf "%s\n" "hasrmt1 uphasrmt1" ":" ":" ":" >expected &&
555 printf "%s\n" "hasrmt1 uphasrmt1" "uphasrmt1" ":" ":" >expected-remote &&
556 needs_update_check -C outofdate --no-same uphasrmt1 > actual &&
557 test_diff expected actual &&
558 needs_update_check -C outofdate --no-same -r rmt1 uphasrmt1 > actual &&
559 test_diff expected-remote actual &&
560 needs_update_check -C outofdate --no-same -r rmt2 uphasrmt1 > actual &&
561 test_diff expected actual
564 test_expect_success 'needs_update_check uphasrmt1 uptodate' '
565 printf "%s\n" "hasrmt1 uphasrmt1" ":" ":" ":" >expected &&
566 needs_update_check -C uptodate uphasrmt1 > actual &&
567 test_diff expected actual &&
568 needs_update_check -C uptodate -r rmt1 uphasrmt1 > actual &&
569 test_diff expected actual &&
570 needs_update_check -C uptodate -r rmt2 uphasrmt1 > actual &&
571 test_diff expected actual
574 test_expect_success 'needs_update_check uphasrmt2 outofdate' '
575 printf "%s\n" "hasrmt2 uphasrmt2" ":" ":" ":" >expected &&
576 printf "%s\n" "hasrmt2 uphasrmt2" "hasrmt2 uphasrmt2" ":" ":" >expected-remote &&
577 needs_update_check -C outofdate uphasrmt2 > actual &&
578 test_diff expected actual &&
579 needs_update_check -C outofdate -r rmt1 uphasrmt2 > actual &&
580 test_diff expected actual &&
581 needs_update_check -C outofdate -r rmt2 uphasrmt2 > actual &&
582 test_diff expected-remote actual
585 test_expect_success 'needs_update_check --no-self uphasrmt2 outofdate' '
586 printf "%s\n" "hasrmt2 uphasrmt2" ":" ":" ":" >expected &&
587 printf "%s\n" "hasrmt2 uphasrmt2" "hasrmt2 uphasrmt2" ":" ":" >expected-remote &&
588 needs_update_check -C outofdate --no-self uphasrmt2 > actual &&
589 test_diff expected actual &&
590 needs_update_check -C outofdate --no-self -r rmt1 uphasrmt2 > actual &&
591 test_diff expected actual &&
592 needs_update_check -C outofdate --no-self -r rmt2 uphasrmt2 > actual &&
593 test_diff expected-remote actual
596 test_expect_success 'needs_update_check --no-same uphasrmt2 outofdate' '
597 printf "%s\n" "hasrmt2 uphasrmt2" ":" ":" ":" >expected &&
598 printf "%s\n" "hasrmt2 uphasrmt2" "uphasrmt2" ":" ":" >expected-remote &&
599 needs_update_check -C outofdate --no-same uphasrmt2 > actual &&
600 test_diff expected actual &&
601 needs_update_check -C outofdate --no-same -r rmt1 uphasrmt2 > actual &&
602 test_diff expected actual &&
603 needs_update_check -C outofdate --no-same -r rmt2 uphasrmt2 > actual &&
604 test_diff expected-remote actual
607 test_expect_success 'needs_update_check uphasrmt2 uptodate' '
608 printf "%s\n" "hasrmt2 uphasrmt2" ":" ":" ":" >expected &&
609 needs_update_check -C uptodate uphasrmt2 > actual &&
610 test_diff expected actual &&
611 needs_update_check -C uptodate -r rmt1 uphasrmt2 > actual &&
612 test_diff expected actual &&
613 needs_update_check -C uptodate -r rmt2 uphasrmt2 > actual &&
614 test_diff expected actual
617 # annihilated branch checks
619 test_expect_success 'branch_needs_update more combined' '
620 > expected &&
621 branch_needs_update -C more combined > actual &&
622 test_diff expected actual
625 test_expect_success 'needs_update_check more combined' '
626 printf "%s\n" "dep1 dep2 dep3 combined" ":" ":" ":" >expected &&
627 needs_update_check -C more combined > actual &&
628 test_diff expected actual
631 # solitary branch checks
633 test_expect_success 'branch_needs_update solitary' '
634 > expected &&
635 branch_needs_update -C solitary solitary > actual &&
636 test_diff expected actual
639 test_expect_success 'needs_update_check solitary' '
640 printf "%s\n" "solitary" ":" ":" ":" >expected &&
641 needs_update_check -C solitary solitary > actual &&
642 test_diff expected actual
645 # check summary after checking the machinery itself
647 squish() {
648 tab=" " # single tab in there
649 tr -s "$tab" " "
652 printf "%s" "\
653 B hasbase [PATCH] base is ahead
654 0 D hasdep [PATCH] one out-of-date dep
655 0 hasrmt1 [PATCH] remote base is ahead
656 0 hasrmt2 [PATCH] remote head is ahead
657 >0 movealong [PATCH] nothing to see here
658 * t/dep [PATCH] the dep
659 0 D uphasbase [PATCH] dep with outofdate base
660 0 D uphasdep [PATCH] dep with outofdate dep
661 0 uphasrmt1 [PATCH] dep with outofdate remote base
662 0 uphasrmt2 [PATCH] dep with outofdate remote head
663 " > outofdate_summary.raw ||
664 die failed to make outofdate_summary.raw
665 < outofdate_summary.raw squish > outofdate_summary ||
666 die failed to make outofdate_summary
668 printf "%s" "\
669 l B hasbase [PATCH] base is ahead
670 0l D hasdep [PATCH] one out-of-date dep
671 0rR hasrmt1 [PATCH] remote base is ahead
672 0l hasrmt2 [PATCH] remote head is ahead
673 >0l movealong [PATCH] nothing to see here
674 l * t/dep [PATCH] the dep
675 0l D uphasbase [PATCH] dep with outofdate base
676 0l D uphasdep [PATCH] dep with outofdate dep
677 0l D uphasrmt1 [PATCH] dep with outofdate remote base
678 0l uphasrmt2 [PATCH] dep with outofdate remote head
679 " > outofdate_summary_rmt1.raw ||
680 die failed to make outofdate_summary_rmt1.raw
681 < outofdate_summary_rmt1.raw squish > outofdate_summary_rmt1 ||
682 die failed to make outofdate_summary_rmt1
684 printf "%s" "\
685 l B hasbase [PATCH] base is ahead
686 0l D hasdep [PATCH] one out-of-date dep
687 0l hasrmt1 [PATCH] remote base is ahead
688 0rR hasrmt2 [PATCH] remote head is ahead
689 >0l movealong [PATCH] nothing to see here
690 l * t/dep [PATCH] the dep
691 0l D uphasbase [PATCH] dep with outofdate base
692 0l D uphasdep [PATCH] dep with outofdate dep
693 0l uphasrmt1 [PATCH] dep with outofdate remote base
694 0l D uphasrmt2 [PATCH] dep with outofdate remote head
695 " > outofdate_summary_rmt2.raw ||
696 die failed to make outofdate_summary_rmt2.raw
697 < outofdate_summary_rmt2.raw squish > outofdate_summary_rmt2 ||
698 die failed to make outofdate_summary_rmt2
700 printf "%s" "\
701 hasbase [PATCH] base is ahead
702 0 hasdep [PATCH] one out-of-date dep
703 0 hasrmt1 [PATCH] remote base is ahead
704 0 hasrmt2 [PATCH] remote head is ahead
705 >0 movealong [PATCH] nothing to see here
706 t/dep [PATCH] the dep
707 0 uphasbase [PATCH] dep with uptodate base
708 0 uphasdep [PATCH] dep with uptodate dep
709 0 uphasrmt1 [PATCH] dep with uptodate remote base
710 0 uphasrmt2 [PATCH] dep with uptodate remote head
711 " > uptodate_summary.raw ||
712 die failed to make uptodate_summary.raw
713 < uptodate_summary.raw squish > uptodate_summary ||
714 die failed to make uptodate_summary
716 printf "%s" "\
717 l hasbase [PATCH] base is ahead
718 0l hasdep [PATCH] one out-of-date dep
719 0rL hasrmt1 [PATCH] remote base is ahead
720 0l hasrmt2 [PATCH] remote head is ahead
721 >0l movealong [PATCH] nothing to see here
722 l t/dep [PATCH] the dep
723 0l uphasbase [PATCH] dep with uptodate base
724 0l uphasdep [PATCH] dep with uptodate dep
725 0l uphasrmt1 [PATCH] dep with uptodate remote base
726 0l uphasrmt2 [PATCH] dep with uptodate remote head
727 " > uptodate_summary_rmt1.raw ||
728 die failed to make uptodate_summary_rmt1.raw
729 < uptodate_summary_rmt1.raw squish > uptodate_summary_rmt1 ||
730 die failed to make uptodate_summary_rmt1
732 printf "%s" "\
733 l hasbase [PATCH] base is ahead
734 0l hasdep [PATCH] one out-of-date dep
735 0l hasrmt1 [PATCH] remote base is ahead
736 0rL hasrmt2 [PATCH] remote head is ahead
737 >0l movealong [PATCH] nothing to see here
738 l t/dep [PATCH] the dep
739 0l uphasbase [PATCH] dep with uptodate base
740 0l uphasdep [PATCH] dep with uptodate dep
741 0l uphasrmt1 [PATCH] dep with uptodate remote base
742 0l uphasrmt2 [PATCH] dep with uptodate remote head
743 " > uptodate_summary_rmt2.raw ||
744 die failed to make uptodate_summary_rmt2.raw
745 < uptodate_summary_rmt2.raw squish > uptodate_summary_rmt2 ||
746 die failed to make uptodate_summary_rmt2
748 printf "%s" "\
749 0 combined [PATCH] branch with all
750 dep1 [PATCH] first dep
751 dep3 [PATCH] third dep
752 " > more_summary.raw ||
753 die failed to make more_summary.raw
754 < more_summary.raw squish > more_summary ||
755 die failed to make more_summary
757 printf "%s" "\
758 solitary [PATCH] branch solitary
759 " > solitary_summary.raw ||
760 die failed to make solitary_summary.raw
761 < solitary_summary.raw squish > solitary_summary ||
762 die failed to make solitary_summary
764 test_expect_success 'summary outofdate' '
765 tg -C outofdate summary > actual.raw &&
766 <actual.raw squish >actual &&
767 test_diff outofdate_summary actual
770 test_expect_success 'summary outofdate rmt1' '
771 tg -C outofdate -r rmt1 summary > actual.raw &&
772 <actual.raw squish >actual &&
773 test_diff outofdate_summary_rmt1 actual
776 test_expect_success 'summary outofdate rmt2' '
777 tg -C outofdate -r rmt2 summary > actual.raw &&
778 <actual.raw squish >actual &&
779 test_diff outofdate_summary_rmt2 actual
782 test_expect_success 'summary uptodate' '
783 tg -C uptodate summary > actual.raw &&
784 <actual.raw squish >actual &&
785 test_diff uptodate_summary actual
788 test_expect_success 'summary uptodate rmt1' '
789 tg -C uptodate -r rmt1 summary > actual.raw &&
790 <actual.raw squish >actual &&
791 test_diff uptodate_summary_rmt1 actual
794 test_expect_success 'summary uptodate rmt2' '
795 tg -C uptodate -r rmt2 summary > actual.raw &&
796 <actual.raw squish >actual &&
797 test_diff uptodate_summary_rmt2 actual
800 test_expect_success 'more summary' '
801 tg -C more summary > actual.raw &&
802 <actual.raw squish >actual &&
803 test_diff more_summary actual
806 test_expect_success 'solitary summary' '
807 tg -C solitary summary > actual.raw &&
808 <actual.raw squish >actual &&
809 test_diff solitary_summary actual
812 test_done