t / t2013-checkout-submodule.shon commit Merge branch 'gp/describe-match-uses-glob-pattern' (3ae5d50)
   1#!/bin/sh
   2
   3test_description='checkout can handle submodules'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8        mkdir submodule &&
   9        (cd submodule &&
  10         git init &&
  11         test_commit first) &&
  12        git add submodule &&
  13        test_tick &&
  14        git commit -m superproject &&
  15        (cd submodule &&
  16         test_commit second) &&
  17        git add submodule &&
  18        test_tick &&
  19        git commit -m updated.superproject
  20'
  21
  22test_expect_success '"reset <submodule>" updates the index' '
  23        git update-index --refresh &&
  24        git diff-files --quiet &&
  25        git diff-index --quiet --cached HEAD &&
  26        git reset HEAD^ submodule &&
  27        test_must_fail git diff-files --quiet &&
  28        git reset submodule &&
  29        git diff-files --quiet
  30'
  31
  32test_expect_success '"checkout <submodule>" updates the index only' '
  33        git update-index --refresh &&
  34        git diff-files --quiet &&
  35        git diff-index --quiet --cached HEAD &&
  36        git checkout HEAD^ submodule &&
  37        test_must_fail git diff-files --quiet &&
  38        git checkout HEAD submodule &&
  39        git diff-files --quiet
  40'
  41
  42test_expect_success '"checkout <submodule>" honors diff.ignoreSubmodules' '
  43        git config diff.ignoreSubmodules dirty &&
  44        echo x> submodule/untracked &&
  45        git checkout HEAD >actual 2>&1 &&
  46        ! test -s actual
  47'
  48
  49test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .gitmodules' '
  50        git config diff.ignoreSubmodules none &&
  51        git config -f .gitmodules submodule.submodule.path submodule &&
  52        git config -f .gitmodules submodule.submodule.ignore untracked &&
  53        git checkout HEAD >actual 2>&1 &&
  54        ! test -s actual
  55'
  56
  57test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/config' '
  58        git config -f .gitmodules submodule.submodule.ignore none &&
  59        git config submodule.submodule.path submodule &&
  60        git config submodule.submodule.ignore all &&
  61        git checkout HEAD >actual 2>&1 &&
  62        ! test -s actual
  63'
  64
  65test_done