|
28 | 28 | import java.net.URL;
|
29 | 29 | import java.net.URLClassLoader;
|
30 | 30 | import java.nio.charset.StandardCharsets;
|
| 31 | +import java.nio.file.Files; |
| 32 | +import java.nio.file.attribute.FileTime; |
| 33 | +import java.time.temporal.ChronoUnit; |
31 | 34 | import java.util.ArrayList;
|
32 | 35 | import java.util.Arrays;
|
33 | 36 | import java.util.Collections;
|
@@ -343,6 +346,44 @@ public void testShaderWithNestedJar() throws Exception
|
343 | 346 |
|
344 | 347 | final String innerJarFileName = "inner.jar";
|
345 | 348 |
|
| 349 | + temporaryFolder.create(); |
| 350 | + File innerJar = temporaryFolder.newFile( innerJarFileName ); |
| 351 | + try ( JarOutputStream jos = new JarOutputStream( Files.newOutputStream( innerJar.toPath() ) ) ) |
| 352 | + { |
| 353 | + jos.putNextEntry( new JarEntry( "foo.txt" ) ); |
| 354 | + jos.write( "c1".getBytes( StandardCharsets.UTF_8 ) ); |
| 355 | + jos.closeEntry(); |
| 356 | + } |
| 357 | + |
| 358 | + ShadeRequest shadeRequest = new ShadeRequest(); |
| 359 | + shadeRequest.setJars( new LinkedHashSet<>( Collections.singleton( innerJar ) ) ); |
| 360 | + shadeRequest.setFilters( Collections.emptyList() ); |
| 361 | + shadeRequest.setRelocators( Collections.emptyList() ); |
| 362 | + shadeRequest.setResourceTransformers( Collections.emptyList() ); |
| 363 | + File shadedFile = temporaryFolder.newFile( "shaded.jar" ); |
| 364 | + shadeRequest.setUberJar( shadedFile ); |
| 365 | + |
| 366 | + DefaultShader shader = newShader(); |
| 367 | + shader.shade( shadeRequest ); |
| 368 | + |
| 369 | + FileTime lastModified = FileTime.from( Files.getLastModifiedTime( shadedFile.toPath() ).toInstant() |
| 370 | + .minus( 5, ChronoUnit.SECONDS ) ); |
| 371 | + |
| 372 | + Files.setLastModifiedTime( shadedFile.toPath(), lastModified ); |
| 373 | + |
| 374 | + shader.shade(shadeRequest); |
| 375 | + assertEquals( lastModified, Files.getLastModifiedTime( shadedFile.toPath() ) ); |
| 376 | + |
| 377 | + temporaryFolder.delete(); |
| 378 | + } |
| 379 | + |
| 380 | + @Test |
| 381 | + public void testShaderNoOverwrite() throws Exception |
| 382 | + { |
| 383 | + TemporaryFolder temporaryFolder = new TemporaryFolder(); |
| 384 | + |
| 385 | + final String innerJarFileName = "inner.jar"; |
| 386 | + |
346 | 387 | temporaryFolder.create();
|
347 | 388 | File innerJar = temporaryFolder.newFile( innerJarFileName );
|
348 | 389 | try ( JarOutputStream jos = new JarOutputStream( new FileOutputStream( innerJar ) ) )
|
|
0 commit comments