#!/bin/sh

test_description='Test ref-filter and pretty APIs for commit and tag messages using CRLF'
. ./test-lib.sh

LIB_CRLF_BRANCHES=""

create_crlf_ref () {
	branch="$1" &&
	cat >.crlf-orig-$branch.txt &&
	cat .crlf-orig-$branch.txt | append_cr >.crlf-message-$branch.txt &&
	grep 'Subject' .crlf-orig-$branch.txt | tr '\n' ' ' | sed 's/[ ]*$//' | tr -d '\n' >.crlf-subject-$branch.txt &&
	grep 'Body' .crlf-message-$branch.txt >.crlf-body-$branch.txt || true &&
	LIB_CRLF_BRANCHES="${LIB_CRLF_BRANCHES} ${branch}" &&
	test_tick &&
	hash=$(git commit-tree HEAD^{tree} -p HEAD -F .crlf-message-${branch}.txt) &&
	git branch ${branch} ${hash} &&
	git tag tag-${branch} ${branch} -F .crlf-message-${branch}.txt --cleanup=verbatim
}

create_crlf_refs () {
	create_crlf_ref crlf <<-\EOF &&
	Subject first line

	Body first line
	Body second line
	EOF
	create_crlf_ref crlf-empty-lines-after-subject <<-\EOF &&
	Subject first line


	Body first line
	Body second line
	EOF
	create_crlf_ref crlf-two-line-subject <<-\EOF &&
	Subject first line
	Subject second line

	Body first line
	Body second line
	EOF
	create_crlf_ref crlf-two-line-subject-no-body <<-\EOF &&
	Subject first line
	Subject second line
	EOF
	create_crlf_ref crlf-two-line-subject-no-body-trailing-newline <<-\EOF
	Subject first line
	Subject second line

	EOF
}

test_crlf_subject_body_and_contents() {
	command_and_args="$@" &&
	command=$1 &&
	if test ${command} = "branch" || test ${command} = "for-each-ref" || test ${command} = "tag"
	then
		atoms="(contents:subject) (contents:body) (contents)"
	elif test ${command} = "log" || test ${command} = "show"
	then
		atoms="s b B"
	fi &&
	files="subject body message" &&
	while test -n "${atoms}"
	do
		set ${atoms} && atom=$1 && shift && atoms="$*" &&
		set ${files} &&	file=$1 && shift && files="$*" &&
		test_expect_success "${command}: --format='%${atom}' works with messages using CRLF" "
			rm -f expect &&
			for ref in ${LIB_CRLF_BRANCHES}
			do
				cat .crlf-${file}-\"\${ref}\".txt >>expect &&
				printf \"\n\" >>expect
			done &&
			git $command_and_args --format=\"%${atom}\" >actual &&
			test_cmp expect actual
		"
	done
}


test_expect_success 'Setup refs with commit and tag messages using CRLF' '
	test_commit inital &&
	create_crlf_refs
'

test_expect_success 'branch: --verbose works with messages using CRLF' '
	rm -f expect &&
	for branch in $LIB_CRLF_BRANCHES
	do
		printf "  " >>expect &&
		cat .crlf-subject-${branch}.txt >>expect &&
		printf "\n" >>expect
	done &&
	git branch -v >tmp &&
	# Remove first two columns, and the line for the currently checked out branch
	current=$(git branch --show-current) &&
	grep -v $current <tmp | awk "{\$1=\$2=\"\"}1"  >actual &&
	test_cmp expect actual
'

test_crlf_subject_body_and_contents branch --list crlf*

test_crlf_subject_body_and_contents tag --list tag-crlf*

test_crlf_subject_body_and_contents for-each-ref refs/heads/crlf*

test_expect_success 'log: --oneline works with messages using CRLF' '
	for branch in $LIB_CRLF_BRANCHES
	do
		cat .crlf-subject-${branch}.txt >expect &&
		printf "\n" >>expect &&
		git log --oneline -1 ${branch} >tmp-branch &&
		git log --oneline -1 tag-${branch} >tmp-tag &&
		cut -d" " -f2- <tmp-branch >actual-branch &&
		cut -d" " -f2- <tmp-tag >actual-tag &&
		test_cmp expect actual-branch &&
		test_cmp expect actual-tag || return 1
	done
'

test_crlf_subject_body_and_contents log --all --reverse --grep Subject

test_crlf_subject_body_and_contents show $LIB_CRLF_BRANCHES

test_done
