@Test public void shouldGetLocationForClassInJarWithVersion() { assertEquals( "Location not retrieved for java.lang.reflect.Method", enricher.getLocation(java.lang.reflect.Method.class), RT_JAR); }
@Test public void shouldGetVersionForStackTraceElementInJarWithVersion() { StackTraceElement javaLangElement = getJavaLangStackTraceElement(exception); assertTrue( "Version not retrieved for " + javaLangElement.getClassName(), enricher.getVersion(javaLangElement).contains(javaVersion)); }
@Test public void shouldWriteEnrichedStackTraceToWriter() throws Exception { StringWriter writer = new StringWriter(); enricher.printStackTrace(exception, writer); assertTrue( "JUnit jar " + JUNIT_JAR_PATTERN + " not found in stack trace written to writer", writer.toString().contains(JUNIT_JAR_PATTERN)); }
@Test public void shouldGetLocationForStackTraceElementInJarWithVersion() { StackTraceElement javaLangElement = getJavaLangStackTraceElement(exception); assertEquals( "Version not retrieved for " + javaLangElement.getClassName(), enricher.getLocation(javaLangElement), RT_JAR); }
@Test public void shouldWriteEnrichedStackTraceToOutputStream() throws Exception { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); enricher.printStackTrace(exception, outputStream); String output = new String(outputStream.toByteArray()); assertTrue( "JUnit jar " + JUNIT_JAR_PATTERN + " not found in stack trace written to output stream", output.contains(JUNIT_JAR_PATTERN)); }
@Test public void shouldWriteToSystemErrByDefault() { PrintStream originalErrStream = System.err; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); System.setErr(new PrintStream(out)); enricher.printStackTrace(exception); String output = new String(out.toByteArray()); assertTrue( "JUnit jar " + JUNIT_JAR_PATTERN + " not found in stack trace written to default System.err stream", output.contains(JUNIT_JAR_PATTERN)); } finally { System.setErr(originalErrStream); } }
@Test public void shouldParseDirectories() { String classPath = System.getProperty("java.class.path"); classPath = classPath.replace('\\', '/'); String testLocation = enricher.getLocation(this.getClass()); if (!testLocation.contains(".jar")) { testLocation = testLocation.replace('\\', '/'); if (testLocation.startsWith("file:/")) { testLocation = testLocation.substring("file:/".length()); } if (testLocation.endsWith("/")) { testLocation = testLocation.substring(0, testLocation.length() - 1); } assertTrue( "Location of unit test (" + testLocation + ") not found on the classpath.", classPath.contains(testLocation)); } else { // TODO Find a way to test this if the unit test is executed from a jar. System.err.println( "Unit test executed from jar file, no stable method available for testing the parsing of " + "directory locations."); } }
@Test public void shouldParseRtJar() { assertTrue( "Java RT jar not properly determined.", enricher.getStackTraceAsString(exception).contains(RT_JAR)); }
@Test public void shouldReturnEnrichedStackTraceAsString() { assertTrue( "JUnit jar " + JUNIT_JAR_PATTERN + " not found in stack trace as String", enricher.getStackTraceAsString(exception).contains(JUNIT_JAR_PATTERN)); }
@Test public void shouldGetVersionForClassInJarWithVersion() { assertTrue( "Version not retrieved for java.lang.reflect.Method", enricher.getVersion(java.lang.reflect.Method.class).contains(javaVersion)); }
@Test public void shouldAddVersionWhenAvailable() { assertTrue( "Version not added for rt.jar", enricher.getStackTraceAsString(exception).contains(RT_JAR + ":" + javaVersion)); }