xref: /freebsd/contrib/libarchive/tar/test/test_option_exclude_vcs.c (revision b64c5a0ace59af62eff52bfe110a521dc73c937b)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2019 Martin Matuska
5  * All rights reserved.
6  */
7 #include "test.h"
8 
9 DEFINE_TEST(test_option_exclude_vcs)
10 {
11 	assertUmask(0);
12 	assertMakeDir("in", 0755);
13 	assertChdir("in");
14 	assertMakeFile("file", 0644, "");
15 	assertMakeDir("dir", 0755);
16 	assertMakeDir("CVS", 0755);
17 	assertMakeFile("CVS/fileattr", 0644, "");
18 	assertMakeFile(".cvsignore", 0644, "");
19 	assertMakeDir("RCS", 0755);
20 	assertMakeFile("RCS/somefile", 0655, "");
21 	assertMakeDir("SCCS", 0755);
22 	assertMakeFile("SCCS/somefile", 0655, "");
23 	assertMakeDir(".svn", 0755);
24 	assertMakeFile(".svn/format", 0655, "");
25 	assertMakeDir(".git", 0755);
26 	assertMakeFile(".git/config", 0655, "");
27 	assertMakeFile(".gitignore", 0644, "");
28 	assertMakeFile(".gitattributes", 0644, "");
29 	assertMakeFile(".gitmodules", 0644, "");
30 	assertMakeDir(".arch-ids", 0755);
31 	assertMakeFile(".arch-ids/somefile", 0644, "");
32 	assertMakeDir("{arch}", 0755);
33 	assertMakeFile("{arch}/somefile", 0644, "");
34 	assertMakeFile("=RELEASE-ID", 0644, "");
35 	assertMakeFile("=meta-update", 0644, "");
36 	assertMakeFile("=update", 0644, "");
37 	assertMakeDir(".bzr", 0755);
38 	assertMakeDir(".bzr/checkout", 0755);
39 	assertMakeFile(".bzrignore", 0644, "");
40 	assertMakeFile(".bzrtags", 0644, "");
41 	assertMakeDir(".hg", 0755);
42 	assertMakeFile(".hg/dirstate", 0644, "");
43 	assertMakeFile(".hgignore", 0644, "");
44 	assertMakeFile(".hgtags", 0644, "");
45 	assertMakeDir("_darcs", 0755);
46 	assertMakeFile("_darcs/format", 0644, "");
47 	assertChdir("..");
48 
49 	assertEqualInt(0, systemf("%s -c -C in -f included.tar .", testprog));
50 	assertEqualInt(0,
51 	    systemf("%s -c --exclude-vcs -C in -f excluded.tar .", testprog));
52 
53 	/* No flags, archive with vcs files */
54 	assertMakeDir("vcs-noexclude", 0755);
55 	assertEqualInt(0, systemf("%s -x -C vcs-noexclude -f included.tar",
56 	    testprog));
57 	assertChdir("vcs-noexclude");
58 	assertFileExists("file");
59 	assertIsDir("dir", 0755);
60 	assertIsDir("CVS", 0755);
61 	assertFileExists("CVS/fileattr");
62 	assertFileExists(".cvsignore");
63 	assertIsDir("RCS", 0755);
64 	assertFileExists("RCS/somefile");
65 	assertIsDir("SCCS", 0755);
66 	assertFileExists("SCCS/somefile");
67 	assertIsDir(".svn", 0755);
68 	assertFileExists(".svn/format");
69 	assertIsDir(".git", 0755);
70 	assertFileExists(".git/config");
71 	assertFileExists(".gitignore");
72 	assertFileExists(".gitattributes");
73 	assertFileExists(".gitmodules");
74 	assertIsDir(".arch-ids", 0755);
75 	assertFileExists(".arch-ids/somefile");
76 	assertIsDir("{arch}", 0755);
77 	assertFileExists("{arch}/somefile");
78 	assertFileExists("=RELEASE-ID");
79 	assertFileExists("=meta-update");
80 	assertFileExists("=update");
81 	assertIsDir(".bzr", 0755);
82 	assertIsDir(".bzr/checkout", 0755);
83 	assertFileExists(".bzrignore");
84 	assertFileExists(".bzrtags");
85 	assertIsDir(".hg", 0755);
86 	assertFileExists(".hg/dirstate");
87 	assertFileExists(".hgignore");
88 	assertFileExists(".hgtags");
89 	assertIsDir("_darcs", 0755);
90 	assertFileExists("_darcs/format");
91 	assertChdir("..");
92 
93 	/* --exclude-vcs, archive with vcs files */
94 	assertMakeDir("vcs-exclude", 0755);
95 	assertEqualInt(0,
96 	    systemf("%s -x --exclude-vcs -C vcs-exclude -f included.tar", testprog));
97 	assertChdir("vcs-exclude");
98 	assertFileExists("file");
99 	assertIsDir("dir", 0755);
100 	assertFileNotExists("CVS");
101 	assertFileNotExists("CVS/fileattr");
102 	assertFileNotExists(".cvsignore");
103 	assertFileNotExists("RCS");
104 	assertFileNotExists("RCS/somefile");
105 	assertFileNotExists("SCCS");
106 	assertFileNotExists("SCCS/somefile");
107 	assertFileNotExists(".svn");
108 	assertFileNotExists(".svn/format");
109 	assertFileNotExists(".git");
110 	assertFileNotExists(".git/config");
111 	assertFileNotExists(".gitignore");
112 	assertFileNotExists(".gitattributes");
113 	assertFileNotExists(".gitmodules");
114 	assertFileNotExists(".arch-ids");
115 	assertFileNotExists(".arch-ids/somefile");
116 	assertFileNotExists("{arch}");
117 	assertFileNotExists("{arch}/somefile");
118 	assertFileNotExists("=RELEASE-ID");
119 	assertFileNotExists("=meta-update");
120 	assertFileNotExists("=update");
121 	assertFileNotExists(".bzr");
122 	assertFileNotExists(".bzr/checkout");
123 	assertFileNotExists(".bzrignore");
124 	assertFileNotExists(".bzrtags");
125 	assertFileNotExists(".hg");
126 	assertFileNotExists(".hg/dirstate");
127 	assertFileNotExists(".hgignore");
128 	assertFileNotExists(".hgtags");
129 	assertFileNotExists("_darcs");
130 	assertFileNotExists("_darcs/format");
131 	assertChdir("..");
132 
133 	/* --exclude-vcs, archive without vcs files */
134 	assertMakeDir("novcs-exclude", 0755);
135 	assertEqualInt(0,
136 	    systemf("%s -x --exclude-vcs -C novcs-exclude -f excluded.tar",
137 	    testprog));
138 	assertChdir("novcs-exclude");
139 	assertFileExists("file");
140 	assertIsDir("dir", 0755);
141 	assertFileNotExists("CVS");
142 	assertFileNotExists("CVS/fileattr");
143 	assertFileNotExists(".cvsignore");
144 	assertFileNotExists("RCS");
145 	assertFileNotExists("RCS/somefile");
146 	assertFileNotExists("SCCS");
147 	assertFileNotExists("SCCS/somefile");
148 	assertFileNotExists(".svn");
149 	assertFileNotExists(".svn/format");
150 	assertFileNotExists(".git");
151 	assertFileNotExists(".git/config");
152 	assertFileNotExists(".gitignore");
153 	assertFileNotExists(".gitattributes");
154 	assertFileNotExists(".gitmodules");
155 	assertFileNotExists(".arch-ids");
156 	assertFileNotExists(".arch-ids/somefile");
157 	assertFileNotExists("{arch}");
158 	assertFileNotExists("{arch}/somefile");
159 	assertFileNotExists("=RELEASE-ID");
160 	assertFileNotExists("=meta-update");
161 	assertFileNotExists("=update");
162 	assertFileNotExists(".bzr");
163 	assertFileNotExists(".bzr/checkout");
164 	assertFileNotExists(".bzrignore");
165 	assertFileNotExists(".bzrtags");
166 	assertFileNotExists(".hg");
167 	assertFileNotExists(".hg/dirstate");
168 	assertFileNotExists(".hgignore");
169 	assertFileNotExists(".hgtags");
170 	assertFileNotExists("_darcs");
171 	assertFileNotExists("_darcs/format");
172 	assertChdir("..");
173 
174 	/* No flags, archive without vcs files */
175 	assertMakeDir("novcs-noexclude", 0755);
176 	assertEqualInt(0,
177 	    systemf("%s -x -C novcs-noexclude -f excluded.tar", testprog));
178 	assertChdir("novcs-noexclude");
179 	assertFileExists("file");
180 	assertIsDir("dir", 0755);
181 	assertFileNotExists("CVS");
182 	assertFileNotExists("CVS/fileattr");
183 	assertFileNotExists(".cvsignore");
184 	assertFileNotExists("RCS");
185 	assertFileNotExists("RCS/somefile");
186 	assertFileNotExists("SCCS");
187 	assertFileNotExists("SCCS/somefile");
188 	assertFileNotExists(".svn");
189 	assertFileNotExists(".svn/format");
190 	assertFileNotExists(".git");
191 	assertFileNotExists(".git/config");
192 	assertFileNotExists(".gitignore");
193 	assertFileNotExists(".gitattributes");
194 	assertFileNotExists(".gitmodules");
195 	assertFileNotExists(".arch-ids");
196 	assertFileNotExists(".arch-ids/somefile");
197 	assertFileNotExists("{arch}");
198 	assertFileNotExists("{arch}/somefile");
199 	assertFileNotExists("=RELEASE-ID");
200 	assertFileNotExists("=meta-update");
201 	assertFileNotExists("=update");
202 	assertFileNotExists(".bzr");
203 	assertFileNotExists(".bzr/checkout");
204 	assertFileNotExists(".bzrignore");
205 	assertFileNotExists(".bzrtags");
206 	assertFileNotExists(".hg");
207 	assertFileNotExists(".hg/dirstate");
208 	assertFileNotExists(".hgignore");
209 	assertFileNotExists(".hgtags");
210 	assertFileNotExists("_darcs");
211 	assertFileNotExists("_darcs/format");
212 }
213