| 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='git status and symlinks' |
| 4 | |
| 5 | . ./test-lib.sh |
| 6 | |
| 7 | test_expect_success 'setup' ' |
| 8 | echo .gitignore >.gitignore && |
| 9 | echo actual >>.gitignore && |
| 10 | echo expect >>.gitignore && |
| 11 | mkdir dir && |
| 12 | echo x >dir/file1 && |
| 13 | echo y >dir/file2 && |
| 14 | git add dir && |
| 15 | git commit -m initial && |
| 16 | git tag initial |
| 17 | ' |
| 18 | |
| 19 | test_expect_success SYMLINKS 'symlink to a directory' ' |
| 20 | test_when_finished "rm symlink" && |
| 21 | ln -s dir symlink && |
| 22 | echo "?? symlink" >expect && |
| 23 | git status --porcelain >actual && |
| 24 | test_cmp expect actual |
| 25 | ' |
| 26 | |
| 27 | test_expect_success SYMLINKS 'symlink replacing a directory' ' |
| 28 | test_when_finished "rm -rf copy && git reset --hard initial" && |
| 29 | mkdir copy && |
| 30 | cp dir/file1 copy/file1 && |
| 31 | echo "changed in copy" >copy/file2 && |
| 32 | git add copy && |
| 33 | git commit -m second && |
| 34 | rm -rf copy && |
| 35 | ln -s dir copy && |
| 36 | echo " D copy/file1" >expect && |
| 37 | echo " D copy/file2" >>expect && |
| 38 | echo "?? copy" >>expect && |
| 39 | git status --porcelain >actual && |
| 40 | test_cmp expect actual |
| 41 | ' |
| 42 | |
| 43 | test_done |