t / t2003-checkout-cache-mkdir.shon commit Merge branch 'nd/clone-linked-checkout' (b9d23c2)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='git checkout-index --prefix test.
   7
   8This test makes sure that --prefix option works as advertised, and
   9also verifies that such leading path may contain symlinks, unlike
  10the GIT controlled paths.
  11'
  12
  13. ./test-lib.sh
  14
  15test_expect_success 'setup' '
  16        mkdir path1 &&
  17        echo frotz >path0 &&
  18        echo rezrov >path1/file1 &&
  19        git update-index --add path0 path1/file1
  20'
  21
  22test_expect_success SYMLINKS 'have symlink in place where dir is expected.' '
  23        rm -fr path0 path1 &&
  24        mkdir path2 &&
  25        ln -s path2 path1 &&
  26        git checkout-index -f -a &&
  27        test ! -h path1 && test -d path1 &&
  28        test -f path1/file1 && test ! -f path2/file1
  29'
  30
  31test_expect_success 'use --prefix=path2/' '
  32        rm -fr path0 path1 path2 &&
  33        mkdir path2 &&
  34        git checkout-index --prefix=path2/ -f -a &&
  35        test -f path2/path0 &&
  36        test -f path2/path1/file1 &&
  37        test ! -f path0 &&
  38        test ! -f path1/file1
  39'
  40
  41test_expect_success 'use --prefix=tmp-' '
  42        rm -fr path0 path1 path2 tmp* &&
  43        git checkout-index --prefix=tmp- -f -a &&
  44        test -f tmp-path0 &&
  45        test -f tmp-path1/file1 &&
  46        test ! -f path0 &&
  47        test ! -f path1/file1
  48'
  49
  50test_expect_success 'use --prefix=tmp- but with a conflicting file and dir' '
  51        rm -fr path0 path1 path2 tmp* &&
  52        echo nitfol >tmp-path1 &&
  53        mkdir tmp-path0 &&
  54        git checkout-index --prefix=tmp- -f -a &&
  55        test -f tmp-path0 &&
  56        test -f tmp-path1/file1 &&
  57        test ! -f path0 &&
  58        test ! -f path1/file1
  59'
  60
  61test_expect_success SYMLINKS 'use --prefix=tmp/orary/ where tmp is a symlink' '
  62        rm -fr path0 path1 path2 tmp* &&
  63        mkdir tmp1 tmp1/orary &&
  64        ln -s tmp1 tmp &&
  65        git checkout-index --prefix=tmp/orary/ -f -a &&
  66        test -d tmp1/orary &&
  67        test -f tmp1/orary/path0 &&
  68        test -f tmp1/orary/path1/file1 &&
  69        test -h tmp
  70'
  71
  72test_expect_success SYMLINKS 'use --prefix=tmp/orary- where tmp is a symlink' '
  73        rm -fr path0 path1 path2 tmp* &&
  74        mkdir tmp1 &&
  75        ln -s tmp1 tmp &&
  76        git checkout-index --prefix=tmp/orary- -f -a &&
  77        test -f tmp1/orary-path0 &&
  78        test -f tmp1/orary-path1/file1 &&
  79        test -h tmp
  80'
  81
  82test_expect_success SYMLINKS 'use --prefix=tmp- where tmp-path1 is a symlink' '
  83        rm -fr path0 path1 path2 tmp* &&
  84        mkdir tmp1 &&
  85        ln -s tmp1 tmp-path1 &&
  86        git checkout-index --prefix=tmp- -f -a &&
  87        test -f tmp-path0 &&
  88        test ! -h tmp-path1 &&
  89        test -d tmp-path1 &&
  90        test -f tmp-path1/file1
  91'
  92
  93test_expect_success 'apply filter from working tree .gitattributes with --prefix' '
  94        rm -fr path0 path1 path2 tmp* &&
  95        mkdir path1 &&
  96        mkdir tmp &&
  97        git config filter.replace-all.smudge "sed -e s/./,/g" &&
  98        git config filter.replace-all.clean cat &&
  99        git config filter.replace-all.required true &&
 100        echo "file1 filter=replace-all" >path1/.gitattributes &&
 101        git checkout-index --prefix=tmp/ -f -a &&
 102        echo frotz >expected &&
 103        test_cmp expected tmp/path0 &&
 104        echo ,,,,,, >expected &&
 105        test_cmp expected tmp/path1/file1
 106'
 107
 108test_expect_success 'apply CRLF filter from working tree .gitattributes with --prefix' '
 109        rm -fr path0 path1 path2 tmp* &&
 110        mkdir path1 &&
 111        mkdir tmp &&
 112        echo "file1 eol=crlf" >path1/.gitattributes &&
 113        git checkout-index --prefix=tmp/ -f -a &&
 114        echo rezrovQ >expected &&
 115        tr \\015 Q <tmp/path1/file1 >actual &&
 116        test_cmp expected actual
 117'
 118
 119test_done