Skip to content

fix: outputUri now supports Windows paths #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions src/main/java/com/smartcodeltd/VersionMojo.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package com.smartcodeltd;

import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.maven.plugins.annotations.LifecyclePhase.PACKAGE;

import java.io.File;
import java.io.IOException;

import com.smartcodeltd.domain.Version;
import com.smartcodeltd.writer.Writer;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import java.io.File;
import java.io.IOException;
import java.net.URI;

import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.maven.plugins.annotations.LifecyclePhase.PACKAGE;

/**
* Retrieves project version specified in <code>pom.xml</code> and outputs it
* either to stdout or to a file, depending on <a href="/version-mojo.html">configuration</a>.
Expand Down Expand Up @@ -40,7 +39,7 @@ public class VersionMojo
* </p>
*/
@Parameter(defaultValue = default_output_uri, required = false, property = "outputUri")
private URI outputUri;
private String outputUri;

/**
* <p>
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/com/smartcodeltd/writer/Writer.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.smartcodeltd.writer;

import java.io.File;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.nio.charset.Charset;

public abstract class Writer {
public static Writer from(URI uri, Charset charset) {
public static Writer from(String output, Charset charset) {

URI uri = uri(output);

String className = writerClassNameFrom(uri);

Expand All @@ -19,6 +22,17 @@ public static Writer from(URI uri, Charset charset) {
}
}

private static URI uri(String output) {
File file = new File(output);
URI uri;
if (file.isAbsolute()) {
uri = file.toURI();
} else {
uri = URI.create(output);
}
return uri;
}

protected final URI uri;
protected final Charset charset;

Expand Down
42 changes: 31 additions & 11 deletions src/test/java/com/smartcodeltd/VersionMojoTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
package com.smartcodeltd;

import static com.smartcodeltd.matchers.EqualsIgnoringOSSpecificLineSeparators.equalsIgnoringOSSpecificLineSeparators;
import static com.smartcodeltd.sugar.ConfigEntry.configured;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

import com.smartcodeltd.sugar.ConfigEntry;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.logging.Log;
Expand All @@ -8,16 +19,6 @@
import org.junit.Rule;
import org.junit.Test;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.net.URI;

import static com.smartcodeltd.matchers.EqualsIgnoringOSSpecificLineSeparators.equalsIgnoringOSSpecificLineSeparators;
import static com.smartcodeltd.sugar.ConfigEntry.configured;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.*;

public class VersionMojoTest {

@Rule public final TestProjectResources resource = new TestProjectResources("src/test/resources/projects", "target/projects");
Expand Down Expand Up @@ -92,13 +93,32 @@ public void writes_templated_version_to_file() throws Exception {
));
}

@Test
public void writes_templated_version_to_file_with_outputUri_as_parameter() throws Exception {
releaseCandidateVersion = mojo.forProject("out-of-the-box");
releaseCandidateVersion.setLog(log);

String output = resource.baseDirectoryFor("out-of-the-box") + "/project.properties";
given(
configured("outputUri", output),
configured("outputTemplate",
"{{ version }}"
),
configured("encoding", "UTF-8")
);

releaseCandidateVersion.execute();

assertThat(resource.contentOf("out-of-the-box", "project.properties"), is("1.7.2-SNAPSHOT"));
}

@Test
public void trims_leading_whitespace_in_templates() throws Exception {
releaseCandidateVersion = mojo.forProject("out-of-the-box");
releaseCandidateVersion.setLog(log);

given(
configured("outputUri", URI.create("stdout")),
configured("outputUri", "stdout"),
configured("outputTemplate",
" ##teamcity[setParameter name='env.PROJECT_VERSION' value='{{ version }}']\n" +
" ##teamcity[message text='Project version: {{ version }}']"
Expand Down