#!/bin/sh

. libtest.sh
. libgit.sh

export LINES=10

test_setup_work_dir()
{
	create_repo_from_tgz "$base_dir/files/refs-repo.tgz"

	git checkout -b ahead
	printf 'test\n' > test.txt
	git add test.txt
	git_commit -m "Ahead branch"
	git checkout master

	git checkout -b diverged HEAD~2
	printf 'test\n' > test.txt
	git add test.txt
	git_commit -m "Diverged branch"
	git checkout master
}

test_case up-to-date-with-remote-master \
	--args='status' <<EOF
On branch master. Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (no files)
Changes not staged for commit:
  (no files)
Untracked files:
  (no files)

[status] Nothing to update                                                  100%
EOF

test_case behind-remote-master \
	--args='status' \
	--before="git reset --hard HEAD~2" \
	--after="git reset --hard origin/master" <<EOF
On branch master. Your branch is behind 'origin/master' by 2 commits.
Changes to be committed:
  (no files)
Changes not staged for commit:
  (no files)
Untracked files:
  (no files)

[status] Nothing to update                                                  100%
EOF

test_case ahead-of-remote-master \
	--args='status' \
	--before="git merge ahead" \
	--after="git reset --hard origin/master" <<EOF
On branch master. Your branch is ahead of 'origin/master' by 1 commit.
Changes to be committed:
  (no files)
Changes not staged for commit:
  (no files)
Untracked files:
  (no files)

[status] Nothing to update                                                  100%
EOF

test_case diverged-from-remote-master \
	--args='status' \
	--before="git reset --hard diverged" \
	--after="git reset --hard origin/master" <<EOF
On branch master. Your branch and 'origin/master' have diverged, and have 1 and
Changes to be committed:
  (no files)
Changes not staged for commit:
  (no files)
Untracked files:
  (no files)

[status] Nothing to update                                                  100%
EOF

run_test_cases

add_exec_prefix()
{
	code="$(cat < "$1")"
	if [ -n "$code" ]; then
		printf '%s\n' "$code" | sed -e 's/^[ 	]*//' -e '/^$/d' -e 's/^/:exec @/'
	fi
}

tig_script "all" "
	$(while read -r name; do
		add_exec_prefix "$name-before"
		printf ':save-display all-%s.screen\n' "$name"
		add_exec_prefix "$name-after"
	done < test-cases)
"

test_timeout 60

test_tig status

while read -r name; do
	assert_equals "all-$name.screen" < "$name.expected"
done < test-cases
