Merge branch 'jc/sparse-error-for-developer-build'
[git] / t / t9817-git-p4-exclude.sh
1 #!/bin/sh
2
3 test_description='git p4 tests for excluded paths during clone and sync'
4
5 . ./lib-git-p4.sh
6
7 test_expect_success 'start p4d' '
8         start_p4d
9 '
10
11 # Create a repo with the structure:
12 #
13 #    //depot/wanted/foo
14 #    //depot/discard/foo
15 #
16 # Check that we can exclude a subdirectory with both
17 # clone and sync operations.
18
19 test_expect_success 'create exclude repo' '
20         (
21                 cd "$cli" &&
22                 mkdir -p wanted discard &&
23                 echo wanted >wanted/foo &&
24                 echo discard >discard/foo &&
25                 echo discard_file >discard_file &&
26                 echo discard_file_not >discard_file_not &&
27                 p4 add wanted/foo discard/foo discard_file discard_file_not &&
28                 p4 submit -d "initial revision"
29         )
30 '
31
32 test_expect_success 'check the repo was created correctly' '
33         test_when_finished cleanup_git &&
34         git p4 clone --dest="$git" //depot/...@all &&
35         (
36                 cd "$git" &&
37                 test_path_is_file wanted/foo &&
38                 test_path_is_file discard/foo &&
39                 test_path_is_file discard_file &&
40                 test_path_is_file discard_file_not
41         )
42 '
43
44 test_expect_success 'clone, excluding part of repo' '
45         test_when_finished cleanup_git &&
46         git p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&
47         (
48                 cd "$git" &&
49                 test_path_is_file wanted/foo &&
50                 test_path_is_missing discard/foo &&
51                 test_path_is_file discard_file &&
52                 test_path_is_file discard_file_not
53         )
54 '
55
56 test_expect_success 'clone, excluding single file, no trailing /' '
57         test_when_finished cleanup_git &&
58         git p4 clone -//depot/discard_file --dest="$git" //depot/...@all &&
59         (
60                 cd "$git" &&
61                 test_path_is_file wanted/foo &&
62                 test_path_is_file discard/foo &&
63                 test_path_is_missing discard_file &&
64                 test_path_is_file discard_file_not
65         )
66 '
67
68 test_expect_success 'clone, then sync with exclude' '
69         test_when_finished cleanup_git &&
70         git p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&
71         (
72                 cd "$cli" &&
73                 p4 edit wanted/foo discard/foo discard_file_not &&
74                 date >>wanted/foo &&
75                 date >>discard/foo &&
76                 date >>discard_file_not &&
77                 p4 submit -d "updating" &&
78
79                 cd "$git" &&
80                 git p4 sync -//depot/discard/... &&
81                 test_path_is_file wanted/foo &&
82                 test_path_is_missing discard/foo &&
83                 test_path_is_file discard_file &&
84                 test_path_is_file discard_file_not
85         )
86 '
87
88 test_expect_success 'clone, then sync with exclude, no trailing /' '
89         test_when_finished cleanup_git &&
90         git p4 clone -//depot/discard/... -//depot/discard_file --dest="$git" //depot/...@all &&
91         (
92                 cd "$cli" &&
93                 p4 edit wanted/foo discard/foo discard_file_not &&
94                 date >>wanted/foo &&
95                 date >>discard/foo &&
96                 date >>discard_file_not &&
97                 p4 submit -d "updating" &&
98
99                 cd "$git" &&
100                 git p4 sync -//depot/discard/... -//depot/discard_file &&
101                 test_path_is_file wanted/foo &&
102                 test_path_is_missing discard/foo &&
103                 test_path_is_missing discard_file &&
104                 test_path_is_file discard_file_not
105         )
106 '
107
108 test_done