git/t/t3009-ls-files-others-nonsubmodule.sh

#!/bin/sh

test_description='test git ls-files --others with non-submodule repositories

This test runs git ls-files --others with the following working tree:

    nonrepo-no-files/
      plain directory with no files
    nonrepo-untracked-file/
      plain directory with an untracked file
    repo-no-commit-no-files/
      git repository without a commit or a file
    repo-no-commit-untracked-file/
      git repository without a commit but with an untracked file
    repo-with-commit-no-files/
      git repository with a commit and no untracked files
    repo-with-commit-untracked-file/
      git repository with a commit and an untracked file
'

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh

test_expect_success 'setup: directories' '
	mkdir nonrepo-no-files/ &&
	mkdir nonrepo-untracked-file &&
	: >nonrepo-untracked-file/untracked &&
	git init repo-no-commit-no-files &&
	git init repo-no-commit-untracked-file &&
	: >repo-no-commit-untracked-file/untracked &&
	git init repo-with-commit-no-files &&
	git -C repo-with-commit-no-files commit --allow-empty -mmsg &&
	git init repo-with-commit-untracked-file &&
	test_commit -C repo-with-commit-untracked-file msg &&
	: >repo-with-commit-untracked-file/untracked
'

test_expect_success 'ls-files --others handles untracked git repositories' '
	git ls-files -o >output &&
	cat >expect <<-EOF &&
	nonrepo-untracked-file/untracked
	output
	repo-no-commit-no-files/
	repo-no-commit-untracked-file/
	repo-with-commit-no-files/
	repo-with-commit-untracked-file/
	EOF
	test_cmp expect output
'

test_done