t / t3421-rebase-topology-linear.shon commit add simple tests of consistency across rebase types (2aad7ca)
   1#!/bin/sh
   2
   3test_description='basic rebase topology tests'
   4. ./test-lib.sh
   5. "$TEST_DIRECTORY"/lib-rebase.sh
   6
   7# a---b---c
   8#      \
   9#       d---e
  10test_expect_success 'setup' '
  11        test_commit a &&
  12        test_commit b &&
  13        test_commit c &&
  14        git checkout b &&
  15        test_commit d &&
  16        test_commit e
  17'
  18
  19test_run_rebase () {
  20        result=$1
  21        shift
  22        test_expect_$result "simple rebase $*" "
  23                reset_rebase &&
  24                git rebase $* c e &&
  25                test_cmp_rev c HEAD~2 &&
  26                test_linear_range 'd e' c..
  27        "
  28}
  29test_run_rebase success ''
  30test_run_rebase success -m
  31test_run_rebase success -i
  32test_run_rebase success -p
  33
  34test_run_rebase () {
  35        result=$1
  36        shift
  37        test_expect_$result "rebase $* is no-op if upstream is an ancestor" "
  38                reset_rebase &&
  39                git rebase $* b e &&
  40                test_cmp_rev e HEAD
  41        "
  42}
  43test_run_rebase success ''
  44test_run_rebase success -m
  45test_run_rebase success -i
  46test_run_rebase success -p
  47
  48test_run_rebase () {
  49        result=$1
  50        shift
  51        test_expect_$result "rebase $* -f rewrites even if upstream is an ancestor" "
  52                reset_rebase &&
  53                git rebase $* -f b e &&
  54                ! test_cmp_rev e HEAD &&
  55                test_cmp_rev b HEAD~2 &&
  56                test_linear_range 'd e' b..
  57        "
  58}
  59test_run_rebase success ''
  60test_run_rebase success -m
  61test_run_rebase success -i
  62test_run_rebase failure -p
  63
  64test_run_rebase () {
  65        result=$1
  66        shift
  67        test_expect_$result "rebase $* fast-forwards from ancestor of upstream" "
  68                reset_rebase &&
  69                git rebase $* e b &&
  70                test_cmp_rev e HEAD
  71        "
  72}
  73test_run_rebase success ''
  74test_run_rebase success -m
  75test_run_rebase success -i
  76test_run_rebase success -p
  77
  78test_done