package e2e;
import org.apache.maven.shared.invoker.MavenInvocationException;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.hamcrest.CoreMatchers;
import org.hamcrest.Matcher;
import org.junit.BeforeClass;
import org.junit.Test;
import scaffolding.MvnRunner;
import scaffolding.TestProject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
public class HelpTest {
private static final String multi_module_release_help = "releaser:help";
private static TestProject someProject;
@BeforeClass
public static void installPluginToLocalRepo() throws MavenInvocationException, IOException, GitAPIException {
MvnRunner.installReleasePluginToLocalRepo();
someProject = TestProject.singleModuleProject();
}
@Test
public void runningTheHelpMojoTellsYouAboutThePlugin() throws IOException {
assertThat(
mvn(multi_module_release_help),
containsStrings(
"This plugin has 3 goals:",
"releaser:release",
"releaser:help",
multi_module_release_help));
}
private List<String> mvn(String... commands) throws IOException {
return new MvnRunner().runMaven(someProject.localDir, commands);
}
@Test
public void canShowInformationAboutTheReleaseGoal() throws IOException {
assertThat(
mvn(multi_module_release_help, "-Dgoal=release", "-Ddetail=true"),
containsStrings(
"The goals to run against the project during a release",
"The build number to use in the release version"));
}
private static Matcher<Iterable<? super String>> containsStrings(String... strings) {
List<Matcher<Iterable<? super String>>> matchers = new ArrayList<>();
for (String s : strings)
matchers.add(CoreMatchers.hasItem(containsString(s)));
return allOf((Iterable) matchers);
}
}