mirror of
https://gitee.com/dcren/initializr.git
synced 2025-05-15 20:49:38 +08:00
Merge pull request #937 from htztomic
* pr/937: Refactor support for testing executable files Closes gh-937
This commit is contained in:
commit
974d36b077
@ -16,6 +16,7 @@
|
||||
|
||||
package io.spring.initializr.generator.spring.test;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Properties;
|
||||
@ -192,8 +193,14 @@ public class ProjectAssert {
|
||||
}
|
||||
|
||||
public ProjectAssert hasExecutableFile(String... localPaths) {
|
||||
if (runningOnWindows()) {
|
||||
for (String localPath : localPaths) {
|
||||
assertFile(localPath, true);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
for (String localPath : localPaths) {
|
||||
assertFile(localPath, true);
|
||||
assertExecutable(localPath, true);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@ -210,6 +217,19 @@ public class ProjectAssert {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProjectAssert assertExecutable(String localPath, boolean exist) {
|
||||
Path candidate = this.projectStructure.resolve(localPath);
|
||||
assertThat(Files.exists(candidate)).describedAs("Invalid presence (%s) exist for %s", exist, localPath)
|
||||
.isEqualTo(exist);
|
||||
assertThat(Files.isExecutable(candidate)).describedAs("File (%s) is not an executable", localPath)
|
||||
.isEqualTo(exist);
|
||||
return this;
|
||||
}
|
||||
|
||||
private boolean runningOnWindows() {
|
||||
return File.separatorChar == '\\';
|
||||
}
|
||||
|
||||
private Properties properties(String localPath) {
|
||||
Path file = this.projectStructure.resolve(localPath);
|
||||
try {
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
package io.spring.initializr.web;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.Charset;
|
||||
@ -32,6 +33,7 @@ import io.spring.initializr.web.AbstractInitializrIntegrationTests.Config;
|
||||
import io.spring.initializr.web.mapper.InitializrMetadataVersion;
|
||||
import io.spring.initializr.web.support.InitializrMetadataUpdateStrategy;
|
||||
import org.apache.tools.ant.Project;
|
||||
import org.apache.tools.ant.taskdefs.ExecTask;
|
||||
import org.apache.tools.ant.taskdefs.Expand;
|
||||
import org.apache.tools.ant.taskdefs.Untar;
|
||||
import org.json.JSONException;
|
||||
@ -211,22 +213,58 @@ public abstract class AbstractInitializrIntegrationTests {
|
||||
}
|
||||
|
||||
private void untar(Path archiveFile, Path project) {
|
||||
Untar expand = new Untar();
|
||||
expand.setProject(new Project());
|
||||
expand.setDest(project.toFile());
|
||||
expand.setSrc(archiveFile.toFile());
|
||||
Untar.UntarCompressionMethod method = new Untar.UntarCompressionMethod();
|
||||
method.setValue("gzip");
|
||||
expand.setCompression(method);
|
||||
expand.execute();
|
||||
if (!runningOnWindows()) {
|
||||
createProjectDir(project);
|
||||
ExecTask execTask = new ExecTask();
|
||||
execTask.setProject(new Project());
|
||||
execTask.setExecutable("tar");
|
||||
execTask.createArg().setValue("-C");
|
||||
execTask.createArg().setValue(project.toFile().getAbsolutePath());
|
||||
execTask.createArg().setValue("-xf");
|
||||
execTask.createArg().setValue(archiveFile.toFile().getAbsolutePath());
|
||||
execTask.execute();
|
||||
}
|
||||
else {
|
||||
Untar expand = new Untar();
|
||||
expand.setProject(new Project());
|
||||
expand.setDest(project.toFile());
|
||||
expand.setSrc(archiveFile.toFile());
|
||||
Untar.UntarCompressionMethod method = new Untar.UntarCompressionMethod();
|
||||
method.setValue("gzip");
|
||||
expand.setCompression(method);
|
||||
expand.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private void createProjectDir(Path project) {
|
||||
ExecTask execTask = new ExecTask();
|
||||
execTask.setProject(new Project());
|
||||
execTask.setExecutable("mkdir");
|
||||
execTask.createArg().setValue(project.toFile().getAbsolutePath());
|
||||
execTask.execute();
|
||||
}
|
||||
|
||||
private void unzip(Path archiveFile, Path project) {
|
||||
Expand expand = new Expand();
|
||||
expand.setProject(new Project());
|
||||
expand.setDest(project.toFile());
|
||||
expand.setSrc(archiveFile.toFile());
|
||||
expand.execute();
|
||||
if (!runningOnWindows()) {
|
||||
ExecTask execTask = new ExecTask();
|
||||
execTask.setProject(new Project());
|
||||
execTask.setExecutable("unzip");
|
||||
execTask.createArg().setValue(archiveFile.toFile().getAbsolutePath());
|
||||
execTask.createArg().setValue("-d");
|
||||
execTask.createArg().setValue(project.toFile().getAbsolutePath());
|
||||
execTask.execute();
|
||||
}
|
||||
else {
|
||||
Expand expand = new Expand();
|
||||
expand.setProject(new Project());
|
||||
expand.setDest(project.toFile());
|
||||
expand.setSrc(archiveFile.toFile());
|
||||
expand.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean runningOnWindows() {
|
||||
return File.separatorChar == '\\';
|
||||
}
|
||||
|
||||
protected Path writeArchive(byte[] body) throws IOException {
|
||||
|
Loading…
Reference in New Issue
Block a user