#!/bin/sh

test_description='ls-tree output'

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-t3100.sh

test_expect_success 'ls-tree --format usage' '
	test_expect_code 129 git ls-tree --format=fmt -l HEAD &&
	test_expect_code 129 git ls-tree --format=fmt --name-only HEAD &&
	test_expect_code 129 git ls-tree --format=fmt --name-status HEAD
'

test_expect_success 'setup' '
	setup_basic_ls_tree_data
'

test_ls_tree_format_mode_output () {
	local opts="$1" &&
	shift &&
	cat >expect &&

	while test $# -gt 0
	do
		local mode="$1" &&
		shift &&

		test_expect_success "'ls-tree $opts${mode:+ $mode}' output" '
			git ls-tree ${mode:+$mode }$opts HEAD >actual &&
			test_cmp expect actual
		'

		case "$opts" in
		--full-tree)
			test_expect_success "'ls-tree $opts${mode:+ $mode}' output (via subdir, fails)" '
				test_must_fail git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../
			'
			;;
		*)
			test_expect_success "'ls-tree $opts${mode:+ $mode}' output (via subdir)" '
				git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
				test_cmp expect actual
			'
			;;
		esac
	done
}

# test exact output of option (none, --long, ...) and mode (none and
# -d, -r -t) and combinations
test_expect_success 'setup: HEAD_* variables' '
	HEAD_gitmodules=$(git rev-parse HEAD:.gitmodules) &&
	HEAD_dir=$(git rev-parse HEAD:dir) &&
	HEAD_top_file=$(git rev-parse HEAD:top-file.t) &&
	HEAD_submodule=$(git rev-parse HEAD:submodule) &&
	HEAD_dir_sub_file=$(git rev-parse HEAD:dir/sub-file.t)
'
## opt =
test_ls_tree_format_mode_output "" "" "-t" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
test_ls_tree_format_mode_output "" "-d" <<-EOF
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	EOF
test_ls_tree_format_mode_output "" "-r" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	100644 blob $HEAD_dir_sub_file	dir/sub-file.t
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
## opt = --long
test_ls_tree_format_mode_output "--long" "" "-t" <<-EOF
	100644 blob $HEAD_gitmodules      61	.gitmodules
	040000 tree $HEAD_dir       -	dir
	160000 commit $HEAD_submodule       -	submodule
	100644 blob $HEAD_top_file       9	top-file.t
	EOF
test_ls_tree_format_mode_output "--long" "-d" <<-EOF
	040000 tree $HEAD_dir       -	dir
	160000 commit $HEAD_submodule       -	submodule
	EOF
test_ls_tree_format_mode_output "--long" "-r" <<-EOF
	100644 blob $HEAD_gitmodules      61	.gitmodules
	100644 blob $HEAD_dir_sub_file      13	dir/sub-file.t
	160000 commit $HEAD_submodule       -	submodule
	100644 blob $HEAD_top_file       9	top-file.t
	EOF
## opt = --name-only
test_ls_tree_format_mode_output "--name-only" "" "-t" <<-EOF
	.gitmodules
	dir
	submodule
	top-file.t
	EOF
test_ls_tree_format_mode_output "--name-only" "-d" <<-EOF
	dir
	submodule
	EOF
test_ls_tree_format_mode_output "--name-only" "-r" <<-EOF
	.gitmodules
	dir/sub-file.t
	submodule
	top-file.t
	EOF
## opt = --object-only
test_ls_tree_format_mode_output "--object-only" "" "-t" <<-EOF
	$HEAD_gitmodules
	$HEAD_dir
	$HEAD_submodule
	$HEAD_top_file
	EOF
test_ls_tree_format_mode_output "--object-only" "-d" <<-EOF
	$HEAD_dir
	$HEAD_submodule
	EOF
test_ls_tree_format_mode_output "--object-only" "-r" <<-EOF
	$HEAD_gitmodules
	$HEAD_dir_sub_file
	$HEAD_submodule
	$HEAD_top_file
	EOF
## opt = --object-only --abbrev
test_expect_success 'setup: HEAD_short_* variables' '
	HEAD_short_gitmodules=$(git rev-parse --short HEAD:.gitmodules) &&
	HEAD_short_dir=$(git rev-parse --short HEAD:dir) &&
	HEAD_short_top_file=$(git rev-parse --short HEAD:top-file.t) &&
	HEAD_short_submodule=$(git rev-parse --short HEAD:submodule) &&
	HEAD_short_dir_sub_file=$(git rev-parse --short HEAD:dir/sub-file.t)
'
test_ls_tree_format_mode_output "--object-only --abbrev" "" "-t" <<-EOF
	$HEAD_short_gitmodules
	$HEAD_short_dir
	$HEAD_short_submodule
	$HEAD_short_top_file
	EOF
test_ls_tree_format_mode_output "--object-only --abbrev" "-d" <<-EOF
	$HEAD_short_dir
	$HEAD_short_submodule
	EOF
test_ls_tree_format_mode_output "--object-only --abbrev" "-r" <<-EOF
	$HEAD_short_gitmodules
	$HEAD_short_dir_sub_file
	$HEAD_short_submodule
	$HEAD_short_top_file
	EOF
## opt = --full-name
test_ls_tree_format_mode_output "--full-name" "" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
test_ls_tree_format_mode_output "--full-name" "-d" <<-EOF
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	EOF
test_ls_tree_format_mode_output "--full-name" "-r" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	100644 blob $HEAD_dir_sub_file	dir/sub-file.t
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
test_ls_tree_format_mode_output "--full-name" "-t" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
## opt = --full-tree
test_ls_tree_format_mode_output "--full-tree" "" "-t" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF
test_ls_tree_format_mode_output "--full-tree" "-d" <<-EOF
	040000 tree $HEAD_dir	dir
	160000 commit $HEAD_submodule	submodule
	EOF
test_ls_tree_format_mode_output "--full-tree" "-r" <<-EOF
	100644 blob $HEAD_gitmodules	.gitmodules
	100644 blob $HEAD_dir_sub_file	dir/sub-file.t
	160000 commit $HEAD_submodule	submodule
	100644 blob $HEAD_top_file	top-file.t
	EOF

test_done
