You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by gi...@apache.org on 2017/11/29 22:06:12 UTC
[16/22] ant git commit: Normalise tabulation and line breaks (cf
master)
http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/taskdefs/optional/sos/SOSTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/sos/SOSTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/sos/SOSTest.java
index aebc9e2..c45ec17 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/sos/SOSTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/sos/SOSTest.java
@@ -1,351 +1,351 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.tools.ant.taskdefs.optional.sos;
-
-import java.io.File;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildFileRule;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * Testcase to ensure that command line generation and required attributes are
- * correct.
- *
- */
-public class SOSTest {
-
- private Commandline commandline;
-
- private static final String VSS_SERVER_PATH = "\\\\server\\vss\\srcsafe.ini";
- private static final String VSS_PROJECT_PATH = "/SourceRoot/Project";
- private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project";
- private static final String SOS_SERVER_PATH = "192.168.0.1:8888";
- private static final String SOS_USERNAME = "ant";
- private static final String SOS_PASSWORD = "rocks";
- private static final String LOCAL_PATH = "testdir";
- private static final String SRC_FILE = "Class1.java";
- private static final String SRC_LABEL = "label1";
- private static final String SRC_COMMENT = "I fixed a bug";
- private static final String SOS_HOME = "/home/user/.sos";
- private static final String VERSION = "007";
-
- @Rule
- public BuildFileRule buildRule = new BuildFileRule();
- private Project project;
-
- @Before
- public void setUp() {
- project = new Project();
- project.init();
- project.setBasedir(".");
- }
-
- @After
- public void tearDown() {
- File file = new File(project.getBaseDir(), LOCAL_PATH);
- if (file.exists()) {
- file.delete();
- }
- }
-
- /** Test SOSGetFile flags & commandline generation */
- @Test
- public void testGetFileFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "GetFile", "-file",
- SRC_FILE, "-revision", "007", "-server", SOS_SERVER_PATH, "-name",
- SOS_USERNAME, "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH,
- "-project", DS_VSS_PROJECT_PATH, "-verbose", "-nocompress",
- "-nocache", "-workdir", project.getBaseDir().getAbsolutePath()
- + File.separator + LOCAL_PATH};
-
- // Set up a SOSGet task
- SOSGet sosGet = new SOSGet();
- sosGet.setProject(project);
- sosGet.setVssServerPath(VSS_SERVER_PATH);
- sosGet.setSosServerPath(SOS_SERVER_PATH);
- sosGet.setProjectPath(VSS_PROJECT_PATH);
- sosGet.setFile(SRC_FILE);
- sosGet.setUsername(SOS_USERNAME);
- sosGet.setPassword(SOS_PASSWORD);
- sosGet.setVersion(VERSION);
- sosGet.setLocalPath(new Path(project, LOCAL_PATH));
- sosGet.setNoCache(true);
- sosGet.setNoCompress(true);
- sosGet.setVerbose(true);
- sosGet.setRecursive(true);
-
- commandline = sosGet.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test SOSGetProject flags & commandline generation */
- @Test
- public void testGetProjectFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "GetProject", "-recursive",
- "-label", SRC_LABEL, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
- "-password", "", "-database", VSS_SERVER_PATH, "-project",
- DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
- project.getBaseDir().getAbsolutePath()};
-
- // Set up a SOSGet task
- SOSGet sosGet = new SOSGet();
- sosGet.setProject(project);
- sosGet.setVssServerPath(VSS_SERVER_PATH);
- sosGet.setSosServerPath(SOS_SERVER_PATH);
- sosGet.setProjectPath(DS_VSS_PROJECT_PATH);
- sosGet.setLabel(SRC_LABEL);
- sosGet.setUsername(SOS_USERNAME);
- sosGet.setSosHome(SOS_HOME);
- sosGet.setNoCache(true);
- sosGet.setNoCompress(false);
- sosGet.setVerbose(false);
- sosGet.setRecursive(true);
-
- commandline = sosGet.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Tests SOSGet required attributes. */
- @Test
- public void testGetExceptions() {
- buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
- expectSpecificBuildException("sosget.1", "some cause", "sosserverpath attribute must be set!");
- expectSpecificBuildException("sosget.2", "some cause", "username attribute must be set!");
- expectSpecificBuildException("sosget.3", "some cause", "vssserverpath attribute must be set!");
- expectSpecificBuildException("sosget.4", "some cause", "projectpath attribute must be set!");
- }
-
- /** Test CheckInFile option flags */
- @Test
- public void testCheckinFileFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "CheckInFile", "-file",
- SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
- "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project",
- DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache",
- "-workdir", project.getBaseDir().getAbsolutePath() + File.separator
- + LOCAL_PATH, "-log", SRC_COMMENT};
-
- // Set up a SOSCheckin task
- SOSCheckin sosCheckin = new SOSCheckin();
- sosCheckin.setProject(project);
- sosCheckin.setVssServerPath(VSS_SERVER_PATH);
- sosCheckin.setSosServerPath(SOS_SERVER_PATH);
- sosCheckin.setProjectPath(VSS_PROJECT_PATH);
- sosCheckin.setFile(SRC_FILE);
- sosCheckin.setComment(SRC_COMMENT);
- sosCheckin.setUsername(SOS_USERNAME);
- sosCheckin.setPassword(SOS_PASSWORD);
- sosCheckin.setLocalPath(new Path(project, LOCAL_PATH));
- sosCheckin.setNoCache(true);
- sosCheckin.setNoCompress(true);
- sosCheckin.setVerbose(true);
- sosCheckin.setRecursive(true);
-
- commandline = sosCheckin.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test CheckInProject option flags */
- @Test
- public void testCheckinProjectFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "CheckInProject",
- "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
- "-password", "", "-database", VSS_SERVER_PATH, "-project",
- DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
- project.getBaseDir().getAbsolutePath(), "-log", SRC_COMMENT,};
-
- // Set up a SOSCheckin task
- SOSCheckin sosCheckin = new SOSCheckin();
- sosCheckin.setProject(project);
- sosCheckin.setVssServerPath(VSS_SERVER_PATH);
- sosCheckin.setSosServerPath(SOS_SERVER_PATH);
- sosCheckin.setProjectPath(DS_VSS_PROJECT_PATH);
- sosCheckin.setComment(SRC_COMMENT);
- sosCheckin.setUsername(SOS_USERNAME);
- sosCheckin.setSosHome(SOS_HOME);
- sosCheckin.setNoCache(true);
- sosCheckin.setNoCompress(false);
- sosCheckin.setVerbose(false);
- sosCheckin.setRecursive(true);
-
- commandline = sosCheckin.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test SOSCheckIn required attributes. */
- @Test
- public void testCheckinExceptions() {
- buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
- expectSpecificBuildException("soscheckin.1", "some cause", "sosserverpath attribute must be set!");
- expectSpecificBuildException("soscheckin.2", "some cause", "username attribute must be set!");
- expectSpecificBuildException("soscheckin.3", "some cause", "vssserverpath attribute must be set!");
- expectSpecificBuildException("soscheckin.4", "some cause", "projectpath attribute must be set!");
- }
-
- /** Test CheckOutFile option flags */
- @Test
- public void testCheckoutFileFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "CheckOutFile", "-file",
- SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
- "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project",
- DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache",
- "-workdir", project.getBaseDir().getAbsolutePath()
- + File.separator + LOCAL_PATH};
-
- // Set up a SOSCheckout task
- SOSCheckout sosCheckout = new SOSCheckout();
- sosCheckout.setProject(project);
- sosCheckout.setVssServerPath(VSS_SERVER_PATH);
- sosCheckout.setSosServerPath(SOS_SERVER_PATH);
- sosCheckout.setProjectPath(DS_VSS_PROJECT_PATH);
- sosCheckout.setFile(SRC_FILE);
- sosCheckout.setUsername(SOS_USERNAME);
- sosCheckout.setPassword(SOS_PASSWORD);
- sosCheckout.setLocalPath(new Path(project, LOCAL_PATH));
- sosCheckout.setNoCache(true);
- sosCheckout.setNoCompress(true);
- sosCheckout.setVerbose(true);
- sosCheckout.setRecursive(true);
-
- commandline = sosCheckout.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test CheckOutProject option flags */
- @Test
- public void testCheckoutProjectFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "CheckOutProject",
- "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
- "-password", "", "-database", VSS_SERVER_PATH, "-project",
- DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
- project.getBaseDir().getAbsolutePath()};
-
- // Set up a sosCheckout task
- SOSCheckout sosCheckout = new SOSCheckout();
- sosCheckout.setProject(project);
- sosCheckout.setVssServerPath(VSS_SERVER_PATH);
- sosCheckout.setSosServerPath(SOS_SERVER_PATH);
- sosCheckout.setProjectPath(VSS_PROJECT_PATH);
- sosCheckout.setUsername(SOS_USERNAME);
- sosCheckout.setSosHome(SOS_HOME);
- sosCheckout.setNoCache(true);
- sosCheckout.setNoCompress(false);
- sosCheckout.setVerbose(false);
- sosCheckout.setRecursive(true);
-
- commandline = sosCheckout.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test SOSCheckout required attributes. */
- @Test
- public void testCheckoutExceptions() {
- buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
- expectSpecificBuildException("soscheckout.1", "some cause", "sosserverpath attribute must be set!");
- expectSpecificBuildException("soscheckout.2", "some cause", "username attribute must be set!");
- expectSpecificBuildException("soscheckout.3", "some cause", "vssserverpath attribute must be set!");
- expectSpecificBuildException("soscheckout.4", "some cause", "projectpath attribute must be set!");
- }
-
- /** Test Label option flags */
- @Test
- public void testLabelFlags() {
- String[] sTestCmdLine = {"soscmd", "-command", "AddLabel", "-server",
- SOS_SERVER_PATH, "-name", SOS_USERNAME, "-password", "", "-database",
- VSS_SERVER_PATH, "-project", DS_VSS_PROJECT_PATH, "-label",
- SRC_LABEL, "-verbose", "-log", SRC_COMMENT};
-
- // Set up a sosCheckout task
- SOSLabel sosLabel = new SOSLabel();
- sosLabel.setVssServerPath(VSS_SERVER_PATH);
- sosLabel.setSosServerPath(SOS_SERVER_PATH);
- sosLabel.setProjectPath(DS_VSS_PROJECT_PATH);
- sosLabel.setUsername(SOS_USERNAME);
- sosLabel.setSosHome(SOS_HOME);
- sosLabel.setComment(SRC_COMMENT);
- sosLabel.setLabel(SRC_LABEL);
- sosLabel.setNoCache(true);
- sosLabel.setNoCompress(false);
- sosLabel.setVerbose(true);
-
- commandline = sosLabel.buildCmdLine();
-
- checkCommandLines(sTestCmdLine, commandline.getCommandline());
- }
-
- /** Test SOSLabel required attributes. */
- @Test
- public void testLabelExceptions() {
- buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
- expectSpecificBuildException("soslabel.1", "some cause", "sosserverpath attribute must be set!");
- expectSpecificBuildException("soslabel.2", "some cause", "username attribute must be set!");
- expectSpecificBuildException("soslabel.3", "some cause", "vssserverpath attribute must be set!");
- expectSpecificBuildException("soslabel.4", "some cause", "projectpath attribute must be set!");
- expectSpecificBuildException("soslabel.5", "some cause", "label attribute must be set!");
- }
-
- private void expectSpecificBuildException(String target, String errorMessage,
- String exceptionMessage) {
- try {
- buildRule.executeTarget(target);
- fail(errorMessage);
- } catch(BuildException ex) {
- assertEquals(exceptionMessage, ex.getMessage());
- }
- }
-
- /**
- * Iterate through the generated command line comparing it to reference
- * one.
- *
- * @param sTestCmdLine The reference command line;
- * @param sGeneratedCmdLine The generated command line;
- */
- private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) {
- int length = sTestCmdLine.length;
- for (int i = 0; i < length; i++) {
- try {
- assertEquals("arg # " + String.valueOf(i),
- sTestCmdLine[i],
- sGeneratedCmdLine[i]);
- } catch (ArrayIndexOutOfBoundsException aioob) {
- fail("missing arg " + sTestCmdLine[i]);
- }
- }
- if (sGeneratedCmdLine.length > sTestCmdLine.length) {
- // We have extra elements
- fail("extra args");
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.taskdefs.optional.sos;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildFileRule;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Commandline;
+import org.apache.tools.ant.types.Path;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+/**
+ * Testcase to ensure that command line generation and required attributes are
+ * correct.
+ *
+ */
+public class SOSTest {
+
+ private Commandline commandline;
+
+ private static final String VSS_SERVER_PATH = "\\\\server\\vss\\srcsafe.ini";
+ private static final String VSS_PROJECT_PATH = "/SourceRoot/Project";
+ private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project";
+ private static final String SOS_SERVER_PATH = "192.168.0.1:8888";
+ private static final String SOS_USERNAME = "ant";
+ private static final String SOS_PASSWORD = "rocks";
+ private static final String LOCAL_PATH = "testdir";
+ private static final String SRC_FILE = "Class1.java";
+ private static final String SRC_LABEL = "label1";
+ private static final String SRC_COMMENT = "I fixed a bug";
+ private static final String SOS_HOME = "/home/user/.sos";
+ private static final String VERSION = "007";
+
+ @Rule
+ public BuildFileRule buildRule = new BuildFileRule();
+ private Project project;
+
+ @Before
+ public void setUp() {
+ project = new Project();
+ project.init();
+ project.setBasedir(".");
+ }
+
+ @After
+ public void tearDown() {
+ File file = new File(project.getBaseDir(), LOCAL_PATH);
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+
+ /** Test SOSGetFile flags & commandline generation */
+ @Test
+ public void testGetFileFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "GetFile", "-file",
+ SRC_FILE, "-revision", "007", "-server", SOS_SERVER_PATH, "-name",
+ SOS_USERNAME, "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH,
+ "-project", DS_VSS_PROJECT_PATH, "-verbose", "-nocompress",
+ "-nocache", "-workdir", project.getBaseDir().getAbsolutePath()
+ + File.separator + LOCAL_PATH};
+
+ // Set up a SOSGet task
+ SOSGet sosGet = new SOSGet();
+ sosGet.setProject(project);
+ sosGet.setVssServerPath(VSS_SERVER_PATH);
+ sosGet.setSosServerPath(SOS_SERVER_PATH);
+ sosGet.setProjectPath(VSS_PROJECT_PATH);
+ sosGet.setFile(SRC_FILE);
+ sosGet.setUsername(SOS_USERNAME);
+ sosGet.setPassword(SOS_PASSWORD);
+ sosGet.setVersion(VERSION);
+ sosGet.setLocalPath(new Path(project, LOCAL_PATH));
+ sosGet.setNoCache(true);
+ sosGet.setNoCompress(true);
+ sosGet.setVerbose(true);
+ sosGet.setRecursive(true);
+
+ commandline = sosGet.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test SOSGetProject flags & commandline generation */
+ @Test
+ public void testGetProjectFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "GetProject", "-recursive",
+ "-label", SRC_LABEL, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
+ "-password", "", "-database", VSS_SERVER_PATH, "-project",
+ DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
+ project.getBaseDir().getAbsolutePath()};
+
+ // Set up a SOSGet task
+ SOSGet sosGet = new SOSGet();
+ sosGet.setProject(project);
+ sosGet.setVssServerPath(VSS_SERVER_PATH);
+ sosGet.setSosServerPath(SOS_SERVER_PATH);
+ sosGet.setProjectPath(DS_VSS_PROJECT_PATH);
+ sosGet.setLabel(SRC_LABEL);
+ sosGet.setUsername(SOS_USERNAME);
+ sosGet.setSosHome(SOS_HOME);
+ sosGet.setNoCache(true);
+ sosGet.setNoCompress(false);
+ sosGet.setVerbose(false);
+ sosGet.setRecursive(true);
+
+ commandline = sosGet.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Tests SOSGet required attributes. */
+ @Test
+ public void testGetExceptions() {
+ buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
+ expectSpecificBuildException("sosget.1", "some cause", "sosserverpath attribute must be set!");
+ expectSpecificBuildException("sosget.2", "some cause", "username attribute must be set!");
+ expectSpecificBuildException("sosget.3", "some cause", "vssserverpath attribute must be set!");
+ expectSpecificBuildException("sosget.4", "some cause", "projectpath attribute must be set!");
+ }
+
+ /** Test CheckInFile option flags */
+ @Test
+ public void testCheckinFileFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "CheckInFile", "-file",
+ SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
+ "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project",
+ DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache",
+ "-workdir", project.getBaseDir().getAbsolutePath() + File.separator
+ + LOCAL_PATH, "-log", SRC_COMMENT};
+
+ // Set up a SOSCheckin task
+ SOSCheckin sosCheckin = new SOSCheckin();
+ sosCheckin.setProject(project);
+ sosCheckin.setVssServerPath(VSS_SERVER_PATH);
+ sosCheckin.setSosServerPath(SOS_SERVER_PATH);
+ sosCheckin.setProjectPath(VSS_PROJECT_PATH);
+ sosCheckin.setFile(SRC_FILE);
+ sosCheckin.setComment(SRC_COMMENT);
+ sosCheckin.setUsername(SOS_USERNAME);
+ sosCheckin.setPassword(SOS_PASSWORD);
+ sosCheckin.setLocalPath(new Path(project, LOCAL_PATH));
+ sosCheckin.setNoCache(true);
+ sosCheckin.setNoCompress(true);
+ sosCheckin.setVerbose(true);
+ sosCheckin.setRecursive(true);
+
+ commandline = sosCheckin.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test CheckInProject option flags */
+ @Test
+ public void testCheckinProjectFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "CheckInProject",
+ "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
+ "-password", "", "-database", VSS_SERVER_PATH, "-project",
+ DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
+ project.getBaseDir().getAbsolutePath(), "-log", SRC_COMMENT,};
+
+ // Set up a SOSCheckin task
+ SOSCheckin sosCheckin = new SOSCheckin();
+ sosCheckin.setProject(project);
+ sosCheckin.setVssServerPath(VSS_SERVER_PATH);
+ sosCheckin.setSosServerPath(SOS_SERVER_PATH);
+ sosCheckin.setProjectPath(DS_VSS_PROJECT_PATH);
+ sosCheckin.setComment(SRC_COMMENT);
+ sosCheckin.setUsername(SOS_USERNAME);
+ sosCheckin.setSosHome(SOS_HOME);
+ sosCheckin.setNoCache(true);
+ sosCheckin.setNoCompress(false);
+ sosCheckin.setVerbose(false);
+ sosCheckin.setRecursive(true);
+
+ commandline = sosCheckin.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test SOSCheckIn required attributes. */
+ @Test
+ public void testCheckinExceptions() {
+ buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
+ expectSpecificBuildException("soscheckin.1", "some cause", "sosserverpath attribute must be set!");
+ expectSpecificBuildException("soscheckin.2", "some cause", "username attribute must be set!");
+ expectSpecificBuildException("soscheckin.3", "some cause", "vssserverpath attribute must be set!");
+ expectSpecificBuildException("soscheckin.4", "some cause", "projectpath attribute must be set!");
+ }
+
+ /** Test CheckOutFile option flags */
+ @Test
+ public void testCheckoutFileFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "CheckOutFile", "-file",
+ SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
+ "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project",
+ DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache",
+ "-workdir", project.getBaseDir().getAbsolutePath()
+ + File.separator + LOCAL_PATH};
+
+ // Set up a SOSCheckout task
+ SOSCheckout sosCheckout = new SOSCheckout();
+ sosCheckout.setProject(project);
+ sosCheckout.setVssServerPath(VSS_SERVER_PATH);
+ sosCheckout.setSosServerPath(SOS_SERVER_PATH);
+ sosCheckout.setProjectPath(DS_VSS_PROJECT_PATH);
+ sosCheckout.setFile(SRC_FILE);
+ sosCheckout.setUsername(SOS_USERNAME);
+ sosCheckout.setPassword(SOS_PASSWORD);
+ sosCheckout.setLocalPath(new Path(project, LOCAL_PATH));
+ sosCheckout.setNoCache(true);
+ sosCheckout.setNoCompress(true);
+ sosCheckout.setVerbose(true);
+ sosCheckout.setRecursive(true);
+
+ commandline = sosCheckout.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test CheckOutProject option flags */
+ @Test
+ public void testCheckoutProjectFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "CheckOutProject",
+ "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME,
+ "-password", "", "-database", VSS_SERVER_PATH, "-project",
+ DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir",
+ project.getBaseDir().getAbsolutePath()};
+
+ // Set up a sosCheckout task
+ SOSCheckout sosCheckout = new SOSCheckout();
+ sosCheckout.setProject(project);
+ sosCheckout.setVssServerPath(VSS_SERVER_PATH);
+ sosCheckout.setSosServerPath(SOS_SERVER_PATH);
+ sosCheckout.setProjectPath(VSS_PROJECT_PATH);
+ sosCheckout.setUsername(SOS_USERNAME);
+ sosCheckout.setSosHome(SOS_HOME);
+ sosCheckout.setNoCache(true);
+ sosCheckout.setNoCompress(false);
+ sosCheckout.setVerbose(false);
+ sosCheckout.setRecursive(true);
+
+ commandline = sosCheckout.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test SOSCheckout required attributes. */
+ @Test
+ public void testCheckoutExceptions() {
+ buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
+ expectSpecificBuildException("soscheckout.1", "some cause", "sosserverpath attribute must be set!");
+ expectSpecificBuildException("soscheckout.2", "some cause", "username attribute must be set!");
+ expectSpecificBuildException("soscheckout.3", "some cause", "vssserverpath attribute must be set!");
+ expectSpecificBuildException("soscheckout.4", "some cause", "projectpath attribute must be set!");
+ }
+
+ /** Test Label option flags */
+ @Test
+ public void testLabelFlags() {
+ String[] sTestCmdLine = {"soscmd", "-command", "AddLabel", "-server",
+ SOS_SERVER_PATH, "-name", SOS_USERNAME, "-password", "", "-database",
+ VSS_SERVER_PATH, "-project", DS_VSS_PROJECT_PATH, "-label",
+ SRC_LABEL, "-verbose", "-log", SRC_COMMENT};
+
+ // Set up a sosCheckout task
+ SOSLabel sosLabel = new SOSLabel();
+ sosLabel.setVssServerPath(VSS_SERVER_PATH);
+ sosLabel.setSosServerPath(SOS_SERVER_PATH);
+ sosLabel.setProjectPath(DS_VSS_PROJECT_PATH);
+ sosLabel.setUsername(SOS_USERNAME);
+ sosLabel.setSosHome(SOS_HOME);
+ sosLabel.setComment(SRC_COMMENT);
+ sosLabel.setLabel(SRC_LABEL);
+ sosLabel.setNoCache(true);
+ sosLabel.setNoCompress(false);
+ sosLabel.setVerbose(true);
+
+ commandline = sosLabel.buildCmdLine();
+
+ checkCommandLines(sTestCmdLine, commandline.getCommandline());
+ }
+
+ /** Test SOSLabel required attributes. */
+ @Test
+ public void testLabelExceptions() {
+ buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml");
+ expectSpecificBuildException("soslabel.1", "some cause", "sosserverpath attribute must be set!");
+ expectSpecificBuildException("soslabel.2", "some cause", "username attribute must be set!");
+ expectSpecificBuildException("soslabel.3", "some cause", "vssserverpath attribute must be set!");
+ expectSpecificBuildException("soslabel.4", "some cause", "projectpath attribute must be set!");
+ expectSpecificBuildException("soslabel.5", "some cause", "label attribute must be set!");
+ }
+
+ private void expectSpecificBuildException(String target, String errorMessage,
+ String exceptionMessage) {
+ try {
+ buildRule.executeTarget(target);
+ fail(errorMessage);
+ } catch(BuildException ex) {
+ assertEquals(exceptionMessage, ex.getMessage());
+ }
+ }
+
+ /**
+ * Iterate through the generated command line comparing it to reference
+ * one.
+ *
+ * @param sTestCmdLine The reference command line;
+ * @param sGeneratedCmdLine The generated command line;
+ */
+ private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) {
+ int length = sTestCmdLine.length;
+ for (int i = 0; i < length; i++) {
+ try {
+ assertEquals("arg # " + String.valueOf(i),
+ sTestCmdLine[i],
+ sGeneratedCmdLine[i]);
+ } catch (ArrayIndexOutOfBoundsException aioob) {
+ fail("missing arg " + sTestCmdLine[i]);
+ }
+ }
+ if (sGeneratedCmdLine.length > sTestCmdLine.length) {
+ // We have extra elements
+ fail("extra args");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/taskdefs/optional/splash/SplashScreenTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/splash/SplashScreenTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/splash/SplashScreenTest.java
index b9fa0b5..dfec9f5 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/splash/SplashScreenTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/splash/SplashScreenTest.java
@@ -1,50 +1,49 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.tools.ant.taskdefs.optional.splash;
-
-import org.apache.tools.ant.Project;
-
-/**
- * This is an "interactive" test, it passes if the splash screen
- * disappears after the "finished" but before the "exiting" message.
- *
- * This even isn't a JUnit test case.
- *
- * @since Ant 1.5.2
- */
-public class SplashScreenTest {
-
- public static void main(String[] args) throws InterruptedException {
- Project p = new Project();
- SplashTask t = new SplashTask();
- t.setProject(p);
- t.execute();
-
- // give it some time to display
- Thread.sleep(2000);
-
- p.fireBuildFinished(null);
- System.err.println("finished");
-
- Thread.sleep(2000);
- System.err.println("exiting");
- System.exit(0);
- }
-}
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.tools.ant.taskdefs.optional.splash;
+
+import org.apache.tools.ant.Project;
+
+/**
+ * This is an "interactive" test, it passes if the splash screen
+ * disappears after the "finished" but before the "exiting" message.
+ *
+ * This even isn't a JUnit test case.
+ *
+ * @since Ant 1.5.2
+ */
+public class SplashScreenTest {
+
+ public static void main(String[] args) throws InterruptedException {
+ Project p = new Project();
+ SplashTask t = new SplashTask();
+ t.setProject(p);
+ t.execute();
+
+ // give it some time to display
+ Thread.sleep(2000);
+
+ p.fireBuildFinished(null);
+ System.err.println("finished");
+
+ Thread.sleep(2000);
+ System.err.println("exiting");
+ System.exit(0);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java
index 0ac0746..e36d683 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java
@@ -1,297 +1,297 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-/*
- * Since the initial version of this file was deveolped on the clock on
- * an NSF grant I should say the following boilerplate:
- *
- * This material is based upon work supported by the National Science
- * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
- * conclusions or recommendations expressed in this material are those
- * of the author and do not necessarily reflect the views of the
- * National Science Foundation.
- */
-
-package org.apache.tools.ant.taskdefs.optional.unix;
-
-import org.apache.tools.ant.BuildFileRule;
-import org.apache.tools.ant.taskdefs.condition.Os;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.util.SymbolicLinkUtils;
-import org.junit.After;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-/**
- * Test cases for the Symlink task. Link creation, link deletion, recording
- * of links in multiple directories, and restoration of links recorded are
- * all tested. A separate test for the utility method Symlink.deleteSymlink
- * is not included because action="delete" only prints a message and calls
- * Symlink.deleteSymlink, making a separate test redundant.
- *
- */
-
-public class SymlinkTest {
-
- @Rule
- public BuildFileRule buildRule = new BuildFileRule();
-
- private boolean supportsSymlinks = Os.isFamily("unix");
-
- @Before
- public void setUp() {
- Assume.assumeTrue("Symlinks not supported on current operating system", supportsSymlinks);
- buildRule.configureProject("src/etc/testcases/taskdefs/optional/unix/symlink.xml");
- buildRule.executeTarget("setUp");
- }
-
- @Test
- public void testSingle() {
- buildRule.executeTarget("test-single");
- Project p = buildRule.getProject();
- assertNotNull("Failed to create file",
- p.getProperty("test.single.file.created"));
- assertNotNull("Failed to create link",
- p.getProperty("test.single.link.created"));
- }
-
- @Test
- public void testDelete() {
- buildRule.executeTarget("test-delete");
- Project p = buildRule.getProject();
- String linkDeleted = p.getProperty("test.delete.link.still.there");
- assertNotNull("Actual file deleted by symlink",
- p.getProperty("test.delete.file.still.there"));
- if (linkDeleted != null) {
- fail(linkDeleted);
- }
- }
-
- @Test
- public void testRecord() {
- buildRule.executeTarget("test-record");
- Project p = buildRule.getProject();
-
- assertNotNull("Failed to create dir1",
- p.getProperty("test.record.dir1.created"));
-
- assertNotNull("Failed to create dir2",
- p.getProperty("test.record.dir2.created"));
-
- assertNotNull("Failed to create file1",
- p.getProperty("test.record.file1.created"));
-
- assertNotNull("Failed to create file2",
- p.getProperty("test.record.file2.created"));
-
- assertNotNull("Failed to create fileA",
- p.getProperty("test.record.fileA.created"));
-
- assertNotNull("Failed to create fileB",
- p.getProperty("test.record.fileB.created"));
-
- assertNotNull("Failed to create fileC",
- p.getProperty("test.record.fileC.created"));
-
- assertNotNull("Failed to create link1",
- p.getProperty("test.record.link1.created"));
-
- assertNotNull("Failed to create link2",
- p.getProperty("test.record.link2.created"));
-
- assertNotNull("Failed to create link3",
- p.getProperty("test.record.link3.created"));
-
- assertNotNull("Failed to create dirlink",
- p.getProperty("test.record.dirlink.created"));
-
- assertNotNull("Failed to create dirlink2",
- p.getProperty("test.record.dirlink2.created"));
-
- assertNotNull("Couldn't record links in dir1",
- p.getProperty("test.record.dir1.recorded"));
-
- assertNotNull("Couldn't record links in dir2",
- p.getProperty("test.record.dir2.recorded"));
-
- String dir3rec = p.getProperty("test.record.dir3.recorded");
-
- if (dir3rec != null) {
- fail(dir3rec);
- }
-
- }
-
- @Test
- public void testRecreate() {
- buildRule.executeTarget("test-recreate");
- Project p = buildRule.getProject();
- String link1Rem = p.getProperty("test.recreate.link1.not.removed");
- String link2Rem = p.getProperty("test.recreate.link2.not.removed");
- String link3Rem = p.getProperty("test.recreate.link3.not.removed");
- String dirlinkRem = p.getProperty("test.recreate.dirlink.not.removed");
- if (link1Rem != null) {
- fail(link1Rem);
- }
- if (link2Rem != null) {
- fail(link2Rem);
- }
- if (link3Rem != null) {
- fail(link3Rem);
- }
- if (dirlinkRem != null) {
- fail(dirlinkRem);
- }
- assertNotNull("Failed to recreate link1",
- p.getProperty("test.recreate.link1.recreated"));
- assertNotNull("Failed to recreate link2",
- p.getProperty("test.recreate.link2.recreated"));
- assertNotNull("Failed to recreate link3",
- p.getProperty("test.recreate.link3.recreated"));
- assertNotNull("Failed to recreate dirlink",
- p.getProperty("test.recreate.dirlink.recreated"));
-
- String doubleRecreate = p.getProperty("test.recreate.dirlink2.recreated.twice");
-
- if (doubleRecreate != null) {
- fail(doubleRecreate);
- }
-
- assertNotNull("Failed to alter dirlink3",
- p.getProperty("test.recreate.dirlink3.was.altered"));
- }
-
- @Test
- public void testSymbolicLinkUtilsMethods() throws Exception {
-
- buildRule.executeTarget("test-fileutils");
- SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils();
-
- java.io.File f = new File(buildRule.getOutputDir(), "file1");
- assertTrue(f.exists());
- assertFalse(f.isDirectory());
- assertTrue(f.isFile());
- assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- f = new File(buildRule.getOutputDir(), "dir1");
- assertTrue(f.exists());
- assertTrue(f.isDirectory());
- assertFalse(f.isFile());
- assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- f = new File(buildRule.getOutputDir(), "file2");
- assertFalse(f.exists());
- assertFalse(f.isDirectory());
- assertFalse(f.isFile());
- assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- f = new File(buildRule.getOutputDir(), "dir2");
- assertFalse(f.exists());
- assertFalse(f.isDirectory());
- assertFalse(f.isFile());
- assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
-
- f = new File(buildRule.getOutputDir(), "file.there");
- assertTrue(f.exists());
- assertFalse(f.isDirectory());
- assertTrue(f.isFile());
- assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
- assertTrue(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- f = new File(buildRule.getOutputDir(), "dir.there");
- assertTrue(f.exists());
- assertTrue(f.isDirectory());
- assertFalse(f.isFile());
- assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
- assertTrue(su.isSymbolicLink(f.getParentFile(),
- f.getName()));
- assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- // it is not possible to find out that symbolic links pointing
- // to inexistent files or directories are symbolic links
- // it used to be possible to detect this on Mac
- // this is not true under Snow Leopard and JDK 1.5
- // Removing special handling of MacOS until someone shouts
- // Antoine
- f = new File(buildRule.getOutputDir(), "file.notthere");
- assertFalse(f.exists());
- assertFalse(f.isDirectory());
- assertFalse(f.isFile());
- assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
- assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
- assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- f = new File(buildRule.getOutputDir(), "dir.notthere");
- assertFalse(f.exists());
- assertFalse(f.isDirectory());
- assertFalse(f.isFile());
- assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
- assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
- assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
- assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
- f.getName()));
-
- }
-
- @After
- public void tearDown() {
- if (buildRule.getProject() != null) {
- buildRule.executeTarget("tearDown");
- }
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/*
+ * Since the initial version of this file was deveolped on the clock on
+ * an NSF grant I should say the following boilerplate:
+ *
+ * This material is based upon work supported by the National Science
+ * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
+ * conclusions or recommendations expressed in this material are those
+ * of the author and do not necessarily reflect the views of the
+ * National Science Foundation.
+ */
+
+package org.apache.tools.ant.taskdefs.optional.unix;
+
+import org.apache.tools.ant.BuildFileRule;
+import org.apache.tools.ant.taskdefs.condition.Os;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.SymbolicLinkUtils;
+import org.junit.After;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+
+/**
+ * Test cases for the Symlink task. Link creation, link deletion, recording
+ * of links in multiple directories, and restoration of links recorded are
+ * all tested. A separate test for the utility method Symlink.deleteSymlink
+ * is not included because action="delete" only prints a message and calls
+ * Symlink.deleteSymlink, making a separate test redundant.
+ *
+ */
+
+public class SymlinkTest {
+
+ @Rule
+ public BuildFileRule buildRule = new BuildFileRule();
+
+ private boolean supportsSymlinks = Os.isFamily("unix");
+
+ @Before
+ public void setUp() {
+ Assume.assumeTrue("Symlinks not supported on current operating system", supportsSymlinks);
+ buildRule.configureProject("src/etc/testcases/taskdefs/optional/unix/symlink.xml");
+ buildRule.executeTarget("setUp");
+ }
+
+ @Test
+ public void testSingle() {
+ buildRule.executeTarget("test-single");
+ Project p = buildRule.getProject();
+ assertNotNull("Failed to create file",
+ p.getProperty("test.single.file.created"));
+ assertNotNull("Failed to create link",
+ p.getProperty("test.single.link.created"));
+ }
+
+ @Test
+ public void testDelete() {
+ buildRule.executeTarget("test-delete");
+ Project p = buildRule.getProject();
+ String linkDeleted = p.getProperty("test.delete.link.still.there");
+ assertNotNull("Actual file deleted by symlink",
+ p.getProperty("test.delete.file.still.there"));
+ if (linkDeleted != null) {
+ fail(linkDeleted);
+ }
+ }
+
+ @Test
+ public void testRecord() {
+ buildRule.executeTarget("test-record");
+ Project p = buildRule.getProject();
+
+ assertNotNull("Failed to create dir1",
+ p.getProperty("test.record.dir1.created"));
+
+ assertNotNull("Failed to create dir2",
+ p.getProperty("test.record.dir2.created"));
+
+ assertNotNull("Failed to create file1",
+ p.getProperty("test.record.file1.created"));
+
+ assertNotNull("Failed to create file2",
+ p.getProperty("test.record.file2.created"));
+
+ assertNotNull("Failed to create fileA",
+ p.getProperty("test.record.fileA.created"));
+
+ assertNotNull("Failed to create fileB",
+ p.getProperty("test.record.fileB.created"));
+
+ assertNotNull("Failed to create fileC",
+ p.getProperty("test.record.fileC.created"));
+
+ assertNotNull("Failed to create link1",
+ p.getProperty("test.record.link1.created"));
+
+ assertNotNull("Failed to create link2",
+ p.getProperty("test.record.link2.created"));
+
+ assertNotNull("Failed to create link3",
+ p.getProperty("test.record.link3.created"));
+
+ assertNotNull("Failed to create dirlink",
+ p.getProperty("test.record.dirlink.created"));
+
+ assertNotNull("Failed to create dirlink2",
+ p.getProperty("test.record.dirlink2.created"));
+
+ assertNotNull("Couldn't record links in dir1",
+ p.getProperty("test.record.dir1.recorded"));
+
+ assertNotNull("Couldn't record links in dir2",
+ p.getProperty("test.record.dir2.recorded"));
+
+ String dir3rec = p.getProperty("test.record.dir3.recorded");
+
+ if (dir3rec != null) {
+ fail(dir3rec);
+ }
+
+ }
+
+ @Test
+ public void testRecreate() {
+ buildRule.executeTarget("test-recreate");
+ Project p = buildRule.getProject();
+ String link1Rem = p.getProperty("test.recreate.link1.not.removed");
+ String link2Rem = p.getProperty("test.recreate.link2.not.removed");
+ String link3Rem = p.getProperty("test.recreate.link3.not.removed");
+ String dirlinkRem = p.getProperty("test.recreate.dirlink.not.removed");
+ if (link1Rem != null) {
+ fail(link1Rem);
+ }
+ if (link2Rem != null) {
+ fail(link2Rem);
+ }
+ if (link3Rem != null) {
+ fail(link3Rem);
+ }
+ if (dirlinkRem != null) {
+ fail(dirlinkRem);
+ }
+ assertNotNull("Failed to recreate link1",
+ p.getProperty("test.recreate.link1.recreated"));
+ assertNotNull("Failed to recreate link2",
+ p.getProperty("test.recreate.link2.recreated"));
+ assertNotNull("Failed to recreate link3",
+ p.getProperty("test.recreate.link3.recreated"));
+ assertNotNull("Failed to recreate dirlink",
+ p.getProperty("test.recreate.dirlink.recreated"));
+
+ String doubleRecreate = p.getProperty("test.recreate.dirlink2.recreated.twice");
+
+ if (doubleRecreate != null) {
+ fail(doubleRecreate);
+ }
+
+ assertNotNull("Failed to alter dirlink3",
+ p.getProperty("test.recreate.dirlink3.was.altered"));
+ }
+
+ @Test
+ public void testSymbolicLinkUtilsMethods() throws Exception {
+
+ buildRule.executeTarget("test-fileutils");
+ SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils();
+
+ java.io.File f = new File(buildRule.getOutputDir(), "file1");
+ assertTrue(f.exists());
+ assertFalse(f.isDirectory());
+ assertTrue(f.isFile());
+ assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ f = new File(buildRule.getOutputDir(), "dir1");
+ assertTrue(f.exists());
+ assertTrue(f.isDirectory());
+ assertFalse(f.isFile());
+ assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ f = new File(buildRule.getOutputDir(), "file2");
+ assertFalse(f.exists());
+ assertFalse(f.isDirectory());
+ assertFalse(f.isFile());
+ assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ f = new File(buildRule.getOutputDir(), "dir2");
+ assertFalse(f.exists());
+ assertFalse(f.isDirectory());
+ assertFalse(f.isFile());
+ assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+
+ f = new File(buildRule.getOutputDir(), "file.there");
+ assertTrue(f.exists());
+ assertFalse(f.isDirectory());
+ assertTrue(f.isFile());
+ assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
+ assertTrue(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ f = new File(buildRule.getOutputDir(), "dir.there");
+ assertTrue(f.exists());
+ assertTrue(f.isDirectory());
+ assertFalse(f.isFile());
+ assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
+ assertTrue(su.isSymbolicLink(f.getParentFile(),
+ f.getName()));
+ assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ // it is not possible to find out that symbolic links pointing
+ // to inexistent files or directories are symbolic links
+ // it used to be possible to detect this on Mac
+ // this is not true under Snow Leopard and JDK 1.5
+ // Removing special handling of MacOS until someone shouts
+ // Antoine
+ f = new File(buildRule.getOutputDir(), "file.notthere");
+ assertFalse(f.exists());
+ assertFalse(f.isDirectory());
+ assertFalse(f.isFile());
+ assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
+ assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
+ assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ f = new File(buildRule.getOutputDir(), "dir.notthere");
+ assertFalse(f.exists());
+ assertFalse(f.isDirectory());
+ assertFalse(f.isFile());
+ assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
+ assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
+ assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
+ assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
+ f.getName()));
+
+ }
+
+ @After
+ public void tearDown() {
+ if (buildRule.getProject() != null) {
+ buildRule.executeTarget("tearDown");
+ }
+ }
+
+}