AbstractPrefixedLookupPathResolver.java

1
package fr.sii.ogham.core.resource.resolver;
2
3
import static java.util.Arrays.asList;
4
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import fr.sii.ogham.core.exception.resource.ResourceResolutionException;
9
import fr.sii.ogham.core.resource.Resource;
10
import fr.sii.ogham.core.resource.path.ResolvedPath;
11
import fr.sii.ogham.core.resource.path.ResolvedResourcePath;
12
import fr.sii.ogham.core.resource.path.ResourcePath;
13
14
/**
15
 * ResourceResolver using a list of supported lookups to compute a simple
16
 * {@link ResolvedResourcePath} where resolved path is simply the given path
17
 * without the lookup. Eg : classpath resource "classpath:/package/file" to
18
 * resolved path is "package/file".
19
 * 
20
 * @author Cyril Dejonghe
21
 *
22
 */
23
public abstract class AbstractPrefixedLookupPathResolver implements ResourceResolver {
24
	private List<String> lookups;
25
26
	protected AbstractPrefixedLookupPathResolver(List<String> lookups) {
27
		super();
28
		this.lookups = lookups;
29
	}
30
31
	protected AbstractPrefixedLookupPathResolver(String... lookups) {
32
		this(new ArrayList<>(asList(lookups)));
33
	}
34
35
	@Override
36
	public boolean supports(ResourcePath path) {
37 14 1. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → NO_COVERAGE
2. supports : negated conditional → NO_COVERAGE
3. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → TIMED_OUT
4. supports : negated conditional → TIMED_OUT
5. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED
6. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED
7. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED
8. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED
9. supports : replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED
10. supports : negated conditional → KILLED
11. supports : negated conditional → KILLED
12. supports : negated conditional → KILLED
13. supports : negated conditional → KILLED
14. supports : negated conditional → KILLED
		return getLookup(path) != null;
38
	}
39
40
	public String getLookup(ResourcePath path) {
41
		for (String lookup : lookups) {
42 7 1. getLookup : negated conditional → NO_COVERAGE
2. getLookup : negated conditional → TIMED_OUT
3. getLookup : negated conditional → KILLED
4. getLookup : negated conditional → KILLED
5. getLookup : negated conditional → KILLED
6. getLookup : negated conditional → KILLED
7. getLookup : negated conditional → KILLED
			if (path.getOriginalPath().startsWith(lookup)) {
43 7 1. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → NO_COVERAGE
2. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → TIMED_OUT
3. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
4. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
5. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
6. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
7. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
				return lookup;
44
			}
45
		}
46 7 1. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → NO_COVERAGE
2. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → TIMED_OUT
3. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
4. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
5. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
6. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
7. getLookup : replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED
		return null;
47
	}
48
49
	/**
50
	 * Find the resource using the resource path (or its name).
51
	 * 
52
	 * @param resourcePath
53
	 *            the path of the resource
54
	 * @return the found resource
55
	 * @throws ResourceResolutionException
56
	 *             when the resource couldn't be found
57
	 */
58
	protected abstract Resource getResource(ResolvedPath resourcePath) throws ResourceResolutionException;
59
60
	@Override
61
	public Resource getResource(ResourcePath path) throws ResourceResolutionException {
62 3 1. getResource : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → NO_COVERAGE
2. getResource : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → KILLED
3. getResource : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → KILLED
		return getResource(resolve(path));
63
	}
64
65
	@Override
66
	public ResolvedPath resolve(ResourcePath path) {
67 7 1. resolve : negated conditional → NO_COVERAGE
2. resolve : negated conditional → TIMED_OUT
3. resolve : negated conditional → KILLED
4. resolve : negated conditional → KILLED
5. resolve : negated conditional → KILLED
6. resolve : negated conditional → KILLED
7. resolve : negated conditional → KILLED
		if (path instanceof ResolvedPath) {
68 7 1. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → NO_COVERAGE
2. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → TIMED_OUT
3. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
4. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
5. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
6. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
7. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
			return (ResolvedPath) path;
69
		}
70
		ResolvedPath result = null;
71
		String lookup = getLookup(path);
72 7 1. resolve : negated conditional → NO_COVERAGE
2. resolve : negated conditional → TIMED_OUT
3. resolve : negated conditional → KILLED
4. resolve : negated conditional → KILLED
5. resolve : negated conditional → KILLED
6. resolve : negated conditional → KILLED
7. resolve : negated conditional → KILLED
		if (lookup != null) {
73
			result = new ResolvedResourcePath(path, lookup, path.getOriginalPath().substring(lookup.length()));
74
		}
75 7 1. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → NO_COVERAGE
2. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → TIMED_OUT
3. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
4. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
5. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
6. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
7. resolve : replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED
		return result;
76
	}
77
}

Mutations

37

1.1
Location : supports
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED

2.2
Location : supports
Killed by : none
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → NO_COVERAGE

3.3
Location : supports
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED

4.4
Location : supports
Killed by : none
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → TIMED_OUT

5.5
Location : supports
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED

6.6
Location : supports
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED

7.7
Location : supports
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::supports → KILLED

8.8
Location : supports
Killed by : none
negated conditional → NO_COVERAGE

9.9
Location : supports
Killed by : none
negated conditional → TIMED_OUT

10.10
Location : supports
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
negated conditional → KILLED

11.11
Location : supports
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
negated conditional → KILLED

12.12
Location : supports
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

13.13
Location : supports
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
negated conditional → KILLED

14.14
Location : supports
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

42

1.1
Location : getLookup
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : getLookup
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
negated conditional → KILLED

3.3
Location : getLookup
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

4.4
Location : getLookup
Killed by : none
negated conditional → NO_COVERAGE

5.5
Location : getLookup
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
negated conditional → KILLED

6.6
Location : getLookup
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv2.it.ThymeleafDetectorTest)
negated conditional → KILLED

7.7
Location : getLookup
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

43

1.1
Location : getLookup
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

2.2
Location : getLookup
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv2.it.ThymeleafDetectorTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

3.3
Location : getLookup
Killed by : none
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → TIMED_OUT

4.4
Location : getLookup
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

5.5
Location : getLookup
Killed by : none
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → NO_COVERAGE

6.6
Location : getLookup
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

7.7
Location : getLookup
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.file(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

46

1.1
Location : getLookup
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv2.it.ThymeleafDetectorTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

2.2
Location : getLookup
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

3.3
Location : getLookup
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

4.4
Location : getLookup
Killed by : none
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → TIMED_OUT

5.5
Location : getLookup
Killed by : none
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → NO_COVERAGE

6.6
Location : getLookup
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

7.7
Location : getLookup
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced return value with "" for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getLookup → KILLED

62

1.1
Location : getResource
Killed by : none
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → NO_COVERAGE

2.2
Location : getResource
Killed by : oghamall.it.email.FluentEmailTest.bodyTemplateString(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → KILLED

3.3
Location : getResource
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.file(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::getResource → KILLED

67

1.1
Location : resolve
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

2.2
Location : resolve
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
negated conditional → KILLED

3.3
Location : resolve
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
negated conditional → KILLED

4.4
Location : resolve
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

5.5
Location : resolve
Killed by : none
negated conditional → TIMED_OUT

6.6
Location : resolve
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
negated conditional → KILLED

7.7
Location : resolve
Killed by : none
negated conditional → NO_COVERAGE

68

1.1
Location : resolve
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

2.2
Location : resolve
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

3.3
Location : resolve
Killed by : none
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → NO_COVERAGE

4.4
Location : resolve
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

5.5
Location : resolve
Killed by : none
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → TIMED_OUT

6.6
Location : resolve
Killed by : oghamcore.it.html.translator.InlineImageTranslatorTest.oghamAttributesShoulBeRemoved(oghamcore.it.html.translator.InlineImageTranslatorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

7.7
Location : resolve
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

72

1.1
Location : resolve
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

2.2
Location : resolve
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
negated conditional → KILLED

3.3
Location : resolve
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : resolve
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

5.5
Location : resolve
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
negated conditional → KILLED

6.6
Location : resolve
Killed by : none
negated conditional → TIMED_OUT

7.7
Location : resolve
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
negated conditional → KILLED

75

1.1
Location : resolve
Killed by : oghamthymeleafv2.it.ThymeleafDetectorTest.notFound(oghamthymeleafv2.it.ThymeleafDetectorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

2.2
Location : resolve
Killed by : none
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → NO_COVERAGE

3.3
Location : resolve
Killed by : oghamcore.it.core.resource.resolver.FirstSupportingResolverTest.none(oghamcore.it.core.resource.resolver.FirstSupportingResolverTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

4.4
Location : resolve
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

5.5
Location : resolve
Killed by : none
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → TIMED_OUT

6.6
Location : resolve
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.unreadableCss(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

7.7
Location : resolve
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced return value with null for fr/sii/ogham/core/resource/resolver/AbstractPrefixedLookupPathResolver::resolve → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM