2 * Copyright (c) 2019 Martin Matuska
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 __FBSDID("$FreeBSD$");
28 DEFINE_TEST(test_option_exclude_vcs)
30 assertMakeDir("in", 0755);
32 assertMakeFile("file", 0644, "");
33 assertMakeDir("dir", 0755);
34 assertMakeDir("CVS", 0755);
35 assertMakeFile("CVS/fileattr", 0644, "");
36 assertMakeFile(".cvsignore", 0644, "");
37 assertMakeDir("RCS", 0755);
38 assertMakeFile("RCS/somefile", 0655, "");
39 assertMakeDir("SCCS", 0755);
40 assertMakeFile("SCCS/somefile", 0655, "");
41 assertMakeDir(".svn", 0755);
42 assertMakeFile(".svn/format", 0655, "");
43 assertMakeDir(".git", 0755);
44 assertMakeFile(".git/config", 0655, "");
45 assertMakeFile(".gitignore", 0644, "");
46 assertMakeFile(".gitattributes", 0644, "");
47 assertMakeFile(".gitmodules", 0644, "");
48 assertMakeDir(".arch-ids", 0755);
49 assertMakeFile(".arch-ids/somefile", 0644, "");
50 assertMakeDir("{arch}", 0755);
51 assertMakeFile("{arch}/somefile", 0644, "");
52 assertMakeFile("=RELEASE-ID", 0644, "");
53 assertMakeFile("=meta-update", 0644, "");
54 assertMakeFile("=update", 0644, "");
55 assertMakeDir(".bzr", 0755);
56 assertMakeDir(".bzr/checkout", 0755);
57 assertMakeFile(".bzrignore", 0644, "");
58 assertMakeFile(".bzrtags", 0644, "");
59 assertMakeDir(".hg", 0755);
60 assertMakeFile(".hg/dirstate", 0644, "");
61 assertMakeFile(".hgignore", 0644, "");
62 assertMakeFile(".hgtags", 0644, "");
63 assertMakeDir("_darcs", 0755);
64 assertMakeFile("_darcs/format", 0644, "");
67 assertEqualInt(0, systemf("%s -c -C in -f included.tar .", testprog));
69 systemf("%s -c --exclude-vcs -C in -f excluded.tar .", testprog));
71 /* No flags, archive with vcs files */
72 assertMakeDir("vcs-noexclude", 0755);
73 assertEqualInt(0, systemf("%s -x -C vcs-noexclude -f included.tar",
75 assertChdir("vcs-noexclude");
76 assertFileExists("file");
77 assertIsDir("dir", 0755);
78 assertIsDir("CVS", 0755);
79 assertFileExists("CVS/fileattr");
80 assertFileExists(".cvsignore");
81 assertIsDir("RCS", 0755);
82 assertFileExists("RCS/somefile");
83 assertIsDir("SCCS", 0755);
84 assertFileExists("SCCS/somefile");
85 assertIsDir(".svn", 0755);
86 assertFileExists(".svn/format");
87 assertIsDir(".git", 0755);
88 assertFileExists(".git/config");
89 assertFileExists(".gitignore");
90 assertFileExists(".gitattributes");
91 assertFileExists(".gitmodules");
92 assertIsDir(".arch-ids", 0755);
93 assertFileExists(".arch-ids/somefile");
94 assertIsDir("{arch}", 0755);
95 assertFileExists("{arch}/somefile");
96 assertFileExists("=RELEASE-ID");
97 assertFileExists("=meta-update");
98 assertFileExists("=update");
99 assertIsDir(".bzr", 0755);
100 assertIsDir(".bzr/checkout", 0755);
101 assertFileExists(".bzrignore");
102 assertFileExists(".bzrtags");
103 assertIsDir(".hg", 0755);
104 assertFileExists(".hg/dirstate");
105 assertFileExists(".hgignore");
106 assertFileExists(".hgtags");
107 assertIsDir("_darcs", 0755);
108 assertFileExists("_darcs/format");
111 /* --exclude-vcs, archive with vcs files */
112 assertMakeDir("vcs-exclude", 0755);
114 systemf("%s -x --exclude-vcs -C vcs-exclude -f included.tar", testprog));
115 assertChdir("vcs-exclude");
116 assertFileExists("file");
117 assertIsDir("dir", 0755);
118 assertFileNotExists("CVS");
119 assertFileNotExists("CVS/fileattr");
120 assertFileNotExists(".cvsignore");
121 assertFileNotExists("RCS");
122 assertFileNotExists("RCS/somefile");
123 assertFileNotExists("SCCS");
124 assertFileNotExists("SCCS/somefile");
125 assertFileNotExists(".svn");
126 assertFileNotExists(".svn/format");
127 assertFileNotExists(".git");
128 assertFileNotExists(".git/config");
129 assertFileNotExists(".gitignore");
130 assertFileNotExists(".gitattributes");
131 assertFileNotExists(".gitmodules");
132 assertFileNotExists(".arch-ids");
133 assertFileNotExists(".arch-ids/somefile");
134 assertFileNotExists("{arch}");
135 assertFileNotExists("{arch}/somefile");
136 assertFileNotExists("=RELEASE-ID");
137 assertFileNotExists("=meta-update");
138 assertFileNotExists("=update");
139 assertFileNotExists(".bzr");
140 assertFileNotExists(".bzr/checkout");
141 assertFileNotExists(".bzrignore");
142 assertFileNotExists(".bzrtags");
143 assertFileNotExists(".hg");
144 assertFileNotExists(".hg/dirstate");
145 assertFileNotExists(".hgignore");
146 assertFileNotExists(".hgtags");
147 assertFileNotExists("_darcs");
148 assertFileNotExists("_darcs/format");
151 /* --exclude-vcs, archive without vcs files */
152 assertMakeDir("novcs-exclude", 0755);
154 systemf("%s -x --exclude-vcs -C novcs-exclude -f excluded.tar",
156 assertChdir("novcs-exclude");
157 assertFileExists("file");
158 assertIsDir("dir", 0755);
159 assertFileNotExists("CVS");
160 assertFileNotExists("CVS/fileattr");
161 assertFileNotExists(".cvsignore");
162 assertFileNotExists("RCS");
163 assertFileNotExists("RCS/somefile");
164 assertFileNotExists("SCCS");
165 assertFileNotExists("SCCS/somefile");
166 assertFileNotExists(".svn");
167 assertFileNotExists(".svn/format");
168 assertFileNotExists(".git");
169 assertFileNotExists(".git/config");
170 assertFileNotExists(".gitignore");
171 assertFileNotExists(".gitattributes");
172 assertFileNotExists(".gitmodules");
173 assertFileNotExists(".arch-ids");
174 assertFileNotExists(".arch-ids/somefile");
175 assertFileNotExists("{arch}");
176 assertFileNotExists("{arch}/somefile");
177 assertFileNotExists("=RELEASE-ID");
178 assertFileNotExists("=meta-update");
179 assertFileNotExists("=update");
180 assertFileNotExists(".bzr");
181 assertFileNotExists(".bzr/checkout");
182 assertFileNotExists(".bzrignore");
183 assertFileNotExists(".bzrtags");
184 assertFileNotExists(".hg");
185 assertFileNotExists(".hg/dirstate");
186 assertFileNotExists(".hgignore");
187 assertFileNotExists(".hgtags");
188 assertFileNotExists("_darcs");
189 assertFileNotExists("_darcs/format");
192 /* No flags, archive without vcs files */
193 assertMakeDir("novcs-noexclude", 0755);
195 systemf("%s -x -C novcs-noexclude -f excluded.tar", testprog));
196 assertChdir("novcs-noexclude");
197 assertFileExists("file");
198 assertIsDir("dir", 0755);
199 assertFileNotExists("CVS");
200 assertFileNotExists("CVS/fileattr");
201 assertFileNotExists(".cvsignore");
202 assertFileNotExists("RCS");
203 assertFileNotExists("RCS/somefile");
204 assertFileNotExists("SCCS");
205 assertFileNotExists("SCCS/somefile");
206 assertFileNotExists(".svn");
207 assertFileNotExists(".svn/format");
208 assertFileNotExists(".git");
209 assertFileNotExists(".git/config");
210 assertFileNotExists(".gitignore");
211 assertFileNotExists(".gitattributes");
212 assertFileNotExists(".gitmodules");
213 assertFileNotExists(".arch-ids");
214 assertFileNotExists(".arch-ids/somefile");
215 assertFileNotExists("{arch}");
216 assertFileNotExists("{arch}/somefile");
217 assertFileNotExists("=RELEASE-ID");
218 assertFileNotExists("=meta-update");
219 assertFileNotExists("=update");
220 assertFileNotExists(".bzr");
221 assertFileNotExists(".bzr/checkout");
222 assertFileNotExists(".bzrignore");
223 assertFileNotExists(".bzrtags");
224 assertFileNotExists(".hg");
225 assertFileNotExists(".hg/dirstate");
226 assertFileNotExists(".hgignore");
227 assertFileNotExists(".hgtags");
228 assertFileNotExists("_darcs");
229 assertFileNotExists("_darcs/format");