#!/bin/sh

test_description='Test git stash show configuration.'

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh

test_expect_success 'setup' '
	test_commit file
'

# takes three parameters:
# 1. the stash.showStat value (or "<unset>")
# 2. the stash.showPatch value (or "<unset>")
# 3. the diff options of the expected output (or nothing for no output)
test_stat_and_patch () {
	if test "<unset>" = "$1"
	then
		test_unconfig stash.showStat
	else
		test_config stash.showStat "$1"
	fi &&

	if test "<unset>" = "$2"
	then
		test_unconfig stash.showPatch
	else
		test_config stash.showPatch "$2"
	fi &&

	shift 2 &&
	echo 2 >file.t &&
	if test $# != 0
	then
		git diff "$@" >expect
	fi &&
	git stash &&
	git stash show >actual &&

	if test $# = 0
	then
		test_must_be_empty actual
	else
		test_cmp expect actual
	fi
}

test_expect_success 'showStat unset showPatch unset' '
	test_stat_and_patch "<unset>" "<unset>" --stat
'

test_expect_success 'showStat unset showPatch false' '
	test_stat_and_patch "<unset>" false --stat
'

test_expect_success 'showStat unset showPatch true' '
	test_stat_and_patch "<unset>" true --stat -p
'

test_expect_success 'showStat false showPatch unset' '
	test_stat_and_patch false "<unset>"
'

test_expect_success 'showStat false showPatch false' '
	test_stat_and_patch false false
'

test_expect_success 'showStat false showPatch true' '
	test_stat_and_patch false true -p
'

test_expect_success 'showStat true showPatch unset' '
	test_stat_and_patch true "<unset>" --stat
'

test_expect_success 'showStat true showPatch false' '
	test_stat_and_patch true false --stat
'

test_expect_success 'showStat true showPatch true' '
	test_stat_and_patch true true --stat -p
'

test_done
