t / t2022-checkout-paths.shon commit Merge branch 'rs/clarify-entry-cmp-sslice' (f12e49a)
   1#!/bin/sh
   2
   3test_description='checkout $tree -- $paths'
   4. ./test-lib.sh
   5
   6test_expect_success setup '
   7        mkdir dir &&
   8        >dir/master &&
   9        echo common >dir/common &&
  10        git add dir/master dir/common &&
  11        test_tick && git commit -m "master has dir/master" &&
  12        git checkout -b next &&
  13        git mv dir/master dir/next0 &&
  14        echo next >dir/next1 &&
  15        git add dir &&
  16        test_tick && git commit -m "next has dir/next but not dir/master"
  17'
  18
  19test_expect_success 'checking out paths out of a tree does not clobber unrelated paths' '
  20        git checkout next &&
  21        git reset --hard &&
  22        rm dir/next0 &&
  23        cat dir/common >expect.common &&
  24        echo modified >expect.next1 &&
  25        cat expect.next1 >dir/next1 &&
  26        echo untracked >expect.next2 &&
  27        cat expect.next2 >dir/next2 &&
  28
  29        git checkout master dir &&
  30
  31        test_cmp expect.common dir/common &&
  32        test_path_is_file dir/master &&
  33        git diff --exit-code master dir/master &&
  34
  35        test_path_is_missing dir/next0 &&
  36        test_cmp expect.next1 dir/next1 &&
  37        test_path_is_file dir/next2 &&
  38        test_must_fail git ls-files --error-unmatch dir/next2 &&
  39        test_cmp expect.next2 dir/next2
  40'
  41
  42test_done