Commit 2f260888 authored by Andy Wilkinson's avatar Andy Wilkinson

Unpack CLI for its integration tests as dir is no longer assembled

Closes gh-9080
parent dc8a34f3
......@@ -19,6 +19,8 @@ package org.springframework.boot.cli.infrastructure;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
......@@ -27,8 +29,11 @@ import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.springframework.util.Assert;
import org.springframework.util.StreamUtils;
/**
* Utility to invoke the command line in the same way as a user would, i.e. via the shell
......@@ -63,18 +68,35 @@ public final class CommandLineInvoker {
return processBuilder.start();
}
private File findLaunchScript() {
File dir = new File("target");
dir = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory() && pathname.getName().contains("-bin");
private File findLaunchScript() throws IOException {
File unpacked = new File("target/unpacked-cli");
if (!unpacked.isDirectory()) {
File zip = new File("target").listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith("-bin.zip");
}
})[0];
ZipInputStream input = new ZipInputStream(new FileInputStream(zip));
ZipEntry entry;
while ((entry = input.getNextEntry()) != null) {
File file = new File(unpacked, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
}
else {
file.getParentFile().mkdirs();
StreamUtils.copy(input, new FileOutputStream(file));
if (entry.getName().endsWith("/bin/spring")) {
file.setExecutable(true);
}
}
}
})[0];
dir = new File(dir,
dir.getName().replace("-bin", "").replace("spring-boot-cli", "spring"));
dir = new File(dir, "bin");
File launchScript = new File(dir, isWindows() ? "spring.bat" : "spring");
}
File bin = new File(unpacked.listFiles()[0], "bin");
File launchScript = new File(bin, isWindows() ? "spring.bat" : "spring");
Assert.state(launchScript.exists() && launchScript.isFile(),
"Could not find CLI launch script " + launchScript.getAbsolutePath());
return launchScript;
......
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