| package org.junit.tests.running.core; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import java.io.File; |
| import java.io.InputStream; |
| |
| import org.junit.Test; |
| |
| // Make sure System.exit works as expected. We've had problems with this on some platforms. |
| public class SystemExitTest { |
| |
| private static final int EXIT_CODE = 5; |
| |
| static public class Exit { |
| public static void main(String[] args) { |
| System.exit(EXIT_CODE); |
| } |
| } |
| |
| @Test |
| public void failureCausesExitCodeOf1() throws Exception { |
| String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; |
| String classPath = getClass().getClassLoader().getResource(".").getFile() + File.pathSeparator + System.getProperty("java.class.path"); |
| String[] cmd = {java, "-cp", classPath, getClass().getName() + "$Exit"}; |
| Process process = Runtime.getRuntime().exec(cmd); |
| InputStream input = process.getInputStream(); |
| while ((input.read()) != -1) ; |
| assertEquals(EXIT_CODE, process.waitFor()); |
| } |
| } |