3beb0b3ed7bb62ce004979ffc8910ef3b992a0a3
   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        test_must_fail 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_done