t / t3010-ls-files-killed-modified.shon commit Merge branch 'cb/open-noatime-clear-errno' into maint (cbcd3dc)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='git ls-files -k and -m flags test.
   7
   8This test prepares the following in the cache:
   9
  10    path0       - a file
  11    path1       - a symlink
  12    path2/file2 - a file in a directory
  13    path3/file3 - a file in a directory
  14    pathx/ju    - a file in a directory
  15    submod1/    - a submodule
  16    submod2/    - another submodule
  17
  18and the following on the filesystem:
  19
  20    path0/file0 - a file in a directory
  21    path1/file1 - a file in a directory
  22    path2       - a file
  23    path3       - a symlink
  24    path4       - a file
  25    path5       - a symlink
  26    path6/file6 - a file in a directory
  27    pathx/ju/nk - a file in a directory to be killed
  28    submod1/    - a submodule (modified from the cache)
  29    submod2/    - a submodule (matches the cache)
  30
  31git ls-files -k should report that existing filesystem objects
  32path0/*, path1/*, path2 and path3 to be killed.
  33
  34Also for modification test, the cache and working tree have:
  35
  36    path7       - an empty file, modified to a non-empty file.
  37    path8       - a non-empty file, modified to an empty file.
  38    path9       - an empty file, cache dirtied.
  39    path10      - a non-empty file, cache dirtied.
  40
  41We should report path0, path1, path2/file2, path3/file3, path7 and path8
  42modified without reporting path9 and path10.  submod1 is also modified.
  43'
  44. ./test-lib.sh
  45
  46test_expect_success 'git update-index --add to add various paths.' '
  47        date >path0 &&
  48        test_ln_s_add xyzzy path1 &&
  49        mkdir path2 path3 pathx &&
  50        date >path2/file2 &&
  51        date >path3/file3 &&
  52        >pathx/ju &&
  53        : >path7 &&
  54        date >path8 &&
  55        : >path9 &&
  56        date >path10 &&
  57        git update-index --add -- path0 path?/file? pathx/ju path7 path8 path9 path10 &&
  58        git init submod1 &&
  59        git -C submod1 commit --allow-empty -m "empty 1" &&
  60        git init submod2 &&
  61        git -C submod2 commit --allow-empty -m "empty 2" &&
  62        git update-index --add submod[12] &&
  63        (
  64                cd submod1 &&
  65                git commit --allow-empty -m "empty 1 (updated)"
  66        ) &&
  67        rm -fr path?    # leave path10 alone
  68'
  69
  70test_expect_success 'git ls-files -k to show killed files.' '
  71        date >path2 &&
  72        if test_have_prereq SYMLINKS
  73        then
  74                ln -s frotz path3 &&
  75                ln -s nitfol path5
  76        else
  77                date >path3 &&
  78                date >path5
  79        fi &&
  80        mkdir -p path0 path1 path6 pathx/ju &&
  81        date >path0/file0 &&
  82        date >path1/file1 &&
  83        date >path6/file6 &&
  84        date >path7 &&
  85        : >path8 &&
  86        : >path9 &&
  87        touch path10 &&
  88        >pathx/ju/nk &&
  89        cat >.expected <<-\EOF
  90        path0/file0
  91        path1/file1
  92        path2
  93        path3
  94        pathx/ju/nk
  95        EOF
  96'
  97
  98test_expect_success 'git ls-files -k output (w/o icase)' '
  99        git ls-files -k >.output &&
 100        test_cmp .expected .output
 101'
 102
 103test_expect_success 'git ls-files -k output (w/ icase)' '
 104        git -c core.ignorecase=true ls-files -k >.output &&
 105        test_cmp .expected .output
 106'
 107
 108test_expect_success 'git ls-files -m to show modified files.' '
 109        git ls-files -m >.output
 110'
 111
 112test_expect_success 'validate git ls-files -m output.' '
 113        cat >.expected <<-\EOF &&
 114        path0
 115        path1
 116        path2/file2
 117        path3/file3
 118        path7
 119        path8
 120        pathx/ju
 121        submod1
 122        EOF
 123        test_cmp .expected .output
 124'
 125
 126test_done