summaryrefslogtreecommitdiffstats
path: root/test/src/net/sf/antcontrib/platform/ShellScriptTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/net/sf/antcontrib/platform/ShellScriptTest.java')
-rw-r--r--test/src/net/sf/antcontrib/platform/ShellScriptTest.java165
1 files changed, 165 insertions, 0 deletions
diff --git a/test/src/net/sf/antcontrib/platform/ShellScriptTest.java b/test/src/net/sf/antcontrib/platform/ShellScriptTest.java
new file mode 100644
index 0000000..ba1a30e
--- /dev/null
+++ b/test/src/net/sf/antcontrib/platform/ShellScriptTest.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * Licensed 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 net.sf.antcontrib.platform;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * Testcase for <shellscript>
+ *
+ * @author Peter Reilly
+ */
+public class ShellScriptTest extends BuildFileTest {
+ public ShellScriptTest(String name) {
+ super(name);
+ }
+
+ public void setUp() {
+ configureProject("test/resources/platform/shellscript.xml");
+ staticInitialize();
+ }
+
+ public void testShHello() {
+ if (! hasSh)
+ return;
+ executeTarget("sh.hello");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testBashHello() {
+ if (! hasBash)
+ return;
+ executeTarget("bash.hello");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testShInputString() {
+ if (! hasSh)
+ return;
+ executeTarget("sh.inputstring");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testShProperty() {
+ if (! hasSh)
+ return;
+ executeTarget("sh.property");
+ assertTrue(getLog().indexOf("this is a property") > -1);
+ }
+
+
+ public void testPythonHello() {
+ if (! hasPython)
+ return;
+ executeTarget("python.hello");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testPerlHello() {
+ if (! hasPerl)
+ return;
+ executeTarget("perl.hello");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testNoShell() {
+ expectBuildExceptionContaining(
+ "noshell", "Execute failed", "a shell that should not exist");
+ }
+
+ public void testSed() {
+ if (! hasSed)
+ return;
+ executeTarget("sed.test");
+ assertTrue(getLog().indexOf("BAR bar bar bar BAR bar") > -1);
+ }
+
+ public void testSetProperty() {
+ if (! hasSh)
+ return;
+ executeTarget("sh.set.property");
+ assertPropertyEquals("sh.set.property", "hello world");
+ }
+
+ public void testTmpSuffix() {
+ if (! hasSh)
+ return;
+ executeTarget("sh.tmp.suffix");
+ assertTrue(getLog().indexOf(".bat") > -1);
+ }
+
+ public void testCmd() {
+ if (! hasCmd)
+ return;
+ executeTarget("cmd.test");
+ assertTrue(getLog().indexOf("hello world") > -1);
+ }
+
+ public void testDir() {
+ if (! hasBash)
+ return;
+ executeTarget("dir.test");
+ assertTrue(
+ getProject().getProperty("dir.test.property")
+ .indexOf("subdir") > -1);
+ }
+
+ public void testCommand() {
+ expectBuildExceptionContaining(
+ "command.test", "Attribute failed",
+ "Attribute command is not supported");
+ }
+
+ private static boolean initialized = false;
+ private static boolean hasSh = false;
+ private static boolean hasBash = false;
+ private static boolean hasPython = false;
+ private static boolean hasPerl = false;
+ private static boolean hasSed = false;
+ private static boolean hasCmd = false;
+ private static Object staticMonitor = new Object();
+
+ /**
+ * check if the env contains the shells
+ * sh, bash, python and perl
+ * assume cmd.exe exists for windows
+ */
+ private void staticInitialize() {
+ synchronized (staticMonitor) {
+ if (initialized)
+ return;
+ initialized = true;
+ hasSh = hasShell("hassh");
+ hasBash = hasShell("hasbash");
+ hasPerl = hasShell("hasperl");
+ hasPython = hasShell("haspython");
+ hasSed = hasShell("hassed");
+ hasCmd = hasShell("hascmd");
+
+ }
+ }
+
+ private boolean hasShell(String target) {
+ try {
+ executeTarget(target);
+ return true;
+ }
+ catch (Throwable t) {
+ return false;
+ }
+ }
+
+}