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 27 DEFINE_TEST(test_option_exclude_vcs) 28 { 29 assertUmask(0); 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