ThymeleafV3TemplateDetector.java

1
package fr.sii.ogham.template.thymeleaf.v3;
2
3
import java.io.BufferedReader;
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.io.InputStreamReader;
7
import java.util.regex.Pattern;
8
9
import org.slf4j.Logger;
10
import org.slf4j.LoggerFactory;
11
12
import fr.sii.ogham.core.exception.resource.ResourceResolutionException;
13
import fr.sii.ogham.core.exception.template.EngineDetectionException;
14
import fr.sii.ogham.core.resource.Resource;
15
import fr.sii.ogham.core.resource.path.ResourcePath;
16
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
17
import fr.sii.ogham.core.template.context.Context;
18
import fr.sii.ogham.core.template.detector.TemplateEngineDetector;
19
20
/**
21
 * Detector that reads the content of the template. If the template contains the
22
 * Thymeleaf namespace (http://www.thymeleaf.org) then the detector returns
23
 * true. Otherwise it returns false.
24
 * 
25
 * @author Aurélien Baudet
26
 *
27
 */
28
public class ThymeleafV3TemplateDetector implements TemplateEngineDetector {
29
	private static final Logger LOG = LoggerFactory.getLogger(ThymeleafV3TemplateDetector.class);
30
31
	/**
32
	 * The pattern to search into the template
33
	 */
34
	private static final Pattern NAMESPACE_PATTERN = Pattern.compile("xmlns[^=]+=\\s*\"http://www.thymeleaf.org\"");
35
36
	/**
37
	 * The pattern to search into the template
38
	 */
39
	private static final Pattern VARIABLE_PATTERN = Pattern.compile("(\\[\\[\\$\\{[^}]+\\}\\]\\])|(\\[\\(\\$\\{[^}]+\\}\\)\\])");
40
41
	/**
42
	 * The template resolver used to find the template
43
	 */
44
	private final ResourceResolver resolver;
45
46
	public ThymeleafV3TemplateDetector(ResourceResolver resolver) {
47
		super();
48
		this.resolver = resolver;
49
	}
50
51
	@Override
52
	public boolean canParse(ResourcePath template, Context ctx) throws EngineDetectionException {
53
		LOG.debug("Checking if Thymeleaf can handle the template {}", template);
54
		Resource resolvedTemplate = getTemplate(template);
55 4 1. canParse : negated conditional → NO_COVERAGE
2. canParse : negated conditional → TIMED_OUT
3. canParse : negated conditional → KILLED
4. canParse : negated conditional → KILLED
		if (resolvedTemplate == null) {
56 3 1. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE
2. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
3. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
			return false;
57
		}
58
		try (BufferedReader br = new BufferedReader(new InputStreamReader(resolvedTemplate.getInputStream()))) {
59
			boolean isThymeleafTemplate = isThymeleafTemplate(br);
60 3 1. canParse : negated conditional → NO_COVERAGE
2. canParse : negated conditional → SURVIVED
3. canParse : negated conditional → TIMED_OUT
			if (isThymeleafTemplate) {
61
				LOG.debug("The template {} contains the namespace http://www.thymeleaf.org. Thymeleaf can be used", template);
62
			} else {
63
				LOG.debug("The template {} doesn't contain the namespace http://www.thymeleaf.org. Thymeleaf can't be used", template);
64
			}
65 16 1. canParse : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE
2. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE
3. canParse : negated conditional → NO_COVERAGE
4. canParse : negated conditional → NO_COVERAGE
5. canParse : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → TIMED_OUT
6. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → TIMED_OUT
7. canParse : negated conditional → TIMED_OUT
8. canParse : negated conditional → TIMED_OUT
9. canParse : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
10. canParse : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
11. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
12. canParse : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED
13. canParse : negated conditional → KILLED
14. canParse : negated conditional → KILLED
15. canParse : negated conditional → KILLED
16. canParse : negated conditional → KILLED
			return isThymeleafTemplate || isEmptyTemplate(resolvedTemplate);
66
		} catch (IOException e) {
67
			throw new EngineDetectionException("Failed to detect because template can't be read by thymeleaf", e);
68
		}
69
	}
70
71
	private static boolean isThymeleafTemplate(BufferedReader br) throws IOException {
72
		String line;
73
		do {
74
			line = br.readLine();
75 12 1. isThymeleafTemplate : negated conditional → NO_COVERAGE
2. isThymeleafTemplate : negated conditional → NO_COVERAGE
3. isThymeleafTemplate : negated conditional → NO_COVERAGE
4. isThymeleafTemplate : negated conditional → TIMED_OUT
5. isThymeleafTemplate : negated conditional → TIMED_OUT
6. isThymeleafTemplate : negated conditional → TIMED_OUT
7. isThymeleafTemplate : negated conditional → KILLED
8. isThymeleafTemplate : negated conditional → KILLED
9. isThymeleafTemplate : negated conditional → KILLED
10. isThymeleafTemplate : negated conditional → KILLED
11. isThymeleafTemplate : negated conditional → KILLED
12. isThymeleafTemplate : negated conditional → KILLED
			if (line != null && (containsThymeleafNamespace(line) || containsThymeleafVariables(line))) {
76 4 1. isThymeleafTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → NO_COVERAGE
2. isThymeleafTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → TIMED_OUT
3. isThymeleafTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED
4. isThymeleafTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED
				return true;
77
			}
78 3 1. isThymeleafTemplate : negated conditional → NO_COVERAGE
2. isThymeleafTemplate : negated conditional → TIMED_OUT
3. isThymeleafTemplate : negated conditional → KILLED
		} while (line != null);
79 4 1. isThymeleafTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → NO_COVERAGE
2. isThymeleafTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → TIMED_OUT
3. isThymeleafTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED
4. isThymeleafTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED
		return false;
80
	}
81
	
82
	private static boolean isEmptyTemplate(Resource template) throws IOException {
83
		try (InputStream stream = template.getInputStream()) {
84 12 1. isEmptyTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → NO_COVERAGE
2. isEmptyTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → NO_COVERAGE
3. isEmptyTemplate : negated conditional → NO_COVERAGE
4. isEmptyTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → TIMED_OUT
5. isEmptyTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → TIMED_OUT
6. isEmptyTemplate : negated conditional → TIMED_OUT
7. isEmptyTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED
8. isEmptyTemplate : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED
9. isEmptyTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED
10. isEmptyTemplate : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED
11. isEmptyTemplate : negated conditional → KILLED
12. isEmptyTemplate : negated conditional → KILLED
			return stream.read() == -1;
85
		}
86
	}
87
88
	private static boolean containsThymeleafNamespace(String line) {
89 8 1. containsThymeleafNamespace : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → NO_COVERAGE
2. containsThymeleafNamespace : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → NO_COVERAGE
3. containsThymeleafNamespace : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → TIMED_OUT
4. containsThymeleafNamespace : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → TIMED_OUT
5. containsThymeleafNamespace : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED
6. containsThymeleafNamespace : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED
7. containsThymeleafNamespace : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED
8. containsThymeleafNamespace : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED
		return NAMESPACE_PATTERN.matcher(line).find();
90
	}
91
92
	private static boolean containsThymeleafVariables(String line) {
93 8 1. containsThymeleafVariables : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → NO_COVERAGE
2. containsThymeleafVariables : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → NO_COVERAGE
3. containsThymeleafVariables : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → TIMED_OUT
4. containsThymeleafVariables : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → TIMED_OUT
5. containsThymeleafVariables : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED
6. containsThymeleafVariables : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED
7. containsThymeleafVariables : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED
8. containsThymeleafVariables : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED
		return VARIABLE_PATTERN.matcher(line).find();
94
	}
95
96
	private Resource getTemplate(ResourcePath templateName) {
97
		try {
98 4 1. getTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → NO_COVERAGE
2. getTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → TIMED_OUT
3. getTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → KILLED
4. getTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → KILLED
			return resolver.getResource(templateName);
99
		} catch (ResourceResolutionException e) {
100
			LOG.trace("Thymeleaf detector can't be applied because {} couldn't be resolved", templateName, e);
101
			return null;
102
		}
103
	}
104
105
}

Mutations

55

1.1
Location : canParse
Killed by : oghamall.it.template.TemplateErrorTest.singleTemplateNotFound(oghamall.it.template.TemplateErrorTest)
negated conditional → KILLED

2.2
Location : canParse
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : canParse
Killed by : none
negated conditional → TIMED_OUT

4.4
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

56

1.1
Location : canParse
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE

2.2
Location : canParse
Killed by : oghamall.it.template.TemplateErrorTest.singleTemplateNotFound(oghamall.it.template.TemplateErrorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

3.3
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.notFound(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

60

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

2.2
Location : canParse
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : canParse
Killed by : none
negated conditional → SURVIVED

65

1.1
Location : canParse
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → TIMED_OUT

2.2
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

3.3
Location : canParse
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE

4.4
Location : canParse
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

5.5
Location : canParse
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → NO_COVERAGE

6.6
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

7.7
Location : canParse
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → TIMED_OUT

8.8
Location : canParse
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::canParse → KILLED

9.9
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

10.10
Location : canParse
Killed by : none
negated conditional → TIMED_OUT

11.11
Location : canParse
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

12.12
Location : canParse
Killed by : none
negated conditional → NO_COVERAGE

13.13
Location : canParse
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

14.14
Location : canParse
Killed by : none
negated conditional → NO_COVERAGE

15.15
Location : canParse
Killed by : none
negated conditional → TIMED_OUT

16.16
Location : canParse
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

75

1.1
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.invalidTemplate(oghamall.it.email.EmailSMTPDefaultsTest)
negated conditional → KILLED

2.2
Location : isThymeleafTemplate
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : isThymeleafTemplate
Killed by : none
negated conditional → TIMED_OUT

4.4
Location : isThymeleafTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

5.5
Location : isThymeleafTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

6.6
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

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

8.8
Location : isThymeleafTemplate
Killed by : none
negated conditional → TIMED_OUT

9.9
Location : isThymeleafTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

10.10
Location : isThymeleafTemplate
Killed by : none
negated conditional → TIMED_OUT

11.11
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

12.12
Location : isThymeleafTemplate
Killed by : none
negated conditional → NO_COVERAGE

76

1.1
Location : isThymeleafTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundWithoutNamespace(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED

2.2
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED

3.3
Location : isThymeleafTemplate
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → NO_COVERAGE

4.4
Location : isThymeleafTemplate
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → TIMED_OUT

78

1.1
Location : isThymeleafTemplate
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : isThymeleafTemplate
Killed by : none
negated conditional → TIMED_OUT

3.3
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

79

1.1
Location : isThymeleafTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED

2.2
Location : isThymeleafTemplate
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → TIMED_OUT

3.3
Location : isThymeleafTemplate
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → NO_COVERAGE

4.4
Location : isThymeleafTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isThymeleafTemplate → KILLED

84

1.1
Location : isEmptyTemplate
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → NO_COVERAGE

2.2
Location : isEmptyTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED

3.3
Location : isEmptyTemplate
Killed by : oghamall.it.email.EmailEmptyTemplateTest.emptyThymeleafTemplateShouldNotReportAnError(oghamall.it.email.EmailEmptyTemplateTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED

4.4
Location : isEmptyTemplate
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → TIMED_OUT

5.5
Location : isEmptyTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED

6.6
Location : isEmptyTemplate
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → NO_COVERAGE

7.7
Location : isEmptyTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → KILLED

8.8
Location : isEmptyTemplate
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::isEmptyTemplate → TIMED_OUT

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

10.10
Location : isEmptyTemplate
Killed by : none
negated conditional → NO_COVERAGE

11.11
Location : isEmptyTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
negated conditional → KILLED

12.12
Location : isEmptyTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
negated conditional → KILLED

89

1.1
Location : containsThymeleafNamespace
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED

2.2
Location : containsThymeleafNamespace
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.found(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED

3.3
Location : containsThymeleafNamespace
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → TIMED_OUT

4.4
Location : containsThymeleafNamespace
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → NO_COVERAGE

5.5
Location : containsThymeleafNamespace
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED

6.6
Location : containsThymeleafNamespace
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → KILLED

7.7
Location : containsThymeleafNamespace
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → TIMED_OUT

8.8
Location : containsThymeleafNamespace
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafNamespace → NO_COVERAGE

93

1.1
Location : containsThymeleafVariables
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundWithoutNamespace(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED

2.2
Location : containsThymeleafVariables
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED

3.3
Location : containsThymeleafVariables
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → TIMED_OUT

4.4
Location : containsThymeleafVariables
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → NO_COVERAGE

5.5
Location : containsThymeleafVariables
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButNotThymeleaf(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED

6.6
Location : containsThymeleafVariables
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → NO_COVERAGE

7.7
Location : containsThymeleafVariables
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → TIMED_OUT

8.8
Location : containsThymeleafVariables
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::containsThymeleafVariables → KILLED

98

1.1
Location : getTemplate
Killed by : none
replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → TIMED_OUT

2.2
Location : getTemplate
Killed by : none
replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → NO_COVERAGE

3.3
Location : getTemplate
Killed by : oghamall.it.email.EmailMultiTemplateTest.withThymeleafOneVariantWithInvalidResourcePath(oghamall.it.email.EmailMultiTemplateTest)
replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → KILLED

4.4
Location : getTemplate
Killed by : oghamthymeleafv3.it.ThymeleafDetectorTest.foundButEmpty(oghamthymeleafv3.it.ThymeleafDetectorTest)
replaced return value with null for fr/sii/ogham/template/thymeleaf/v3/ThymeleafV3TemplateDetector::getTemplate → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM