More Test covarage.

master
Markus Kreth 2 months ago
parent ade0b73919
commit ecba39e3a0
  1. 1
      .gitignore
  2. 2
      Application_Properties.java
  3. 8
      src/main/java/de/kreth/property2java/GeneratorException.java
  4. 2
      src/main/java/de/kreth/property2java/GeneratorOptions.java
  5. 2
      src/main/java/de/kreth/property2java/config/FreemarkerConfig.java
  6. 1
      src/main/java/de/kreth/property2java/processor/GenerateProperty2Java.java
  7. 8
      src/main/java/de/kreth/property2java/processor/Property2JavaGenerator.java
  8. 5
      src/test/java/de/kreth/property2java/ConfigurationTest.java
  9. 41
      src/test/java/de/kreth/property2java/GeneratorTests.java
  10. 2
      src/test/java/de/kreth/property2java/GeneratorWithInnerPropertiesTest.java
  11. 1
      src/test/java/de/kreth/property2java/generated/Property_Loader_Format_Properties.java
  12. 4
      src/test/java/de/kreth/property2java/parts/ReplaceLogicForTemplate.java
  13. 36
      src/test/java/de/kreth/property2java/processor/Property2JavaGeneratorTest.java

1
.gitignore vendored

@ -2,4 +2,5 @@
.project
.factorypath
.settings
.idea
target

@ -11,12 +11,4 @@ public class GeneratorException extends Exception {
super(message, cause);
}
public GeneratorException(String message) {
super(message);
}
public GeneratorException(Throwable cause) {
super(cause);
}
}

@ -14,7 +14,7 @@ public enum GeneratorOptions {
private final String[] additionalImport;
private GeneratorOptions(String... additionalImport) {
GeneratorOptions(String... additionalImport) {
this.additionalImport = additionalImport!= null ? additionalImport : new String[]{};
}

@ -30,7 +30,7 @@ public enum FreemarkerConfig {
}
private FreemarkerConfig() {
FreemarkerConfig() {
cfg = new Configuration(Configuration.VERSION_2_3_28);
cfg.setClassForTemplateLoading(this.getClass(), "/template/");
cfg.setDefaultEncoding("UTF-8");

@ -6,7 +6,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import de.kreth.property2java.Format;
import de.kreth.property2java.GeneratorOptions;

@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
@ -15,7 +16,6 @@ import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic.Kind;
import de.kreth.property2java.Format;
import de.kreth.property2java.GeneratorException;
import de.kreth.property2java.GeneratorOptions;
@ -64,14 +64,14 @@ public class Property2JavaGenerator extends AbstractProcessor {
GenerateResourceBundleProperty2Java[] value = element
.getAnnotation(GenerateResourceBundleProperty2Javas.class).value();
for (GenerateResourceBundleProperty2Java generateResourceBundleProperty2Java : value) {
List<String> resources = Arrays.asList(generateResourceBundleProperty2Java.resource());
List<String> resources = Collections.singletonList(generateResourceBundleProperty2Java.resource());
generateElementProperties(element, resources, generateResourceBundleProperty2Java.format(), generateResourceBundleProperty2Java.options());
}
}
}
private void generateElementProperties(Element element, List<String> resources, Format format, GeneratorOptions[] options) {
processingEnv.getMessager().printMessage(Kind.NOTE, "Generating Java for " + Arrays.asList(resources));
processingEnv.getMessager().printMessage(Kind.NOTE, "Generating Java for " + Collections.singletonList(resources));
try {
ProcessorConfiguration
.builder(processingEnv.getFiler(), element)
@ -83,7 +83,7 @@ public class Property2JavaGenerator extends AbstractProcessor {
StringWriter out = new StringWriter();
e.printStackTrace(new PrintWriter(out));
out.flush();
processingEnv.getMessager().printMessage(Kind.ERROR, "Exception " + e + "\n" + out.toString(), element);
processingEnv.getMessager().printMessage(Kind.ERROR, "Exception " + e + "\n" + out, element);
}
}

@ -1,7 +1,6 @@
package de.kreth.property2java;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
@ -31,7 +30,7 @@ class ConfigurationTest {
when(config.outputCharset()).thenCallRealMethod();
Writer outWriter = config.outWriter("application.properties");
assertTrue(outWriter instanceof FileWriter);
assertInstanceOf(FileWriter.class, outWriter);
}
@Test

@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
@ -16,6 +17,10 @@ import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.HashMap;
@ -25,7 +30,7 @@ import java.util.Optional;
import java.util.StringTokenizer;
import java.util.stream.Collectors;
import org.apache.commons.cli.MissingOptionException;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -43,7 +48,7 @@ import freemarker.template.TemplateException;
@MockitoSettings(strictness = Strictness.LENIENT)
class GeneratorTests {
private String path = "application.properties";
private final String path = "application.properties";
@Mock
private Configuration config;
@ -187,6 +192,38 @@ class GeneratorTests {
assertLineMatch(lines, "message_invoiceitem_allfieldsmustbeset", "message.invoiceitem.allfieldsmustbeset");
}
@Test
void testTemplateException() throws TemplateException, IOException {
Template template = mock(Template.class);
when(config.outWriter(anyString())).thenReturn(mock(Writer.class));
doThrow(new TemplateException(null)).when(template).process(any(Map.class), any(Writer.class));
Generator generator = new Generator(config, template);
GeneratorException ex = assertThrows(GeneratorException.class, () -> generator.start());
assertThat(ex.getCause()).isInstanceOf(TemplateException.class);
}
@Test
void testMainMethod() throws IOException, GeneratorException {
Path source = Files.createTempFile(getClass().getSimpleName(), ".properties");
Generator.main(new String[] {"-t", "target", "-f", source.toString()});
}
@Test
void testMainMethodMissingOption() throws IOException, GeneratorException {
IllegalStateException e = assertThrows(IllegalStateException.class, () -> Generator.main(new String[] {}));
assertThat(e.getCause()).isInstanceOf(MissingOptionException.class);
}
@Test
void testGenerateFor() throws IOException, GeneratorException {
Class<?> locationClass = getClass();
List<URL> rescources = new ArrayList<>();
String relativeTargetDir = "target";
Generator.generateFor(locationClass, rescources, relativeTargetDir);
}
private void assertLineMatch(List<String> lines, String key, String expected) {
Optional<String> found = lines.stream().filter(line -> keyMatches(line, key)).findFirst();

@ -34,7 +34,7 @@ import org.mockito.quality.Strictness;
@MockitoSettings(strictness = Strictness.LENIENT)
public class GeneratorWithInnerPropertiesTest {
private String path = "application.properties";
private final String path = "application.properties";
@Mock
private Configuration config;

@ -5,7 +5,6 @@ import java.util.ResourceBundle;
import javax.annotation.processing.Generated;
import java.text.MessageFormat;
;
/**
* Property keys from property_loader_format.properties

@ -5,7 +5,7 @@ public final class ReplaceLogicForTemplate {
static String doReplacements(String property, Object...objects) {
StringBuilder text = new StringBuilder();
int index = property.indexOf('{');
text.append(property.substring(0, index));
text.append(property, 0, index);
while (index >= 0) {
index++;
@ -22,7 +22,7 @@ public final class ReplaceLogicForTemplate {
if (index <0) {
text.append(property.substring(endIndex + 1));
} else {
text.append(property.substring(endIndex + 1, index));
text.append(property, endIndex + 1, index);
}
} else {
endIndex = index;

@ -1,12 +1,16 @@
package de.kreth.property2java.processor;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.lang.annotation.Annotation;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
@ -38,10 +42,40 @@ public class Property2JavaGeneratorTest {
when(processingEnv.getMessager()).thenReturn(messanger);
}
@SuppressWarnings("unchecked")
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
void testGeneratorInitializedCorrectly() {
GenerateProperty2Java an = mock(GenerateProperty2Java.class);
when(an.resources()).thenReturn(new String[] {});
TypeElement element = mock(TypeElement.class);
when(element.getAnnotation(GenerateProperty2Java.class)).thenReturn(an);
annotations.add(element);
when(roundEnv.getElementsAnnotatedWith(ArgumentMatchers.any(Class.class))).thenReturn(annotations);
Element annotatedElement = mock(Element.class);
GenerateResourceBundleProperty2Javas value = new GenerateResourceBundleProperty2Javas() {
@Override
public Class<? extends Annotation> annotationType() {
return null;
}
@Override
public GenerateResourceBundleProperty2Java[] value() {
return new GenerateResourceBundleProperty2Java[0];
}
};
when(annotatedElement.getAnnotation(GenerateResourceBundleProperty2Javas.class)).thenReturn(value );
Set<Element> elements = new HashSet<>(List.of(annotatedElement));
when(roundEnv.getElementsAnnotatedWith(GenerateResourceBundleProperty2Javas.class))
.thenReturn((Set)elements);
processor.process(annotations, roundEnv);
}
}

Loading…
Cancel
Save