@@ -0,0 +1,1737 @@
+package atg.tools.ant.mock;%0A%0Aimport atg.tools.ant.util.IdentityFeatureExtractor;%0Aimport atg.tools.ant.util.ManifestUtils;%0Aimport atg.tools.ant.util.StringUtils;%0A%0Aimport java.io.BufferedOutputStream;%0Aimport java.io.File;%0Aimport java.io.FileOutputStream;%0Aimport java.io.IOException;%0Aimport java.util.jar.Attributes;%0Aimport java.util.jar.Manifest;%0A%0Aimport static atg.tools.ant.util.AtgAttribute.ATG_REQUIRED;%0Aimport static org.junit.Assert.assertTrue;%0A%0A/**%0A * Helper class to generate a manifest file for unit tests.%0A *%0A * @author msicker%0A * @version 2.0%0A */%0Apublic class MockManifest %7B%0A%0A    private static final IdentityFeatureExtractor%3CString%3E STRING_IDENTITY_EXTRACTOR =%0A            new IdentityFeatureExtractor%3CString%3E();%0A%0A    private final Manifest manifest = new Manifest();%0A    private final Attributes attributes = manifest.getMainAttributes();%0A%0A    private final File rootDirectory;%0A%0A    public MockManifest(final File rootDirectory) %7B%0A        this.rootDirectory = rootDirectory;%0A    %7D%0A%0A    public MockManifest withRequiredModules(final Iterable%3CString%3E moduleNames) %7B%0A        final String modules = StringUtils.join(' ', moduleNames.iterator(), STRING_IDENTITY_EXTRACTOR);%0A        this.attributes.put(ATG_REQUIRED.getName(), modules);%0A        return this;%0A    %7D%0A%0A    public void save()%0A            throws IOException %7B%0A        if (!this.rootDirectory.exists()) %7B%0A            assertTrue(this.rootDirectory.mkdirs());%0A        %7D%0A        final File manifest = ManifestUtils.touchManifestIn(this.rootDirectory);%0A        final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(manifest));%0A        try %7B%0A            this.manifest.write(stream);%0A        %7D finally %7B%0A            stream.close();%0A        %7D%0A    %7D%0A%7D%0A

Add mock manifest helper class.