51 Process proc = Runtime.getRuntime().exec(commandArgs); 52 int val; 53 byte[] buf = new byte[4096]; 54 int n = proc.getErrorStream().read(buf); 55 if (n > 0) 56 throw new Exception 57 ("Unexpected stderr: " 58 + new String(buf, 0, n, "ASCII")); 59 if ((val = proc.waitFor()) != expectedExitValue) 60 throw new Exception 61 ("waitFor() returned unexpected value " + val); 62 if ((val = proc.exitValue()) != expectedExitValue) 63 throw new Exception 64 ("exitValue() returned unexpected value " + val); 65 } 66 67 public static void checkPosixShellExitValue(String posixShellProgram, 68 int expectedExitValue) 69 throws Exception 70 { 71 checkExitValue(new String[] { "/bin/sh", "-c", posixShellProgram }, 72 expectedExitValue); 73 } 74 75 final static int EXIT_CODE = 5; 76 77 public static void main(String[] args) throws Exception { 78 79 String java = join(File.separator, new String [] 80 { System.getProperty("java.home"), "bin", "java" }); 81 82 checkExitValue(new String[] 83 { java, 84 "-classpath", System.getProperty("test.classes", "."), 85 "ExitValue$Run", String.valueOf(EXIT_CODE) 86 }, EXIT_CODE); 87 88 checkExitValue(new String[] { "/bin/true" }, 0); 89 90 checkPosixShellExitValue("exit", 0); 91 92 checkPosixShellExitValue("exit 7", 7); 93 94 if (new File("/bin/kill").exists()) { 95 int sigoffset = 96 System.getProperty("os.name").equals("SunOS") ? 0 : 128; 97 checkPosixShellExitValue("/bin/kill -9 $$", sigoffset+9); 98 } 99 } 100 101 public static class Run { 102 public static void main (String[] argv) { 103 System.exit(Integer.parseInt(argv[0])); 104 } 105 } 106 } | 51 Process proc = Runtime.getRuntime().exec(commandArgs); 52 int val; 53 byte[] buf = new byte[4096]; 54 int n = proc.getErrorStream().read(buf); 55 if (n > 0) 56 throw new Exception 57 ("Unexpected stderr: " 58 + new String(buf, 0, n, "ASCII")); 59 if ((val = proc.waitFor()) != expectedExitValue) 60 throw new Exception 61 ("waitFor() returned unexpected value " + val); 62 if ((val = proc.exitValue()) != expectedExitValue) 63 throw new Exception 64 ("exitValue() returned unexpected value " + val); 65 } 66 67 public static void checkPosixShellExitValue(String posixShellProgram, 68 int expectedExitValue) 69 throws Exception 70 { 71 checkExitValue(new String[] { UnixCommands.sh(), "-c", posixShellProgram }, 72 expectedExitValue); 73 } 74 75 final static int EXIT_CODE = 5; 76 77 public static void main(String[] args) throws Exception { 78 79 String java = join(File.separator, new String [] 80 { System.getProperty("java.home"), "bin", "java" }); 81 82 checkExitValue(new String[] 83 { java, 84 "-classpath", System.getProperty("test.classes", "."), 85 "ExitValue$Run", String.valueOf(EXIT_CODE) 86 }, EXIT_CODE); 87 88 checkExitValue(new String[] { UnixCommands.true_() }, 0); 89 90 checkPosixShellExitValue("exit", 0); 91 92 checkPosixShellExitValue("exit 7", 7); 93 94 if (new File(UnixCommands.kill()).exists()) { 95 int sigoffset = 96 System.getProperty("os.name").equals("SunOS") ? 0 : 128; 97 checkPosixShellExitValue(UnixCommands.kill() + " -9 $$", sigoffset+9); 98 } 99 } 100 101 public static class Run { 102 public static void main (String[] argv) { 103 System.exit(Integer.parseInt(argv[0])); 104 } 105 } 106 } |