Skip to content
This repository has been archived by the owner on Jan 18, 2021. It is now read-only.

Commit

Permalink
Merge pull request #383 from mockito/ep3
Browse files Browse the repository at this point in the history
expose release notes url
  • Loading branch information
epeee committed Sep 8, 2017
2 parents 2fbbca8 + 7f67cb2 commit 998b1cf
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 43 deletions.
Expand Up @@ -46,7 +46,7 @@ public class UpdateReleaseNotesTask extends DefaultTask {
*/
@TaskAction
public void updateReleaseNotes() {
new UpdateReleaseNotes(new HeaderProvider()).updateReleaseNotes(this);
new UpdateReleaseNotes().updateReleaseNotes(this, new HeaderProvider());
}

/**
Expand Down Expand Up @@ -128,6 +128,13 @@ public String getGitHubRepository() {
return gitHubRepository;
}

/**
* @return a link to the generated release notes file hosted on Github.
*/
public String getReleaseNotesUrl(String branch) {
return new UpdateReleaseNotes().getReleaseNotesUrl(this, branch);
}

/**
* See {@link #getGitHubRepository()}
*/
Expand Down
Expand Up @@ -26,14 +26,9 @@
public class UpdateReleaseNotes {

private static final Logger LOG = Logging.getLogger(UpdateReleaseNotesTask.class);
private final HeaderProvider headerProvider;

public UpdateReleaseNotes(HeaderProvider headerProvider) {
this.headerProvider = headerProvider;
}

public void updateReleaseNotes(UpdateReleaseNotesTask task) {
String newContent = generateNewContent(task);
public void updateReleaseNotes(UpdateReleaseNotesTask task, HeaderProvider headerProvider) {
String newContent = generateNewContent(task, headerProvider);
updateReleaseNotes(task.isPreviewMode(), task.getReleaseNotesFile(), newContent);
}

Expand Down Expand Up @@ -68,7 +63,7 @@ static Map<String, Contributor> contributorsMap(Collection<String> contributorsF
return out;
}

public String generateNewContent(UpdateReleaseNotesTask task) {
public String generateNewContent(UpdateReleaseNotesTask task, HeaderProvider headerProvider) {
LOG.lifecycle(" Building new release notes based on {}", task.getReleaseNotesFile());

String headerMessage = headerProvider.getHeader(task.getHeader());
Expand Down Expand Up @@ -102,4 +97,8 @@ private String getVcsCommitTemplate(UpdateReleaseNotesTask task) {
return "";
}
}

public String getReleaseNotesUrl(UpdateReleaseNotesTask task, String branch) {
return task.getGitHubUrl() + "/" + task.getGitHubRepository() + "/blob/" + branch + "/" + task.getProject().relativePath(task.getReleaseNotesFile());
}
}

This file was deleted.

@@ -0,0 +1,55 @@
package org.shipkit.internal.gradle.notes.tasks

import org.gradle.testfixtures.ProjectBuilder
import org.junit.Rule
import org.junit.rules.TemporaryFolder
import org.shipkit.gradle.notes.UpdateReleaseNotesTask
import spock.lang.Specification

class UpdateReleaseNotesTest extends Specification {

@Rule
TemporaryFolder tmp = new TemporaryFolder()

UpdateReleaseNotes update = new UpdateReleaseNotes()

def "should update release notes if not in preview mode"() {
def f = tmp.newFile("release-notes.md")

when:
update.updateReleaseNotes(false, f, "content")

then:
f.text == "content"
}

def "should not modify releaseNotesFile if in preview mode"() {
def f = tmp.newFile("release-notes.md")

when:
update.updateReleaseNotes(true, f, "content")

then:
f.text.isEmpty()
}

def "check release notes url"(branch, expectedUrl) {
given:
def task = Mock(UpdateReleaseNotesTask)
def project = new ProjectBuilder().withName("myProject").withProjectDir(tmp.root).build()

when:
task.gitHubUrl >> "https://github.com"
task.gitHubRepository >> 'mockito/mockito'
task.project >> project
task.releaseNotesFile >> project.file("doc/release-notes/official.md")

then:
expectedUrl == update.getReleaseNotesUrl(task, branch)

where:
branch | expectedUrl
'master' | 'https://github.com/mockito/mockito/blob/master/doc/release-notes/official.md'
'release/2.x' | 'https://github.com/mockito/mockito/blob/release/2.x/doc/release-notes/official.md'
}
}

0 comments on commit 998b1cf

Please sign in to comment.