t / t3100-ls-tree-restrict.shon commit [PATCH] Fix the way diffcore-rename records unremoved source. (15d061b)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='git-ls-tree test.
   7
   8This test runs git-ls-tree with the following in a tree.
   9
  10    path0       - a file
  11    path1       - a symlink
  12    path2/foo   - a file in a directory
  13    path2/bazbo - a symlink in a directory
  14    path2/baz/b - a file in a directory in a directory
  15
  16The new path restriction code should do the right thing for path2 and
  17path2/baz
  18'
  19. ./test-lib.sh
  20
  21test_expect_success \
  22    'setup' \
  23    'mkdir path2 path2/baz &&
  24     echo Hi >path0 &&
  25     ln -s path0 path1 &&
  26     echo Lo >path2/foo &&
  27     ln -s ../path1 path2/bazbo &&
  28     echo Mi >path2/baz/b &&
  29     find path? \( -type f -o -type l \) -print |
  30     xargs git-update-cache --add &&
  31     tree=`git-write-tree` &&
  32     echo $tree'
  33
  34_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
  35_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
  36test_output () {
  37    sed -e "s/ $_x40    / X     /" <current >check
  38    diff -u expected check
  39}
  40
  41test_expect_success \
  42    'ls-tree plain' \
  43    'git-ls-tree $tree >current &&
  44     cat >expected <<\EOF &&
  45100644 blob X   path0
  46120000 blob X   path1
  47040000 tree X   path2
  48EOF
  49     test_output'
  50
  51test_expect_success \
  52    'ls-tree recursive' \
  53    'git-ls-tree -r $tree >current &&
  54     cat >expected <<\EOF &&
  55100644 blob X   path0
  56120000 blob X   path1
  57040000 tree X   path2
  58040000 tree X   path2/baz
  59100644 blob X   path2/baz/b
  60120000 blob X   path2/bazbo
  61100644 blob X   path2/foo
  62EOF
  63     test_output'
  64
  65test_expect_success \
  66    'ls-tree filtered' \
  67    'git-ls-tree $tree path >current &&
  68     cat >expected <<\EOF &&
  69EOF
  70     test_output'
  71
  72
  73test_expect_success \
  74    'ls-tree filtered' \
  75    'git-ls-tree $tree path1 path0 >current &&
  76     cat >expected <<\EOF &&
  77100644 blob X   path0
  78120000 blob X   path1
  79EOF
  80     test_output'
  81
  82test_expect_success \
  83    'ls-tree filtered' \
  84    'git-ls-tree $tree path2 >current &&
  85     cat >expected <<\EOF &&
  86040000 tree X   path2
  87040000 tree X   path2/baz
  88100644 blob X   path2/baz/b
  89120000 blob X   path2/bazbo
  90100644 blob X   path2/foo
  91EOF
  92     test_output'
  93
  94test_expect_success \
  95    'ls-tree filtered' \
  96    'git-ls-tree $tree path2/baz >current &&
  97     cat >expected <<\EOF &&
  98040000 tree X   path2/baz
  99100644 blob X   path2/baz/b
 100EOF
 101     test_output'
 102
 103test_done