// Path: src/test/java/matchers/IsFailure.java
// public static Matcher<Failure> failure(final String methodName,
//     final Class<? extends Throwable> exceptionType, final String failureMessage) {
//   return new IsFailure(methodName, exceptionType, failureMessage);
// }
// 
// Path: src/test/java/com/greghaskins/spectrum/SpectrumHelper.java
// public class SpectrumHelper {
//   // Allows us to hide a test class from IDE/test discovery
//   public static class NullRunner extends Runner {
//     private Class<?> clazz;
// 
//     public NullRunner(Class<?> clazz) {
//       this.clazz = clazz;
//     }
// 
//     @Override
//     public Description getDescription() {
//       // empty suite
// 
//       return Description.createSuiteDescription(clazz);
//     }
// 
//     @Override
//     public void run(RunNotifier notifier) {
//       // do nothing
//     }
//   }
// 
//   public static class RecordingListener extends RunListener {
//     private List<Description> testsStarted = new ArrayList<>();
// 
//     @Override
//     public void testStarted(Description description) throws Exception {
//       super.testStarted(description);
//       testsStarted.add(description);
//     }
// 
//     public List<Description> getTestsStarted() {
//       return testsStarted;
//     }
//   }
// 
//   public static Result run(final Class<?> specClass) throws Exception {
//     return runWithJUnit(new Spectrum(specClass));
//   }
// 
//   public static Result run(final Block block) {
//     return runWithJUnit(
//         new Spectrum(Description.createSuiteDescription(block.getClass()), block));
//   }
// 
//   /**
//    * Allows a listener to listen to a run.
//    * @param specClass the class to execute via Spectrum
//    * @param listener the listener to use
//    * @param <T> type of listener
//    * @return the listener for fluent usage
//    * @throws Exception on error
//    */
//   public static <T extends RunListener> T runWithListener(final Class<?> specClass,
//       final T listener) throws Exception {
//     RunNotifier notifier = new RunNotifier();
//     notifier.addListener(listener);
//     new Spectrum(specClass).run(notifier);
// 
//     return listener;
//   }
// 
//   private static Result runWithJUnit(final Runner runner) {
//     return new JUnitCore().run(Request.runner(runner));
//   }
// }


import static matchers.IsFailure.failure;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import com.greghaskins.spectrum.SpectrumHelper;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.Result;
package given.a.spec.with.exception.in.constructor;




public class WhenRunningTheSpec {

  private Result result;

// Path: src/test/java/matchers/IsFailure.java
// public static Matcher<Failure> failure(final String methodName,
//     final Class<? extends Throwable> exceptionType, final String failureMessage) {
//   return new IsFailure(methodName, exceptionType, failureMessage);
// }
// 
// Path: src/test/java/com/greghaskins/spectrum/SpectrumHelper.java
// public class SpectrumHelper {
//   // Allows us to hide a test class from IDE/test discovery
//   public static class NullRunner extends Runner {
//     private Class<?> clazz;
// 
//     public NullRunner(Class<?> clazz) {
//       this.clazz = clazz;
//     }
// 
//     @Override
//     public Description getDescription() {
//       // empty suite
// 
//       return Description.createSuiteDescription(clazz);
//     }
// 
//     @Override
//     public void run(RunNotifier notifier) {
//       // do nothing
//     }
//   }
// 
//   public static class RecordingListener extends RunListener {
//     private List<Description> testsStarted = new ArrayList<>();
// 
//     @Override
//     public void testStarted(Description description) throws Exception {
//       super.testStarted(description);
//       testsStarted.add(description);
//     }
// 
//     public List<Description> getTestsStarted() {
//       return testsStarted;
//     }
//   }
// 
//   public static Result run(final Class<?> specClass) throws Exception {
//     return runWithJUnit(new Spectrum(specClass));
//   }
// 
//   public static Result run(final Block block) {
//     return runWithJUnit(
//         new Spectrum(Description.createSuiteDescription(block.getClass()), block));
//   }
// 
//   /**
//    * Allows a listener to listen to a run.
//    * @param specClass the class to execute via Spectrum
//    * @param listener the listener to use
//    * @param <T> type of listener
//    * @return the listener for fluent usage
//    * @throws Exception on error
//    */
//   public static <T extends RunListener> T runWithListener(final Class<?> specClass,
//       final T listener) throws Exception {
//     RunNotifier notifier = new RunNotifier();
//     notifier.addListener(listener);
//     new Spectrum(specClass).run(notifier);
// 
//     return listener;
//   }
// 
//   private static Result runWithJUnit(final Runner runner) {
//     return new JUnitCore().run(Request.runner(runner));
//   }
// }


// Path: src/test/java/given/a/spec/with/exception/in/constructor/WhenRunningTheSpec.java
import static matchers.IsFailure.failure;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import com.greghaskins.spectrum.SpectrumHelper;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.Result;

package given.a.spec.with.exception.in.constructor;




public class WhenRunningTheSpec {

  private Result result;

  @Before