use of org.junit.AssumptionViolatedException in project jacoco by jacoco.
the class Pack200StreamsTest method pack_should_pack.
@Test
public void pack_should_pack() throws Exception {
try {
Class.forName("java.util.jar.Pack200");
} catch (ClassNotFoundException e) {
throw new AssumptionViolatedException("this test requires JDK with Pack200");
}
ByteArrayOutputStream jarbuffer = new ByteArrayOutputStream();
ZipOutputStream zipout = new ZipOutputStream(jarbuffer);
zipout.putNextEntry(new ZipEntry("Test.class"));
zipout.write(TargetLoader.getClassDataAsBytes(getClass()));
zipout.finish();
ByteArrayOutputStream pack200buffer = new ByteArrayOutputStream();
Pack200Streams.pack(jarbuffer.toByteArray(), new NoCloseOutputStream(pack200buffer));
jarbuffer.reset();
final Object unpacker = Class.forName("java.util.jar.Pack200").getMethod("newUnpacker").invoke(null);
Class.forName("java.util.jar.Pack200$Unpacker").getMethod("unpack", InputStream.class, JarOutputStream.class).invoke(unpacker, new ByteArrayInputStream(pack200buffer.toByteArray()), new JarOutputStream(jarbuffer));
ZipInputStream zipin = new ZipInputStream(new ByteArrayInputStream(jarbuffer.toByteArray()));
assertEquals("Test.class", zipin.getNextEntry().getName());
assertNull(zipin.getNextEntry());
}
use of org.junit.AssumptionViolatedException in project jacoco by jacoco.
the class Pack200StreamsTest method unpack_should_unpack.
@Test
public void unpack_should_unpack() throws Exception {
try {
Class.forName("java.util.jar.Pack200");
} catch (ClassNotFoundException e) {
throw new AssumptionViolatedException("this test requires JDK with Pack200");
}
ByteArrayOutputStream jarbuffer = new ByteArrayOutputStream();
ZipOutputStream zipout = new ZipOutputStream(jarbuffer);
zipout.putNextEntry(new ZipEntry("Test.class"));
zipout.write(TargetLoader.getClassDataAsBytes(getClass()));
zipout.finish();
ByteArrayOutputStream pack200buffer = new ByteArrayOutputStream();
final Object packer = Class.forName("java.util.jar.Pack200").getMethod("newPacker").invoke(null);
Class.forName("java.util.jar.Pack200$Packer").getMethod("pack", JarInputStream.class, OutputStream.class).invoke(packer, new JarInputStream(new ByteArrayInputStream(jarbuffer.toByteArray())), pack200buffer);
InputStream result = Pack200Streams.unpack(new NoCloseInputStream(new ByteArrayInputStream(pack200buffer.toByteArray())));
ZipInputStream zipin = new ZipInputStream(result);
assertEquals("Test.class", zipin.getNextEntry().getName());
assertNull(zipin.getNextEntry());
}
use of org.junit.AssumptionViolatedException in project jacoco by jacoco.
the class Pack200StreamsTest method pack_should_throw_IOException_when_Pack200_not_available_in_JDK.
@Test
public void pack_should_throw_IOException_when_Pack200_not_available_in_JDK() {
try {
Class.forName("java.util.jar.Pack200");
throw new AssumptionViolatedException("this test requires JDK without Pack200");
} catch (ClassNotFoundException ignore) {
}
try {
Pack200Streams.pack(new byte[0], new ByteArrayOutputStream());
fail("expected exception");
} catch (IOException e) {
assertNull(e.getMessage());
assertTrue(e.getCause() instanceof ClassNotFoundException);
}
}
use of org.junit.AssumptionViolatedException in project jacoco by jacoco.
the class Pack200StreamsTest method unpack_should_throw_IOException_when_can_not_read_from_InputStream.
@Test
public void unpack_should_throw_IOException_when_can_not_read_from_InputStream() {
try {
Class.forName("java.util.jar.Pack200");
} catch (ClassNotFoundException e) {
throw new AssumptionViolatedException("this test requires JDK with Pack200");
}
final InputStream inputStream = new BrokenInputStream();
try {
Pack200Streams.unpack(inputStream);
fail("expected exception");
} catch (IOException e) {
assertTrue(e.getCause() instanceof IOException);
assertEquals("fake broken input stream", e.getCause().getMessage());
}
}
use of org.junit.AssumptionViolatedException in project jacoco by jacoco.
the class AnalyzerTest method testAnalyzeAll_Pack200.
@Test
public void testAnalyzeAll_Pack200() throws IOException {
try {
Class.forName("java.util.jar.Pack200");
} catch (ClassNotFoundException e) {
throw new AssumptionViolatedException("this test requires JDK with Pack200");
}
final ByteArrayOutputStream zipbuffer = new ByteArrayOutputStream();
final ZipOutputStream zip = new ZipOutputStream(zipbuffer);
zip.putNextEntry(new ZipEntry("org/jacoco/core/analysis/AnalyzerTest.class"));
zip.write(TargetLoader.getClassDataAsBytes(AnalyzerTest.class));
zip.finish();
final ByteArrayOutputStream pack200buffer = new ByteArrayOutputStream();
GZIPOutputStream gzipOutput = new GZIPOutputStream(pack200buffer);
Pack200Streams.pack(zipbuffer.toByteArray(), gzipOutput);
gzipOutput.finish();
final int count = analyzer.analyzeAll(new ByteArrayInputStream(pack200buffer.toByteArray()), "Test");
assertEquals(1, count);
assertClasses("org/jacoco/core/analysis/AnalyzerTest");
}
Aggregations