t / t3001-ls-files-others-exclude.shon commit git wrapper: more careful argument stuffing (10b15b8)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='git-ls-files --others --exclude
   7
   8This test runs git-ls-files --others and tests --exclude patterns.
   9'
  10
  11. ./test-lib.sh
  12
  13rm -fr one three
  14for dir in . one one/two three
  15do
  16  mkdir -p $dir &&
  17  for i in 1 2 3 4 5 6 7 8
  18  do
  19    >$dir/a.$i
  20  done
  21done
  22
  23cat >expect <<EOF
  24a.2
  25a.4
  26a.5
  27a.8
  28one/a.3
  29one/a.4
  30one/a.5
  31one/a.7
  32one/two/a.2
  33one/two/a.3
  34one/two/a.5
  35one/two/a.7
  36one/two/a.8
  37three/a.2
  38three/a.3
  39three/a.4
  40three/a.5
  41three/a.8
  42EOF
  43
  44echo '.gitignore
  45output
  46expect
  47.gitignore
  48*.7
  49!*.8' >.git/ignore
  50
  51echo '*.1
  52/*.3
  53!*.6' >.gitignore
  54echo '*.2
  55two/*.4
  56!*.7
  57*.8' >one/.gitignore
  58echo '!*.2
  59!*.8' >one/two/.gitignore
  60
  61test_expect_success \
  62    'git-ls-files --others with various exclude options.' \
  63    'git-ls-files --others \
  64       --exclude=\*.6 \
  65       --exclude-per-directory=.gitignore \
  66       --exclude-from=.git/ignore \
  67       >output &&
  68     diff -u expect output'
  69
  70# Test \r\n (MSDOS-like systems)
  71echo -ne '*.1\r\n/*.3\r\n!*.6\r\n' >.gitignore
  72
  73test_expect_success \
  74    'git-ls-files --others with \r\n line endings.' \
  75    'git-ls-files --others \
  76       --exclude=\*.6 \
  77       --exclude-per-directory=.gitignore \
  78       --exclude-from=.git/ignore \
  79       >output &&
  80     diff -u expect output'
  81
  82test_done