341fad54ce3fffa377c0febc20828a69dd7116d3
   1#!/bin/sh
   2
   3test_description='ls-files tests with relative paths
   4
   5This test runs git ls-files with various relative path arguments.
   6'
   7
   8. ./test-lib.sh
   9
  10new_line='
  11'
  12sq=\'
  13
  14test_expect_success 'prepare' '
  15        : >never-mind-me &&
  16        git add never-mind-me &&
  17        mkdir top &&
  18        (
  19                cd top &&
  20                mkdir sub &&
  21                x="x xa xbc xdef xghij xklmno" &&
  22                y=$(echo "$x" | tr x y) &&
  23                touch $x &&
  24                touch $y &&
  25                cd sub &&
  26                git add ../x*
  27        )
  28'
  29
  30test_expect_success 'ls-files with mixed levels' '
  31        (
  32                cd top/sub &&
  33                cat >expect <<-EOF &&
  34                ../../never-mind-me
  35                ../x
  36                EOF
  37                git ls-files $(cat expect) >actual &&
  38                test_cmp expect actual
  39        )
  40'
  41
  42test_expect_success 'ls-files -c' '
  43        (
  44                cd top/sub &&
  45                for f in ../y*
  46                do
  47                        echo "error: pathspec $sq$f$sq did not match any file(s) known to git"
  48                done >expect.err &&
  49                echo "Did you forget to ${sq}git add${sq}?" >>expect.err &&
  50                ls ../x* >expect.out &&
  51                test_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err &&
  52                test_cmp expect.out actual.out &&
  53                test_cmp expect.err actual.err
  54        )
  55'
  56
  57test_expect_success 'ls-files -o' '
  58        (
  59                cd top/sub &&
  60                for f in ../x*
  61                do
  62                        echo "error: pathspec $sq$f$sq did not match any file(s) known to git"
  63                done >expect.err &&
  64                echo "Did you forget to ${sq}git add${sq}?" >>expect.err &&
  65                ls ../y* >expect.out &&
  66                test_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err &&
  67                test_cmp expect.out actual.out &&
  68                test_cmp expect.err actual.err
  69        )
  70'
  71
  72test_done