summaryrefslogtreecommitdiffstats
path: root/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java')
-rw-r--r--harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java171
1 files changed, 171 insertions, 0 deletions
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java
new file mode 100644
index 0000000..87cf88c
--- /dev/null
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessBuilderTest.java
@@ -0,0 +1,171 @@
+/* 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.harmony.tests.java.lang;
+
+import junit.framework.TestCase;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public class ProcessBuilderTest extends TestCase {
+
+ public void testProcessBuilderStringArray() {
+
+ }
+
+ public void testProcessBuilderListOfString() {
+ try {
+ new ProcessBuilder((List<String>) null);
+ fail("no null pointer exception");
+ } catch (NullPointerException e) {
+ }
+ }
+
+ public void testCommand() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ assertEquals(1, pb.command().size());
+ assertEquals("command", pb.command().get(0));
+
+ // Regression for HARMONY-2675
+ pb = new ProcessBuilder("AAA");
+ pb.command("BBB", "CCC");
+ List<String> list = pb.command();
+ list.add("DDD");
+ String[] command = new String[3];
+ list.toArray(command);
+ assertTrue(Arrays.equals(new String[] { "BBB", "CCC", "DDD" }, command));
+ }
+
+ public void testCommandStringArray() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ ProcessBuilder pbReturn = pb.command("cmd");
+ assertSame(pb, pbReturn);
+ assertEquals(1, pb.command().size());
+ assertEquals("cmd", pb.command().get(0));
+ }
+
+ public void testCommandListOfString() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ List<String> newCmd = new ArrayList<String>();
+ newCmd.add("cmd");
+ ProcessBuilder pbReturn = pb.command(newCmd);
+ assertSame(pb, pbReturn);
+ assertEquals(1, pb.command().size());
+ assertEquals("cmd", pb.command().get(0));
+
+ newCmd.add("arg");
+ assertEquals(2, pb.command().size());
+ assertEquals("cmd", pb.command().get(0));
+ assertEquals("arg", pb.command().get(1));
+ }
+
+ public void testDirectory() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ assertNull(pb.directory());
+ }
+
+ public void testDirectoryFile() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ File dir = new File(System.getProperty("java.io.tmpdir"));
+ ProcessBuilder pbReturn = pb.directory(dir);
+ assertSame(pb, pbReturn);
+ assertEquals(dir, pb.directory());
+
+ pbReturn = pb.directory(null);
+ assertSame(pb, pbReturn);
+ assertNull(pb.directory());
+ }
+
+ public void testEnvironment() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ Map<String, String> env = pb.environment();
+ assertEquals(System.getenv(), env);
+ env.clear();
+ env = pb.environment();
+ assertTrue(env.isEmpty());
+ try {
+ env.put(null, "");
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ // expected;
+ }
+ try {
+ env.put("", null);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ // expected;
+ }
+ try {
+ env.get(null);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ // expected;
+ }
+ try {
+ assertNull(env.get(new Object()));
+ // Android's get doesn't throw (because it's just a regular HashMap).
+ // fail("should throw ClassCastException.");
+ } catch (ClassCastException thrownByRi) {
+ }
+ }
+
+ public void testRedirectErrorStream() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ assertFalse(pb.redirectErrorStream());
+ }
+
+ public void testRedirectErrorStreamBoolean() {
+ ProcessBuilder pb = new ProcessBuilder("command");
+ ProcessBuilder pbReturn = pb.redirectErrorStream(true);
+ assertSame(pb, pbReturn);
+ assertTrue(pb.redirectErrorStream());
+ }
+
+ /**
+ * @throws IOException
+ * {@link java.lang.ProcessBuilder#start()}
+ */
+ @SuppressWarnings("nls")
+ public void testStart() throws IOException {
+ ProcessBuilder pb = new ProcessBuilder("ls", "-al");
+
+ // Call the test target
+ Process process = pb.start();
+ InputStream in = process.getInputStream();
+ InputStream err = process.getErrorStream();
+
+ while (true) {
+ try {
+ process.waitFor();
+ break;
+ } catch (InterruptedException e) {
+ // Ignored
+ }
+ }
+
+ byte[] buf = new byte[1024];
+ if (in.available() > 0) {
+ assertTrue(in.read(buf) > 0);
+ } else {
+ assertTrue(err.read(buf) > 0);
+ }
+ }
+}