t / t3426-rebase-submodule.shon commit built-in rebase --autostash: leave the current branch alone if possible (176f5d9)
   1#!/bin/sh
   2
   3test_description='rebase can handle submodules'
   4
   5. ./test-lib.sh
   6. "$TEST_DIRECTORY"/lib-submodule-update.sh
   7. "$TEST_DIRECTORY"/lib-rebase.sh
   8
   9git_rebase () {
  10        git status -su >expect &&
  11        ls -1pR * >>expect &&
  12        git checkout -b ours HEAD &&
  13        echo x >>file1 &&
  14        git add file1 &&
  15        git commit -m add_x &&
  16        git revert HEAD &&
  17        git status -su >actual &&
  18        ls -1pR * >>actual &&
  19        test_cmp expect actual &&
  20        git rebase "$1"
  21}
  22
  23test_submodule_switch "git_rebase"
  24
  25git_rebase_interactive () {
  26        git status -su >expect &&
  27        ls -1pR * >>expect &&
  28        git checkout -b ours HEAD &&
  29        echo x >>file1 &&
  30        git add file1 &&
  31        git commit -m add_x &&
  32        git revert HEAD &&
  33        git status -su >actual &&
  34        ls -1pR * >>actual &&
  35        test_cmp expect actual &&
  36        set_fake_editor &&
  37        echo "fake-editor.sh" >.git/info/exclude &&
  38        git rebase -i "$1"
  39}
  40
  41test_submodule_switch "git_rebase_interactive"
  42
  43test_expect_success 'rebase interactive ignores modified submodules' '
  44        test_when_finished "rm -rf super sub" &&
  45        git init sub &&
  46        git -C sub commit --allow-empty -m "Initial commit" &&
  47        git init super &&
  48        git -C super submodule add ../sub &&
  49        git -C super config submodule.sub.ignore dirty &&
  50        >super/foo &&
  51        git -C super add foo &&
  52        git -C super commit -m "Initial commit" &&
  53        test_commit -C super a &&
  54        test_commit -C super b &&
  55        test_commit -C super/sub c &&
  56        set_fake_editor &&
  57        git -C super rebase -i HEAD^^
  58'
  59
  60test_done