package org.ops4j.pax.exam.showcase; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import static org.ops4j.pax.exam.CoreOptions.options; import java.io.IOException; import java.io.InputStream; import org.junit.Test; import org.junit.runner.RunWith; import org.ops4j.pax.exam.Customizer; import org.ops4j.pax.exam.Inject; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.junit.Configuration; import org.ops4j.pax.exam.junit.JUnit4TestRunner; import org.ops4j.pax.swissbox.tinybundles.core.TinyBundles; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; /** * This example shows how you can use {@link Customizer} and {@link TinyBundles} to customize the test probe how you * want to. You could also add/remove resources of cause. This example just shows a "common" usage to "fix" some headers * in the testprobe. * * @author Toni Menzel (tonit) * @since Oct 02, 2009 */ @RunWith( JUnit4TestRunner.class ) public class OverwriteTestProbe { @Configuration public static Option[] configure() { return options( new Customizer() { @Override public InputStream customizeTestProbe( InputStream testProbe ) throws IOException { return TinyBundles.modifyBundle( testProbe ). removeHeader( Constants.EXPORT_PACKAGE ) .set( Constants.BUNDLE_SYMBOLICNAME, "HelloWorld" ) .build(); } } ); } @Inject BundleContext context; @Test public void show() { // test that our testprobe has been changed like we wanted to: assertEquals( "HelloWorld", context.getBundle().getHeaders().get( Constants.BUNDLE_SYMBOLICNAME ) ); assertNull( context.getBundle().getHeaders().get( Constants.EXPORT_PACKAGE ) ); } }