#!/bin/sh test_description='diff --relative tests' . ./test-lib.sh test_expect_success 'setup' ' git commit --allow-empty -m empty && echo content >file1 && mkdir subdir && echo other content >subdir/file2 && git add . && git commit -m one ' store_diff_relative() { expect=$1; cat >expected <expected <actual && test_cmp expected actual " } check_norel_pre() { store_diff_relative $1; shift test_expect_success "-p --no-relative $*" " git diff -p --no-relative $* HEAD^ >actual && test_cmp expected actual " } check_norel_post() { store_diff_absolute $1; shift test_expect_success "-p $* --no-relative" " git diff -p $* --no-relative HEAD^ >actual && test_cmp expected actual " } check_numstat() { expect=$1; shift cat >expected <expected && git diff --numstat $* HEAD^ >actual && test_cmp expected actual " } check_stat() { expect=$1; shift cat >expected <actual && test_i18ncmp expected actual " } check_raw() { expect=$1; shift cat >expected <actual && test_cmp expected actual " } check_config() { store_diff_relative $1; shift test_expect_success "git-config diff.relative=true in $1" " (cd $1; git -c diff.relative=true diff -p HEAD^ >../actual) && test_cmp expected actual " } check_config_no_relative() { store_diff_absolute $1; shift test_expect_success "--no-relative w/ git-config diff.relative=true in $1" " (cd $1; git -c diff.relative=true diff --no-relative -p HEAD^ >../actual) && test_cmp expected actual " } for type in diff numstat stat raw norel_pre norel_post; do check_$type file2 --relative=subdir/ check_$type file2 --relative=subdir check_$type dir/file2 --relative=sub done for type in config config_no_relative; do check_$type file2 subdir/ check_$type file2 subdir done test_done