@@ -477,6 +477,45 @@ public void testShaderWithDuplicateService() throws Exception
477
477
temporaryFolder .delete ();
478
478
}
479
479
480
+ @ Test
481
+ public void testShaderWithSmallEntries () throws Exception
482
+ {
483
+ TemporaryFolder temporaryFolder = new TemporaryFolder ();
484
+
485
+ final String innerJarFileName = "inner.jar" ;
486
+ int len ;
487
+
488
+ temporaryFolder .create ();
489
+ File innerJar = temporaryFolder .newFile ( innerJarFileName );
490
+ try ( JarOutputStream jos = new JarOutputStream ( new FileOutputStream ( innerJar ) ) )
491
+ {
492
+ jos .putNextEntry ( new JarEntry ( "foo.txt" ) );
493
+ byte [] bytes = "c1" .getBytes (StandardCharsets .UTF_8 );
494
+ len = bytes .length ;
495
+ jos .write ( bytes );
496
+ jos .closeEntry ();
497
+ }
498
+
499
+ ShadeRequest shadeRequest = new ShadeRequest ();
500
+ shadeRequest .setJars ( new LinkedHashSet <>( Collections .singleton ( innerJar ) ) );
501
+ shadeRequest .setFilters ( new ArrayList <Filter >() );
502
+ shadeRequest .setRelocators ( new ArrayList <Relocator >() );
503
+ shadeRequest .setResourceTransformers ( new ArrayList <ResourceTransformer >() );
504
+ File shadedFile = temporaryFolder .newFile ( "shaded.jar" );
505
+ shadeRequest .setUberJar ( shadedFile );
506
+
507
+ DefaultShader shader = newShader ();
508
+ shader .shade ( shadeRequest );
509
+
510
+ JarFile shadedJarFile = new JarFile ( shadedFile );
511
+ JarEntry entry = shadedJarFile .getJarEntry ( "foo.txt" );
512
+
513
+ //After shading, entry compression method should not be changed.
514
+ Assert .assertEquals ( entry .getSize (), len );
515
+
516
+ temporaryFolder .delete ();
517
+ }
518
+
480
519
private void writeEntryWithoutCompression ( String entryName , byte [] entryBytes , JarOutputStream jos ) throws IOException
481
520
{
482
521
final JarEntry entry = new JarEntry ( entryName );
0 commit comments