@@ -0,0 +1,1701 @@
+package com.maddenabbott.jenny.test;%0A%0Aimport java.io.IOException;%0Aimport java.net.URI;%0Aimport java.net.URISyntaxException;%0Aimport java.net.URL;%0Aimport java.nio.file.Files;%0Aimport java.nio.file.Paths;%0A%0Aimport org.hamcrest.Matcher;%0Aimport static org.hamcrest.Matchers.is;%0A%0A/**%0A * Test utility to verify multi-line Strings against content in files.%0A */%0Apublic class OutputMatcher %7B%0A  /**%0A   * Verify that something matches exactly the content of a file. The file name given should be a%0A   * path relative to a directory called output at the root of the classpath,%0A   * with no file extension. A file extension of '.txt' will automatically be appended.%0A   *%0A   * For example %22foo%22 would be the name of a file at classpath:output/foo.txt whilst %22foo/bar%22%0A   * would load the file classpath:output/foo/bar.txt.%0A   *%0A   * All of this is necessary because Java has no real way of having multi-line Strings so they%0A   * must be specified in files instead.%0A   *%0A   * @param path the path of the file to load content from%0A   * @return a Matcher that will verify equality with the contents of the loaded file%0A   */%0A  public static Matcher%3CString%3E isIn(final String path) %7B%0A%0A    URL url = ClassLoader.getSystemResource(%22output/%22 + path + %22.txt%22);%0A    if (url == null) %7B%0A      throw new RuntimeException(%22Unable to load output resource %22 + path);%0A    %7D%0A%0A    URI uri;%0A    try %7B%0A      uri = url.toURI();%0A    %7D catch (URISyntaxException e) %7B%0A      throw new RuntimeException(%22Unable to load output resource %22 + path);%0A    %7D%0A%0A    try %7B%0A      return is(new String(Files.readAllBytes(Paths.get(uri))));%0A    %7D catch (IOException e) %7B%0A      throw new RuntimeException(%22Unable to load output resource %22 + path);%0A    %7D%0A  %7D%0A%7D%0A

Add utility for verifying equality of multiline strings against content in files.