]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | test_description='git-add -u with path limiting | |
4 | ||
5 | This test creates a working tree state with three files: | |
6 | ||
7 | top (previously committed, modified) | |
8 | dir/sub (previously committed, modified) | |
9 | dir/other (untracked) | |
10 | ||
11 | and issues a git-add -u with path limiting on "dir" to add | |
12 | only the updates to dir/sub.' | |
13 | ||
14 | . ./test-lib.sh | |
15 | ||
16 | test_expect_success setup ' | |
17 | echo initial >check && | |
18 | echo initial >top && | |
19 | mkdir dir1 dir2 && | |
20 | echo initial >dir1/sub1 && | |
21 | echo initial >dir1/sub2 && | |
22 | echo initial >dir2/sub3 && | |
23 | git add check dir1 dir2 top && | |
24 | test_tick | |
25 | git-commit -m initial && | |
26 | ||
27 | echo changed >check && | |
28 | echo changed >top && | |
29 | echo changed >dir2/sub3 && | |
30 | rm -f dir1/sub1 && | |
31 | echo other >dir2/other | |
32 | ' | |
33 | ||
34 | test_expect_success update ' | |
35 | git add -u dir1 dir2 | |
36 | ' | |
37 | ||
38 | test_expect_success 'update noticed a removal' ' | |
39 | test "$(git-ls-files dir1/sub1)" = "" | |
40 | ' | |
41 | ||
42 | test_expect_success 'update touched correct path' ' | |
43 | test "$(git-diff-files --name-status dir2/sub3)" = "" | |
44 | ' | |
45 | ||
46 | test_expect_success 'update did not touch other tracked files' ' | |
47 | test "$(git-diff-files --name-status check)" = "M check" && | |
48 | test "$(git-diff-files --name-status top)" = "M top" | |
49 | ' | |
50 | ||
51 | test_expect_success 'update did not touch untracked files' ' | |
52 | test "$(git-ls-files dir2/other)" = "" | |
53 | ' | |
54 | ||
55 | test_expect_success 'cache tree has not been corrupted' ' | |
56 | ||
57 | git ls-files -s | | |
58 | sed -e "s/ 0 / /" >expect && | |
59 | git ls-tree -r $(git write-tree) | | |
60 | sed -e "s/ blob / /" >current && | |
61 | diff -u expect current | |
62 | ||
63 | ' | |
64 | ||
65 | test_done |