#!/bin/sh

last_shelved_change () {
	p4 changes -s shelved -m1 | cut -d " " -f 2
}

test_description='git p4 unshelve'

. ./lib-git-p4.sh

test_expect_success 'start p4d' '
	start_p4d
'

test_expect_success 'init depot' '
	(
		cd "$cli" &&
		echo file1 >file1 &&
		p4 add file1 &&
		p4 submit -d "change 1" &&
		: >file_to_delete &&
		: >file_to_move &&
		p4 add file_to_delete &&
		p4 add file_to_move &&
		p4 submit -d "add files to delete"
	)
'

test_expect_success 'initial clone' '
	git p4 clone --dest="$git" //depot/@all
'

test_expect_success 'create shelved changelist' '
	(
		cd "$cli" &&
		p4 edit file1 &&
		echo "a change" >>file1 &&
		echo "new file" >file2 &&
		p4 add file2 &&
		p4 delete file_to_delete &&
		p4 edit file_to_move &&
		p4 move file_to_move moved_file &&
		p4 opened &&
		p4 shelve -i <<EOF
Change: new
Description:
	Test commit

	Further description
Files:
	//depot/file1
	//depot/file2
	//depot/file_to_delete
	//depot/file_to_move
	//depot/moved_file
EOF

	) &&
	(
		cd "$git" &&
		change=$(last_shelved_change) &&
		git p4 unshelve $change &&
		git show refs/remotes/p4-unshelved/$change | grep -q "Further description" &&
		git cherry-pick refs/remotes/p4-unshelved/$change &&
		test_path_is_file file2 &&
		test_cmp file1 "$cli"/file1 &&
		test_cmp file2 "$cli"/file2 &&
		test_path_is_missing file_to_delete &&
		test_path_is_missing file_to_move &&
		test_path_is_file moved_file
	)
'

test_expect_success 'update shelved changelist and re-unshelve' '
	test_when_finished cleanup_git &&
	(
		cd "$cli" &&
		change=$(last_shelved_change) &&
		echo "file3" >file3 &&
		p4 add -c $change file3 &&
		p4 shelve -i -r <<EOF &&
Change: $change
Description:
	Test commit

	Further description
Files:
	//depot/file1
	//depot/file2
	//depot/file3
	//depot/file_to_delete
EOF
		p4 describe $change
	) &&
	(
		cd "$git" &&
		change=$(last_shelved_change) &&
		git p4 unshelve $change &&
		git diff refs/remotes/p4-unshelved/$change.0 refs/remotes/p4-unshelved/$change | grep -q file3
	)
'

shelve_one_file () {
	description="Change to be unshelved" &&
	file="$1" &&
	p4 shelve -i <<EOF
Change: new
Description:
	$description
Files:
	$file
EOF
}

# This is the tricky case where the shelved changelist base revision doesn't
# match git-p4's idea of the base revision
#
# We will attempt to unshelve a change that is based on a change one commit
# ahead of p4/master

test_expect_success 'create shelved changelist based on p4 change ahead of p4/master' '
	git p4 clone --dest="$git" //depot/@all &&
	(
		cd "$cli" &&
		p4 revert ... &&
		p4 edit file1 &&
		echo "foo" >>file1 &&
		p4 submit -d "change:foo" &&
		p4 edit file1 &&
		echo "bar" >>file1 &&
		shelve_one_file //depot/file1 &&
		change=$(last_shelved_change) &&
		p4 describe -S $change >out.txt &&
		grep -q "Change to be unshelved" out.txt
	)
'

# Now try to unshelve it.
test_expect_success 'try to unshelve the change' '
	test_when_finished cleanup_git &&
	(
		change=$(last_shelved_change) &&
		cd "$git" &&
		git p4 unshelve $change >out.txt &&
		grep -q "unshelved changelist $change" out.txt
	)
'

# Specify the origin. Create 2 unrelated files, and check that
# we only get the one in HEAD~, not the one in HEAD.

test_expect_success 'unshelve specifying the origin' '
	(
		cd "$cli" &&
		: >unrelated_file0 &&
		p4 add unrelated_file0 &&
		p4 submit -d "unrelated" &&
		: >unrelated_file1 &&
		p4 add unrelated_file1 &&
		p4 submit -d "unrelated" &&
		: >file_to_shelve &&
		p4 add file_to_shelve &&
		shelve_one_file //depot/file_to_shelve
	) &&
	test_when_finished cleanup_git &&
	git p4 clone --dest="$git" //depot/@all &&
	(
		cd "$git" &&
		change=$(last_shelved_change) &&
		git p4 unshelve --origin HEAD~ $change &&
		git checkout refs/remotes/p4-unshelved/$change &&
		test_path_is_file unrelated_file0 &&
		test_path_is_missing unrelated_file1 &&
		test_path_is_file file_to_shelve
	)
'
test_expect_success 'kill p4d' '
	kill_p4d
'

test_done
