Skip to content

Commit

Permalink
Make ProcessingMode a parameter in the registry.
Browse files Browse the repository at this point in the history
  • Loading branch information
uhafner committed Oct 11, 2023
1 parent 3543273 commit b2fd1e7
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 5 deletions.
20 changes: 15 additions & 5 deletions src/main/java/edu/hm/hafner/coverage/registry/ParserRegistry.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.hm.hafner.coverage.registry;

import edu.hm.hafner.coverage.CoverageParser;
import edu.hm.hafner.coverage.CoverageParser.ProcessingMode;
import edu.hm.hafner.coverage.parser.CoberturaParser;
import edu.hm.hafner.coverage.parser.JacocoParser;
import edu.hm.hafner.coverage.parser.PitestParser;
Expand All @@ -22,26 +23,35 @@ public enum CoverageParserType {
* Returns the parser for the specified name.
*
* @param parserName
* the name of the parser
* the unique name of the parser
* @param processingMode
* determines whether to ignore errors
*
* @return the created parser
*/
public CoverageParser getParser(final String parserName) {
return getParser(CoverageParserType.valueOf(parserName));
public CoverageParser getParser(final String parserName, final ProcessingMode processingMode) {
try {
return getParser(CoverageParserType.valueOf(parserName), processingMode);
}
catch (IllegalArgumentException exception) {
throw new IllegalArgumentException("Unknown parser name: " + parserName, exception);
}
}

/**
* Returns the parser for the specified name.
*
* @param parser
* the parser
* @param processingMode
* determines whether to ignore errors
*
* @return the created parser
*/
public CoverageParser getParser(final CoverageParserType parser) {
public CoverageParser getParser(final CoverageParserType parser, final ProcessingMode processingMode) {
switch (parser) {
case COBERTURA:
return new CoberturaParser();
return new CoberturaParser(processingMode);
case JACOCO:
return new JacocoParser();
case PIT:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package edu.hm.hafner.coverage.registry;

import org.junit.jupiter.api.Test;

import edu.hm.hafner.coverage.CoverageParser.ProcessingMode;
import edu.hm.hafner.coverage.parser.CoberturaParser;
import edu.hm.hafner.coverage.parser.JacocoParser;
import edu.hm.hafner.coverage.registry.ParserRegistry.CoverageParserType;

import static org.assertj.core.api.Assertions.*;

class ParserRegistryTest {
@Test
void shouldCreateSomeParsers() {
var registry = new ParserRegistry();

assertThat(registry.getParser(CoverageParserType.COBERTURA.name(), ProcessingMode.FAIL_FAST)).isInstanceOf(CoberturaParser.class);
assertThat(registry.getParser(CoverageParserType.JACOCO, ProcessingMode.IGNORE_ERRORS)).isInstanceOf(JacocoParser.class);
}

@Test
void shouldThrowExceptionForNotSupportedTypes() {
assertThatIllegalArgumentException()
.isThrownBy(() -> new ParserRegistry().getParser("UNKNOWN", ProcessingMode.FAIL_FAST))
.withMessageContaining("Unknown parser name: UNKNOWN");
}
}

0 comments on commit b2fd1e7

Please sign in to comment.