#!/bin/sh

test_description='git p4 fetching changes in multiple blocks'

TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-p4.sh

test_expect_success 'start p4d' '
	start_p4d
'

create_restricted_group() {
	p4 group -i <<-EOF
	Group: restricted
	MaxResults: 7
	MaxScanRows: 40
	Users: author
	EOF
}

test_expect_success 'Create group with limited maxrows' '
	create_restricted_group
'

test_expect_success 'Create a repo with many changes' '
	(
		client_view "//depot/included/... //client/included/..." \
			    "//depot/excluded/... //client/excluded/..." &&
		mkdir -p "$cli/included" "$cli/excluded" &&
		cd "$cli/included" &&
		>file.txt &&
		p4 add file.txt &&
		p4 submit -d "Add file.txt" &&
		for i in $(test_seq 0 5)
		do
			>outer$i.txt &&
			p4 add outer$i.txt &&
			p4 submit -d "Adding outer$i.txt" &&
			for j in $(test_seq 0 5)
			do
				p4 edit file.txt &&
				echo $i$j >file.txt &&
				p4 submit -d "Commit $i$j" || exit
			done || exit
		done
	)
'

test_expect_success 'Default user cannot fetch changes' '
	! p4 changes -m 1 //depot/...
'

test_expect_success 'Clone the repo' '
	git p4 clone --dest="$git" --changes-block-size=7 --verbose //depot/included@all
'

test_expect_success 'All files are present' '
	echo file.txt >expected &&
	test_write_lines outer0.txt outer1.txt outer2.txt outer3.txt outer4.txt >>expected &&
	test_write_lines outer5.txt >>expected &&
	ls "$git" >current &&
	test_cmp expected current
'

test_expect_success 'file.txt is correct' '
	echo 55 >expected &&
	test_cmp expected "$git/file.txt"
'

test_expect_success 'Correct number of commits' '
	(cd "$git" && git log --oneline) >log &&
	wc -l log &&
	test_line_count = 43 log
'

test_expect_success 'Previous version of file.txt is correct' '
	(cd "$git" && git checkout HEAD^^) &&
	echo 53 >expected &&
	test_cmp expected "$git/file.txt"
'

# Test git-p4 sync, with some files outside the client specification.

p4_add_file() {
	(cd "$cli" &&
		>$1 &&
		p4 add $1 &&
		p4 submit -d "Added file $1" $1
	)
}

test_expect_success 'Add some more files' '
	for i in $(test_seq 0 10)
	do
		p4_add_file "included/x$i" &&
		p4_add_file "excluded/x$i" || return 1
	done &&
	for i in $(test_seq 0 10)
	do
		p4_add_file "excluded/y$i" || return 1
	done
'

# This should pick up the 10 new files in "included", but not be confused
# by the additional files in "excluded"
test_expect_success 'Syncing files' '
	(
		cd "$git" &&
		git p4 sync --changes-block-size=7 &&
		git checkout p4/master &&
		ls -l x* > log &&
		test_line_count = 11 log
	)
'

# Handling of multiple depot paths:
#    git p4 clone //depot/pathA //depot/pathB
#
test_expect_success 'Create a repo with multiple depot paths' '
	client_view "//depot/pathA/... //client/pathA/..." \
		    "//depot/pathB/... //client/pathB/..." &&
	mkdir -p "$cli/pathA" "$cli/pathB" &&
	for p in pathA pathB
	do
		for i in $(test_seq 1 10)
		do
			p4_add_file "$p/file$p$i" || return 1
		done
	done
'

test_expect_success 'Clone repo with multiple depot paths' '
	test_when_finished cleanup_git &&
	(
		cd "$git" &&
		git p4 clone --changes-block-size=4 //depot/pathA@all //depot/pathB@all \
			--destination=dest &&
		ls -1 dest >log &&
		test_line_count = 20 log
	)
'

test_expect_success 'Clone repo with self-sizing block size' '
	test_when_finished cleanup_git &&
	git p4 clone --changes-block-size=1000000 //depot@all --destination="$git" &&
	git -C "$git" log --oneline >log &&
	test_line_count \> 10 log
'

test_done
