Imported Upstream version 2.27.0
[platform/upstream/git.git] / t / t3000-ls-files-others.sh
index 0aefada..ffdfb16 100755 (executable)
@@ -91,4 +91,125 @@ test_expect_success SYMLINKS 'ls-files --others with symlinked submodule' '
        test_cmp expect actual
 '
 
+test_expect_success 'setup nested pathspec search' '
+       test_create_repo nested &&
+       (
+               cd nested &&
+
+               mkdir -p partially_tracked/untracked_dir &&
+               > partially_tracked/content &&
+               > partially_tracked/untracked_dir/file &&
+
+               mkdir -p untracked/deep &&
+               > untracked/deep/path &&
+               > untracked/deep/foo.c &&
+
+               git add partially_tracked/content
+       )
+'
+
+test_expect_success 'ls-files -o --directory with single deep dir pathspec' '
+       (
+               cd nested &&
+
+               git ls-files -o --directory untracked/deep/ >actual &&
+
+               cat <<-EOF >expect &&
+               untracked/deep/
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files -o --directory with multiple dir pathspecs' '
+       (
+               cd nested &&
+
+               git ls-files -o --directory partially_tracked/ untracked/ >actual &&
+
+               cat <<-EOF >expect &&
+               partially_tracked/untracked_dir/
+               untracked/
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files -o --directory with mix dir/file pathspecs' '
+       (
+               cd nested &&
+
+               git ls-files -o --directory partially_tracked/ untracked/deep/path >actual &&
+
+               cat <<-EOF >expect &&
+               partially_tracked/untracked_dir/
+               untracked/deep/path
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files --o --directory with glob filetype match' '
+       (
+               cd nested &&
+
+               # globs kinda defeat --directory, but only for that pathspec
+               git ls-files --others --directory partially_tracked "untracked/*.c" >actual &&
+
+               cat <<-EOF >expect &&
+               partially_tracked/untracked_dir/
+               untracked/deep/foo.c
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files --o --directory with mix of tracked states' '
+       (
+               cd nested &&
+
+               # globs kinda defeat --directory, but only for that pathspec
+               git ls-files --others --directory partially_tracked/ "untracked/?*" >actual &&
+
+               cat <<-EOF >expect &&
+               partially_tracked/untracked_dir/
+               untracked/deep/
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files --o --directory with glob filetype match only' '
+       (
+               cd nested &&
+
+               git ls-files --others --directory "untracked/*.c" >actual &&
+
+               cat <<-EOF >expect &&
+               untracked/deep/foo.c
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success 'ls-files --o --directory to get immediate paths under one dir only' '
+       (
+               cd nested &&
+
+               git ls-files --others --directory "untracked/?*" >actual &&
+
+               cat <<-EOF >expect &&
+               untracked/deep/
+               EOF
+
+               test_cmp expect actual
+       )
+'
+
 test_done