Commit 899e8e18 authored by Phillip Webb's avatar Phillip Webb

Merge branch '2.3.x'

Closes gh-23001
parents cfc053d7 f7452b93
...@@ -101,6 +101,7 @@ public class Repackager extends Packager { ...@@ -101,6 +101,7 @@ public class Repackager extends Packager {
public void repackage(File destination, Libraries libraries, LaunchScript launchScript, FileTime lastModifiedTime) public void repackage(File destination, Libraries libraries, LaunchScript launchScript, FileTime lastModifiedTime)
throws IOException { throws IOException {
Assert.isTrue(destination != null && !destination.isDirectory(), "Invalid destination"); Assert.isTrue(destination != null && !destination.isDirectory(), "Invalid destination");
getLayout(); // get layout early
if (lastModifiedTime != null && getLayout() instanceof War) { if (lastModifiedTime != null && getLayout() instanceof War) {
throw new IllegalStateException("Reproducible repackaging is not supported with war packaging"); throw new IllegalStateException("Reproducible repackaging is not supported with war packaging");
} }
......
...@@ -139,6 +139,15 @@ class RepackagerTests extends AbstractPackagerTests<Repackager> { ...@@ -139,6 +139,15 @@ class RepackagerTests extends AbstractPackagerTests<Repackager> {
assertThat(hasLauncherClasses(this.destination)).isTrue(); assertThat(hasLauncherClasses(this.destination)).isTrue();
} }
@Test
void layoutFactoryGetsOriginalFile() throws Exception {
this.testJarFile.addClass("a/b/C.class", ClassWithMainMethod.class);
Repackager repackager = createRepackager(this.testJarFile.getFile(), false);
repackager.setLayoutFactory(new TestLayoutFactory());
repackager.repackage(this.destination, NO_LIBRARIES);
assertThat(hasLauncherClasses(this.destination)).isTrue();
}
@Test @Test
void addLauncherScript() throws Exception { void addLauncherScript() throws Exception {
this.testJarFile.addClass("a/b/C.class", ClassWithMainMethod.class); this.testJarFile.addClass("a/b/C.class", ClassWithMainMethod.class);
...@@ -266,4 +275,14 @@ class RepackagerTests extends AbstractPackagerTests<Repackager> { ...@@ -266,4 +275,14 @@ class RepackagerTests extends AbstractPackagerTests<Repackager> {
} }
static class TestLayoutFactory implements LayoutFactory {
@Override
public Layout getLayout(File source) {
assertThat(source.length()).isGreaterThan(0);
return new DefaultLayoutFactory().getLayout(source);
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment