package org.cloudsmith.geppetto.forge.maven.plugin;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.apache.maven.plugin.MojoFailureException;
import org.junit.Test;
public class ValidateTestMojo extends AbstractForgeTestMojo {
@Test
public void moduleWithComplexRuby() throws Exception {
setTestForgeModulesRoot("test_module_complex_ruby");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Complex ruby was not detected");
}
catch(MojoFailureException e) {
assertTrue("Complex ruby was not detected", e.getMessage().contains("version must be specified"));
}
}
@Test
public void moduleWithInterpolatedComplexRuby() throws Exception {
setTestForgeModulesRoot("test_module_interpolated_complex_ruby");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Interpolated complex ruby was not detected");
}
catch(MojoFailureException e) {
assertTrue(
"Interpolated complex ruby was not detected", e.getMessage().contains("version must be specified"));
}
}
@Test
public void moduleWithInvalidMetadata() throws Exception {
setTestForgeModulesRoot("test_metadata_invalid");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Invalid metadata was not detected");
}
catch(MojoFailureException e) {
assertTrue("Invalid metadata was not detected", e.getMessage().contains("Unexpected character"));
}
}
@Test
public void moduleWithNoMetadataNorModulefile() throws Exception {
setTestForgeModulesRoot("test_no_metadata_nor_modulefile");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Module found although both metadata.json and Modulefile is missing");
}
catch(MojoFailureException e) {
assertTrue(
"Module found although both metadata.json and Modulefile is missing",
e.getMessage().contains("No modules found"));
}
}
@Test
public void moduleWithNoModulefile() throws Exception {
setTestForgeModulesRoot("test_metadata_no_modulefile");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
}
catch(MojoFailureException e) {
fail("Validation failed when Modulefile is missing: " + e.getMessage());
}
}
@Test
public void moduleWithoutMetadataName() throws Exception {
setTestForgeModulesRoot("test_metadata_no_name");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Missing module name in metadata.json was not detected");
}
catch(MojoFailureException e) {
assertTrue(
"Missing module name in metadata.json was not detected",
e.getMessage().contains("name (user-module) must be specified"));
}
}
@Test
public void moduleWithoutMetadataVersion() throws Exception {
setTestForgeModulesRoot("test_metadata_no_version");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Missing module version in metadata.json was not detected");
}
catch(MojoFailureException e) {
assertTrue(
"Missing module version in metadata.json was not detected",
e.getMessage().contains("version must be specified"));
}
}
@Test
public void moduleWithoutName() throws Exception {
setTestForgeModulesRoot("test_module_no_name");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Missing module name was not detected");
}
catch(MojoFailureException e) {
assertTrue(
"Missing module name was not detected", e.getMessage().contains("name (user-module) must be specified"));
}
}
@Test
public void moduleWithoutVersion() throws Exception {
setTestForgeModulesRoot("test_module_no_version");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Missing module version was not detected");
}
catch(MojoFailureException e) {
assertTrue("Missing module version was not detected", e.getMessage().contains("version must be specified"));
}
}
@Test
public void unresolvedDependency() throws Exception {
setTestForgeModulesRoot("test_module_b");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
fail("Unresolved dependency was not detected");
}
catch(MojoFailureException e) {
assertTrue("Unresolved dependency was not detected", e.getMessage().contains("Unresolved"));
}
}
@Test
public void validateOK() throws Exception {
setTestForgeModulesRoot("test_module_c");
Validate validate = (Validate) lookupConfiguredMojo(createMavenSession(), newMojoExecution("validate"));
assertNotNull(validate);
try {
validate.execute();
}
catch(MojoFailureException e) {
fail("Validation of OK module failed: " + e.getMessage());
}
}
}