#!/bin/sh

test_description='check random commands outside repo'

. ./test-lib.sh

test_expect_success 'set up a non-repo directory and test file' '
	GIT_CEILING_DIRECTORIES=$(pwd) &&
	export GIT_CEILING_DIRECTORIES &&
	mkdir non-repo &&
	(
		cd non-repo &&
		# confirm that git does not find a repo
		test_must_fail git rev-parse --git-dir
	) &&
	test_write_lines one two three four >nums &&
	git add nums &&
	cp nums nums.old &&
	test_write_lines five >>nums &&
	git diff >sample.patch
'

test_expect_success 'compute a patch-id outside repository (uses SHA-1)' '
	nongit env GIT_DEFAULT_HASH=sha1 \
		git patch-id <sample.patch >patch-id.expect &&
	nongit \
		git patch-id <sample.patch >patch-id.actual &&
	test_cmp patch-id.expect patch-id.actual
'

test_expect_success 'hash-object outside repository (uses SHA-1)' '
	nongit env GIT_DEFAULT_HASH=sha1 \
		git hash-object --stdin <sample.patch >hash.expect &&
	nongit \
		git hash-object --stdin <sample.patch >hash.actual &&
	test_cmp hash.expect hash.actual
'

test_expect_success 'apply a patch outside repository' '
	(
		cd non-repo &&
		cp ../nums.old nums &&
		git apply ../sample.patch
	) &&
	test_cmp nums non-repo/nums
'

test_expect_success 'grep outside repository' '
	git grep --cached two >expect &&
	(
		cd non-repo &&
		cp ../nums.old nums &&
		git grep --no-index two >../actual
	) &&
	test_cmp expect actual
'

test_expect_success 'imap-send outside repository' '
	test_config_global imap.host imaps://localhost &&
	test_config_global imap.folder Drafts &&

	echo nothing to send >expect &&
	test_must_fail git imap-send -v </dev/null 2>actual &&
	test_cmp expect actual &&

	(
		cd non-repo &&
		test_must_fail git imap-send -v </dev/null 2>../actual
	) &&
	test_cmp expect actual
'

test_expect_success 'check-ref-format outside repository' '
	git check-ref-format --branch refs/heads/xyzzy >expect &&
	nongit git check-ref-format --branch refs/heads/xyzzy >actual &&
	test_cmp expect actual
'

test_expect_success 'diff outside repository' '
	echo one >one &&
	echo two >two &&
	test_must_fail git diff --no-index one two >expect.raw &&
	(
		cd non-repo &&
		cp ../one . &&
		cp ../two . &&
		test_must_fail git diff one two >../actual.raw
	) &&
	# outside repository diff falls back to SHA-1 but
	# GIT_DEFAULT_HASH may be set to sha256 on the in-repo side.
	sed -e "/^index /d" expect.raw >expect &&
	sed -e "/^index /d" actual.raw >actual &&
	test_cmp expect actual
'

test_expect_success 'stripspace outside repository' '
	nongit git stripspace -s </dev/null
'

test_expect_success LIBCURL 'remote-http outside repository' '
	test_must_fail git remote-http 2>actual &&
	test_grep "^error: remote-curl" actual &&
	(
		cd non-repo &&
		test_must_fail git remote-http 2>../actual
	) &&
	test_grep "^error: remote-curl" actual
'

for cmd in $(git --list-cmds=main)
do
	cmd=${cmd%.*} # strip .sh, .perl, etc.
	case "$cmd" in
	archimport | citool | credential-netrc | credential-libsecret | \
	credential-osxkeychain | cvsexportcommit | cvsimport | cvsserver | \
	daemon | \
	difftool--helper | filter-branch | fsck-objects | get-tar-commit-id | \
	gui | gui--askpass | \
	http-backend | http-fetch | http-push | init-db | \
	merge-octopus | merge-one-file | merge-resolve | mergetool | \
	mktag | p4 | p4.py | pickaxe | remote-ftp | remote-ftps | \
	remote-http | remote-https | replay | send-email | \
	sh-i18n--envsubst | shell | show | stage | submodule | svn | \
	upload-archive--writer | upload-pack | web--browse | whatchanged)
		expect_outcome=expect_failure ;;
	*)
		expect_outcome=expect_success ;;
	esac
	case "$cmd" in
	instaweb)
		prereq=PERL ;;
	*)
		prereq= ;;
	esac
	test_$expect_outcome $prereq "'git $cmd -h' outside a repository" '
		test_expect_code 129 nongit git $cmd -h >usage &&
		test_grep "[Uu]sage: git $cmd " usage
	'
	test_$expect_outcome $prereq "'git $cmd --help-all' outside a repository" '
		test_expect_code 129 nongit git $cmd --help-all >usage &&
		test_grep "[Uu]sage: git $cmd " usage
	'
done

test_expect_success 'fmt-merge-msg does not crash with -h' '
	test_expect_code 129 git fmt-merge-msg -h >usage &&
	test_grep "[Uu]sage: git fmt-merge-msg " usage &&
	test_expect_code 129 nongit git fmt-merge-msg -h >usage &&
	test_grep "[Uu]sage: git fmt-merge-msg " usage
'

test_done
