Use project location to infer the artifactId

On start.spring.io, if you customize the artifactId it creates a zip file
with the same name. The `spring init` command did not have a similar
shortcut.

This commit updates the request to customize the artifactId if none is
set and a custom location was specified. Just as we check for the
presence of a dot to figure out if we have to extract the archive or not,
we check for it to generate an artifactId without an extension.

In practice, `spring init foo` creates a foo directory with a project
whose artifactId is `foo` and `spring init foo.zip` stores a foo.zip
file with the same project (i.e. the artifactId is `foo`).

Closes gh-3714
This commit is contained in:
Stephane Nicoll
2015-08-14 17:10:21 +02:00
parent 58d0776abe
commit 73ee6652fd
2 changed files with 51 additions and 2 deletions

View File

@@ -139,6 +139,39 @@ public class ProjectGenerationRequestTests {
this.request.generateUrl(createDefaultMetadata()));
}
@Test
public void outputCustomizeArtifactId() {
this.request.setOutput("my-project");
assertEquals(
createDefaultUrl("?artifactId=my-project&type=test-type"),
this.request.generateUrl(createDefaultMetadata()));
}
@Test
public void outputArchiveCustomizeArtifactId() {
this.request.setOutput("my-project.zip");
assertEquals(
createDefaultUrl("?artifactId=my-project&type=test-type"),
this.request.generateUrl(createDefaultMetadata()));
}
@Test
public void outputArchiveWithDotsCustomizeArtifactId() {
this.request.setOutput("my.nice.project.zip");
assertEquals(
createDefaultUrl("?artifactId=my.nice.project&type=test-type"),
this.request.generateUrl(createDefaultMetadata()));
}
@Test
public void outputDoesNotOverrideCustomArtifactId() {
this.request.setOutput("my-project");
this.request.setArtifactId("my-id");
assertEquals(
createDefaultUrl("?artifactId=my-id&type=test-type"),
this.request.generateUrl(createDefaultMetadata()));
}
@Test
public void buildNoMatch() {
InitializrServiceMetadata metadata = readMetadata();