You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
7.2 KiB
316 lines
7.2 KiB
#!/bin/sh |
|
|
|
test_description='git-status ignored files' |
|
|
|
. ./test-lib.sh |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
?? untracked/ |
|
!! untracked/ignored |
|
EOF |
|
|
|
test_expect_success 'status untracked directory with --ignored' ' |
|
echo "ignored" >.gitignore && |
|
mkdir untracked && |
|
: >untracked/ignored && |
|
: >untracked/uncommitted && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
test_expect_success 'same with gitignore starting with BOM' ' |
|
printf "\357\273\277ignored\n" >.gitignore && |
|
mkdir -p untracked && |
|
: >untracked/ignored && |
|
: >untracked/uncommitted && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
test_expect_success 'status untracked files --ignored with pathspec (no match)' ' |
|
git status --porcelain --ignored -- untracked/i >actual && |
|
test_must_be_empty actual && |
|
git status --porcelain --ignored -- untracked/u >actual && |
|
test_must_be_empty actual |
|
' |
|
|
|
test_expect_success 'status untracked files --ignored with pathspec (literal match)' ' |
|
git status --porcelain --ignored -- untracked/ignored >actual && |
|
echo "!! untracked/ignored" >expected && |
|
test_cmp expected actual && |
|
git status --porcelain --ignored -- untracked/uncommitted >actual && |
|
echo "?? untracked/uncommitted" >expected && |
|
test_cmp expected actual |
|
' |
|
|
|
test_expect_success 'status untracked files --ignored with pathspec (glob match)' ' |
|
git status --porcelain --ignored -- untracked/i\* >actual && |
|
echo "!! untracked/ignored" >expected && |
|
test_cmp expected actual && |
|
git status --porcelain --ignored -- untracked/u\* >actual && |
|
echo "?? untracked/uncommitted" >expected && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
?? untracked/uncommitted |
|
!! untracked/ignored |
|
EOF |
|
|
|
test_expect_success 'status untracked directory with --ignored -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
cat >expected <<\EOF |
|
?? untracked/ |
|
!! untracked/ignored |
|
EOF |
|
|
|
test_expect_success 'status of untracked directory with --ignored works with or without prefix' ' |
|
git status --porcelain --ignored >tmp && |
|
grep untracked/ tmp >actual && |
|
rm tmp && |
|
test_cmp expected actual && |
|
|
|
git status --porcelain --ignored untracked/ >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? untracked/uncommitted |
|
!! untracked/ignored |
|
EOF |
|
|
|
test_expect_success 'status prefixed untracked sub-directory with --ignored -u' ' |
|
git status --porcelain --ignored -u untracked/ >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! ignored/ |
|
EOF |
|
|
|
test_expect_success 'status ignored directory with --ignore' ' |
|
rm -rf untracked && |
|
mkdir ignored && |
|
: >ignored/uncommitted && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! ignored/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored directory with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status empty untracked directory with --ignore' ' |
|
rm -rf ignored && |
|
mkdir untracked-ignored && |
|
mkdir untracked-ignored/test && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status empty untracked directory with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! untracked-ignored/ |
|
EOF |
|
|
|
test_expect_success 'status untracked directory with ignored files with --ignore' ' |
|
: >untracked-ignored/ignored && |
|
: >untracked-ignored/test/ignored && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! untracked-ignored/ignored |
|
!! untracked-ignored/test/ignored |
|
EOF |
|
|
|
test_expect_success 'status untracked directory with ignored files with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with --ignore' ' |
|
rm -rf untracked-ignored && |
|
mkdir tracked && |
|
: >tracked/committed && |
|
git add tracked/committed && |
|
git commit -m. && |
|
echo "tracked" >.gitignore && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory and ignored file with --ignore' ' |
|
echo "committed" >>.gitignore && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory and ignored file with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' ' |
|
echo "tracked" >.gitignore && |
|
: >tracked/uncommitted && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory and uncommitted file with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/ignored/ |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore' ' |
|
rm -rf tracked/uncommitted && |
|
mkdir tracked/ignored && |
|
: >tracked/ignored/uncommitted && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/ignored/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/ignored/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore' ' |
|
: >tracked/ignored/committed && |
|
git add -f tracked/ignored/committed && |
|
git commit -m. && |
|
git status --porcelain --ignored >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
?? .gitignore |
|
?? actual |
|
?? expected |
|
!! tracked/ignored/uncommitted |
|
EOF |
|
|
|
test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore -u' ' |
|
git status --porcelain --ignored -u >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
cat >expected <<\EOF |
|
!! tracked/submodule/ |
|
EOF |
|
|
|
test_expect_success 'status ignores submodule in excluded directory' ' |
|
git init tracked/submodule && |
|
test_commit -C tracked/submodule initial && |
|
git status --porcelain --ignored -u tracked/submodule >actual && |
|
test_cmp expected actual |
|
' |
|
|
|
test_done
|
|
|