Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DRAFT] [MASSEBLY-925] Detailed error message on assembly failure #21

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -5,3 +5,5 @@ target
.idea
*.iml
.checkstyle
*.ipr
*.iws
Expand Up @@ -153,9 +153,11 @@ public File createArchive( final Assembly assembly, final String fullName, final

final File destFile = new File( outputDirectory, filename );

String finalName = "";

try
{
final String finalName = configSource.getFinalName();
finalName = configSource.getFinalName();
final String specifiedBasedir = assembly.getBaseDirectory();

String basedir = finalName;
Expand Down Expand Up @@ -188,7 +190,8 @@ public File createArchive( final Assembly assembly, final String fullName, final
catch ( final ArchiverException | IOException e )
{
throw new ArchiveCreationException(
"Error creating assembly archive " + assembly.getId() + ": " + e.getMessage(), e );
"Error creating assembly archive " + assembly.getId() + ": " + e.getMessage()
+ "Error caused by: " + finalName + " destination file: " + filename , e );
}
catch ( final NoSuchArchiverException e )
{
Expand Down
Expand Up @@ -43,6 +43,7 @@
import org.apache.maven.plugins.assembly.archive.phase.AssemblyArchiverPhase;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.mojos.AbstractAssemblyMojo;
import org.apache.maven.plugins.assembly.testutils.PojoConfigSource;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusContainer;
Expand All @@ -51,20 +52,24 @@
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.diags.NoOpArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.tar.TarLongFileMode;
import org.codehaus.plexus.archiver.war.WarArchiver;
import org.codehaus.plexus.archiver.zip.ZipArchiver;
import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;

import javax.print.attribute.standard.DateTimeAtCreation;

@RunWith( MockitoJUnitRunner.class )
public class DefaultAssemblyArchiverTest
{
Expand Down Expand Up @@ -161,6 +166,58 @@ public void testCreateArchive()
verify( archiverManager ).getArchiver( "zip" );
}

@Test
public void testCreateArchiveCorruptZip()
throws Exception
{
Archiver archiver = mock( Archiver.class );

final ArchiverManager archiverManager = mock( ArchiverManager.class );
when( archiverManager.getArchiver( "zip" ) ).thenReturn( archiver );

final AssemblyArchiverPhase phase = mock( AssemblyArchiverPhase.class );

final File outDir = temporaryFolder.newFolder( "out" );

final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
when( configSource.getTemporaryRootDirectory() ).thenReturn( new File ( temporaryFolder.getRoot(), "temp" ) );
when( configSource.getOverrideUid() ).thenReturn( 0 );
when( configSource.getOverrideUserName() ).thenReturn( "root" );
when( configSource.getOverrideGid() ).thenReturn( 0 );
when( configSource.getOverrideGroupName() ).thenReturn( "root" );
when( configSource.getOutputDirectory() ).thenReturn( outDir );
when( configSource.getFinalName() ).thenReturn( "corruptZipFinalName" );
when( configSource.getWorkingDirectory() ).thenReturn( new File( "src/test/resources/corruptZIP.zip" ) );

final Assembly assembly = new Assembly();
assembly.setId( "id" );

final DefaultAssemblyArchiver subject = createSubject( archiverManager, Collections.singletonList( phase ), null );

// subject.createArchive( assembly, "full-name", "zip", configSource, false, null, null );

String errorMessage = "";
try
{
subject.createArchive(assembly, "corruptZIP", "zip", configSource, false, null, null );
}
catch(ArchiveCreationException e)
{
errorMessage = e.getMessage();
}
catch ( Exception e )
{
errorMessage = "Some other error";
}
Assert.fail();

assertEquals("Failed to create assembly: Error creating assembly archive base:"
+ "archive is not a ZIP archive -> [Help 1] Error caused by: corruptZIP.zip "
+ "destination file: corruptZIP.zip", errorMessage);


}

@Test
public void testCreateArchiver_ShouldConfigureArchiver()
throws Exception
Expand Down
1 change: 1 addition & 0 deletions src/test/resources/corruptZIP.zip
@@ -0,0 +1 @@
this is a test