#!/bin/sh
#
# Copyright (C) 2005 Rene Scharfe
#

test_description='git commit-tree options test

This test checks that git commit-tree can create a specific commit
object by defining all environment variables that it understands.

Also make sure that command line parser understands the normal
"flags first and then non flag arguments" command line.
'

. ./test-lib.sh

test_expect_success 'test preparation: write empty tree' '
	cat >expected <<-EOF &&
	tree $EMPTY_TREE
	author Author Name <author@email> 1117148400 +0000
	committer Committer Name <committer@email> 1117150200 +0000

	comment text
	EOF
	git write-tree >treeid
'

test_expect_success 'construct commit' '
	echo comment text |
	GIT_AUTHOR_NAME="Author Name" \
	GIT_AUTHOR_EMAIL="author@email" \
	GIT_AUTHOR_DATE="2005-05-26 23:00" \
	GIT_COMMITTER_NAME="Committer Name" \
	GIT_COMMITTER_EMAIL="committer@email" \
	GIT_COMMITTER_DATE="2005-05-26 23:30" \
	TZ=GMT git commit-tree $(cat treeid) >commitid 2>/dev/null
'

test_expect_success 'read commit' '
	git cat-file commit $(cat commitid) >commit
'

test_expect_success 'compare commit' '
	test_cmp expected commit
'

test_expect_success 'flags and then non flags' '
	test_tick &&
	echo comment text |
	git commit-tree $(cat treeid) >commitid &&
	echo comment text |
	git commit-tree $(cat treeid) -p $(cat commitid) >childid-1 &&
	echo comment text |
	git commit-tree -p $(cat commitid) $(cat treeid) >childid-2 &&
	test_cmp childid-1 childid-2 &&
	git commit-tree $(cat treeid) -m foo >childid-3 &&
	git commit-tree -m foo $(cat treeid) >childid-4 &&
	test_cmp childid-3 childid-4
'

test_done
