test_option_exclude_vcs.c revision 348607
1/*-
2 * Copyright (c) 2019 Martin Matuska
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
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.
13 *
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.
24 */
25#include "test.h"
26__FBSDID("$FreeBSD: stable/11/contrib/libarchive/tar/test/test_option_exclude_vcs.c 348607 2019-06-04 10:35:54Z mm $");
27
28DEFINE_TEST(test_option_exclude_vcs)
29{
30	assertMakeDir("in", 0755);
31	assertChdir("in");
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, "");
65	assertChdir("..");
66
67	assertEqualInt(0, systemf("%s -c -C in -f included.tar .", testprog));
68	assertEqualInt(0,
69	    systemf("%s -c --exclude-vcs -C in -f excluded.tar .", testprog));
70
71	/* No flags, archive with vcs files */
72	assertMakeDir("vcs-noexclude", 0755);
73	assertEqualInt(0, systemf("%s -x -C vcs-noexclude -f included.tar",
74	    testprog));
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");
109	assertChdir("..");
110
111	/* --exclude-vcs, archive with vcs files */
112	assertMakeDir("vcs-exclude", 0755);
113	assertEqualInt(0,
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");
149	assertChdir("..");
150
151	/* --exclude-vcs, archive without vcs files */
152	assertMakeDir("novcs-exclude", 0755);
153	assertEqualInt(0,
154	    systemf("%s -x --exclude-vcs -C novcs-exclude -f excluded.tar",
155	    testprog));
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");
190	assertChdir("..");
191
192	/* No flags, archive without vcs files */
193	assertMakeDir("novcs-noexclude", 0755);
194	assertEqualInt(0,
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");
230}
231