t / t8007-cat-file-textconv.shon commit cat-file: do not die on --textconv without textconv filters (3ac2161)
   1#!/bin/sh
   2
   3test_description='git cat-file textconv support'
   4. ./test-lib.sh
   5
   6cat >helper <<'EOF'
   7#!/bin/sh
   8grep -q '^bin: ' "$1" || { echo "E: $1 is not \"binary\" file" 1>&2; exit 1; }
   9sed 's/^bin: /converted: /' "$1"
  10EOF
  11chmod +x helper
  12
  13test_expect_success 'setup ' '
  14        echo "bin: test" >one.bin &&
  15        if test_have_prereq SYMLINKS; then
  16                ln -s one.bin symlink.bin
  17        fi &&
  18        git add . &&
  19        GIT_AUTHOR_NAME=Number1 git commit -a -m First --date="2010-01-01 18:00:00" &&
  20        echo "bin: test version 2" >one.bin &&
  21        GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
  22'
  23
  24cat >expected <<EOF
  25bin: test version 2
  26EOF
  27
  28test_expect_success 'no filter specified' '
  29        git cat-file --textconv :one.bin >result &&
  30        test_cmp expected result
  31'
  32
  33test_expect_success 'setup textconv filters' '
  34        echo "*.bin diff=test" >.gitattributes &&
  35        git config diff.test.textconv ./helper &&
  36        git config diff.test.cachetextconv false
  37'
  38
  39test_expect_success 'cat-file without --textconv' '
  40        git cat-file blob :one.bin >result &&
  41        test_cmp expected result
  42'
  43
  44cat >expected <<EOF
  45bin: test
  46EOF
  47
  48test_expect_success 'cat-file without --textconv on previous commit' '
  49        git cat-file -p HEAD^:one.bin >result &&
  50        test_cmp expected result
  51'
  52
  53cat >expected <<EOF
  54converted: test version 2
  55EOF
  56
  57test_expect_success 'cat-file --textconv on last commit' '
  58        git cat-file --textconv :one.bin >result &&
  59        test_cmp expected result
  60'
  61
  62cat >expected <<EOF
  63converted: test
  64EOF
  65
  66test_expect_success 'cat-file --textconv on previous commit' '
  67        git cat-file --textconv HEAD^:one.bin >result &&
  68        test_cmp expected result
  69'
  70
  71test_expect_success SYMLINKS 'cat-file without --textconv (symlink)' '
  72        printf "%s" "one.bin" >expected &&
  73        git cat-file blob :symlink.bin >result &&
  74        test_cmp expected result
  75'
  76
  77
  78test_expect_success SYMLINKS 'cat-file --textconv on index (symlink)' '
  79        git cat-file --textconv :symlink.bin >result &&
  80        test_cmp expected result
  81'
  82
  83test_expect_success SYMLINKS 'cat-file --textconv on HEAD (symlink)' '
  84        git cat-file --textconv HEAD:symlink.bin >result &&
  85        test_cmp expected result
  86'
  87
  88test_done