1 17 package org.apache.tools.ant.taskdefs.optional.sos; 18 19 import java.io.File ; 20 21 import org.apache.tools.ant.BuildFileTest; 22 import org.apache.tools.ant.Project; 23 import org.apache.tools.ant.types.Commandline; 24 import org.apache.tools.ant.types.Path; 25 26 31 public class SOSTest extends BuildFileTest { 32 33 private Project project; 34 private Commandline commandline; 35 36 private static final String VSS_SERVER_PATH = "\\\\server\\vss\\srcsafe.ini"; 37 private static final String VSS_PROJECT_PATH = "/SourceRoot/Project"; 38 private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project"; 39 private static final String SOS_SERVER_PATH = "192.168.0.1:8888"; 40 private static final String SOS_USERNAME = "ant"; 41 private static final String SOS_PASSWORD = "rocks"; 42 private static final String LOCAL_PATH = "testdir"; 43 private static final String SRC_FILE = "Class1.java"; 44 private static final String SRC_LABEL = "label1"; 45 private static final String SRC_COMMENT = "I fixed a bug"; 46 private static final String SOS_HOME = "/home/user/.sos"; 47 private static final String VERSION = "007"; 48 49 54 public SOSTest(String s) { 55 super(s); 56 } 57 58 63 protected void setUp() 64 throws Exception { 65 project = new Project(); 66 project.setBasedir("."); 67 } 68 69 74 protected void tearDown() 75 throws Exception { 76 File file = new File (project.getBaseDir(), LOCAL_PATH); 77 if (file.exists()) { 78 file.delete(); 79 } 80 } 81 82 83 public void testGetFileFlags() { 84 String [] sTestCmdLine = {"soscmd", "-command", "GetFile", "-file", 85 SRC_FILE, "-revision", "007", "-server", SOS_SERVER_PATH, "-name", 86 SOS_USERNAME, "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, 87 "-project", DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", 88 "-nocache", "-workdir", project.getBaseDir().getAbsolutePath() 89 + File.separator + LOCAL_PATH}; 90 91 SOSGet sosGet = new SOSGet(); 93 sosGet.setProject(project); 94 sosGet.setVssServerPath(VSS_SERVER_PATH); 95 sosGet.setSosServerPath(SOS_SERVER_PATH); 96 sosGet.setProjectPath(VSS_PROJECT_PATH); 97 sosGet.setFile(SRC_FILE); 98 sosGet.setUsername(SOS_USERNAME); 99 sosGet.setPassword(SOS_PASSWORD); 100 sosGet.setVersion(VERSION); 101 sosGet.setLocalPath(new Path(project, LOCAL_PATH)); 102 sosGet.setNoCache(true); 103 sosGet.setNoCompress(true); 104 sosGet.setVerbose(true); 105 sosGet.setRecursive(true); 106 107 commandline = sosGet.buildCmdLine(); 108 109 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 110 } 111 112 113 public void testGetProjectFlags() { 114 String [] sTestCmdLine = {"soscmd", "-command", "GetProject", "-recursive", 115 "-label", SRC_LABEL, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, 116 "-password", "", "-database", VSS_SERVER_PATH, "-project", 117 DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", 118 project.getBaseDir().getAbsolutePath()}; 119 120 SOSGet sosGet = new SOSGet(); 122 sosGet.setProject(project); 123 sosGet.setVssServerPath(VSS_SERVER_PATH); 124 sosGet.setSosServerPath(SOS_SERVER_PATH); 125 sosGet.setProjectPath(DS_VSS_PROJECT_PATH); 126 sosGet.setLabel(SRC_LABEL); 127 sosGet.setUsername(SOS_USERNAME); 128 sosGet.setSosHome(SOS_HOME); 129 sosGet.setNoCache(true); 130 sosGet.setNoCompress(false); 131 sosGet.setVerbose(false); 132 sosGet.setRecursive(true); 133 134 commandline = sosGet.buildCmdLine(); 135 136 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 137 } 138 139 140 public void testGetExceptions() { 141 configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); 142 expectSpecificBuildException("sosget.1", "some cause", "sosserverpath attribute must be set!"); 143 expectSpecificBuildException("sosget.2", "some cause", "username attribute must be set!"); 144 expectSpecificBuildException("sosget.3", "some cause", "vssserverpath attribute must be set!"); 145 expectSpecificBuildException("sosget.4", "some cause", "projectpath attribute must be set!"); 146 } 147 148 149 public void testCheckinFileFlags() { 150 String [] sTestCmdLine = {"soscmd", "-command", "CheckInFile", "-file", 151 SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, 152 "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", 153 DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", 154 "-workdir", project.getBaseDir().getAbsolutePath() + File.separator 155 + LOCAL_PATH, "-log", SRC_COMMENT}; 156 157 SOSCheckin sosCheckin = new SOSCheckin(); 159 sosCheckin.setProject(project); 160 sosCheckin.setVssServerPath(VSS_SERVER_PATH); 161 sosCheckin.setSosServerPath(SOS_SERVER_PATH); 162 sosCheckin.setProjectPath(VSS_PROJECT_PATH); 163 sosCheckin.setFile(SRC_FILE); 164 sosCheckin.setComment(SRC_COMMENT); 165 sosCheckin.setUsername(SOS_USERNAME); 166 sosCheckin.setPassword(SOS_PASSWORD); 167 sosCheckin.setLocalPath(new Path(project, LOCAL_PATH)); 168 sosCheckin.setNoCache(true); 169 sosCheckin.setNoCompress(true); 170 sosCheckin.setVerbose(true); 171 sosCheckin.setRecursive(true); 172 173 commandline = sosCheckin.buildCmdLine(); 174 175 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 176 } 177 178 179 public void testCheckinProjectFlags() { 180 String [] sTestCmdLine = {"soscmd", "-command", "CheckInProject", 181 "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, 182 "-password", "", "-database", VSS_SERVER_PATH, "-project", 183 DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", 184 project.getBaseDir().getAbsolutePath(), "-log", SRC_COMMENT,}; 185 186 SOSCheckin sosCheckin = new SOSCheckin(); 188 sosCheckin.setProject(project); 189 sosCheckin.setVssServerPath(VSS_SERVER_PATH); 190 sosCheckin.setSosServerPath(SOS_SERVER_PATH); 191 sosCheckin.setProjectPath(DS_VSS_PROJECT_PATH); 192 sosCheckin.setComment(SRC_COMMENT); 193 sosCheckin.setUsername(SOS_USERNAME); 194 sosCheckin.setSosHome(SOS_HOME); 195 sosCheckin.setNoCache(true); 196 sosCheckin.setNoCompress(false); 197 sosCheckin.setVerbose(false); 198 sosCheckin.setRecursive(true); 199 200 commandline = sosCheckin.buildCmdLine(); 201 202 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 203 } 204 205 206 public void testCheckinExceptions() { 207 configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); 208 expectSpecificBuildException("soscheckin.1", "some cause", "sosserverpath attribute must be set!"); 209 expectSpecificBuildException("soscheckin.2", "some cause", "username attribute must be set!"); 210 expectSpecificBuildException("soscheckin.3", "some cause", "vssserverpath attribute must be set!"); 211 expectSpecificBuildException("soscheckin.4", "some cause", "projectpath attribute must be set!"); 212 } 213 214 215 public void testCheckoutFileFlags() { 216 String [] sTestCmdLine = {"soscmd", "-command", "CheckOutFile", "-file", 217 SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, 218 "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", 219 DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", 220 "-workdir", project.getBaseDir().getAbsolutePath() 221 + File.separator + LOCAL_PATH}; 222 223 SOSCheckout sosCheckout = new SOSCheckout(); 225 sosCheckout.setProject(project); 226 sosCheckout.setVssServerPath(VSS_SERVER_PATH); 227 sosCheckout.setSosServerPath(SOS_SERVER_PATH); 228 sosCheckout.setProjectPath(DS_VSS_PROJECT_PATH); 229 sosCheckout.setFile(SRC_FILE); 230 sosCheckout.setUsername(SOS_USERNAME); 231 sosCheckout.setPassword(SOS_PASSWORD); 232 sosCheckout.setLocalPath(new Path(project, LOCAL_PATH)); 233 sosCheckout.setNoCache(true); 234 sosCheckout.setNoCompress(true); 235 sosCheckout.setVerbose(true); 236 sosCheckout.setRecursive(true); 237 238 commandline = sosCheckout.buildCmdLine(); 239 240 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 241 } 242 243 244 public void testCheckoutProjectFlags() { 245 String [] sTestCmdLine = {"soscmd", "-command", "CheckOutProject", 246 "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, 247 "-password", "", "-database", VSS_SERVER_PATH, "-project", 248 DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", 249 project.getBaseDir().getAbsolutePath()}; 250 251 SOSCheckout sosCheckout = new SOSCheckout(); 253 sosCheckout.setProject(project); 254 sosCheckout.setVssServerPath(VSS_SERVER_PATH); 255 sosCheckout.setSosServerPath(SOS_SERVER_PATH); 256 sosCheckout.setProjectPath(VSS_PROJECT_PATH); 257 sosCheckout.setUsername(SOS_USERNAME); 258 sosCheckout.setSosHome(SOS_HOME); 259 sosCheckout.setNoCache(true); 260 sosCheckout.setNoCompress(false); 261 sosCheckout.setVerbose(false); 262 sosCheckout.setRecursive(true); 263 264 commandline = sosCheckout.buildCmdLine(); 265 266 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 267 } 268 269 270 public void testCheckoutExceptions() { 271 configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); 272 expectSpecificBuildException("soscheckout.1", "some cause", "sosserverpath attribute must be set!"); 273 expectSpecificBuildException("soscheckout.2", "some cause", "username attribute must be set!"); 274 expectSpecificBuildException("soscheckout.3", "some cause", "vssserverpath attribute must be set!"); 275 expectSpecificBuildException("soscheckout.4", "some cause", "projectpath attribute must be set!"); 276 } 277 278 279 public void testLabelFlags() { 280 String [] sTestCmdLine = {"soscmd", "-command", "AddLabel", "-server", 281 SOS_SERVER_PATH, "-name", SOS_USERNAME, "-password", "", "-database", 282 VSS_SERVER_PATH, "-project", DS_VSS_PROJECT_PATH, "-label", 283 SRC_LABEL, "-verbose", "-log", SRC_COMMENT}; 284 285 SOSLabel sosLabel = new SOSLabel(); 287 sosLabel.setVssServerPath(VSS_SERVER_PATH); 288 sosLabel.setSosServerPath(SOS_SERVER_PATH); 289 sosLabel.setProjectPath(DS_VSS_PROJECT_PATH); 290 sosLabel.setUsername(SOS_USERNAME); 291 sosLabel.setSosHome(SOS_HOME); 292 sosLabel.setComment(SRC_COMMENT); 293 sosLabel.setLabel(SRC_LABEL); 294 sosLabel.setNoCache(true); 295 sosLabel.setNoCompress(false); 296 sosLabel.setVerbose(true); 297 298 commandline = sosLabel.buildCmdLine(); 299 300 checkCommandLines(sTestCmdLine, commandline.getCommandline()); 301 } 302 303 304 public void testLabelExceptions() { 305 configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); 306 expectSpecificBuildException("soslabel.1", "some cause", "sosserverpath attribute must be set!"); 307 expectSpecificBuildException("soslabel.2", "some cause", "username attribute must be set!"); 308 expectSpecificBuildException("soslabel.3", "some cause", "vssserverpath attribute must be set!"); 309 expectSpecificBuildException("soslabel.4", "some cause", "projectpath attribute must be set!"); 310 expectSpecificBuildException("soslabel.5", "some cause", "label attribute must be set!"); 311 } 312 313 320 private void checkCommandLines(String [] sTestCmdLine, String [] sGeneratedCmdLine) { 321 int length = sTestCmdLine.length; 322 for (int i = 0; i < length; i++) { 323 try { 324 assertEquals("arg # " + String.valueOf(i), 325 sTestCmdLine[i], 326 sGeneratedCmdLine[i]); 327 } catch (ArrayIndexOutOfBoundsException aioob) { 328 fail("missing arg " + sTestCmdLine[i]); 329 } 330 } 331 if (sGeneratedCmdLine.length > sTestCmdLine.length) { 332 fail("extra args"); 334 } 335 } 336 } 337 | Popular Tags |