Downgraded JUnit from 5 to 4

The test for the HtmlHelper must mock the Html.escapeHtml method, which
is static. To do this, it needs PowerMock.

PowerMock does not support JUnit 5 since the API for JUnit extensions
changed between JUnit 4 and JUnit 5.

Therefore, to have all the nice features of PowerMock, JUnit has to stay
at version 4.
pull/147/head
Roland Illig 7 years ago
parent 9b62804ed6
commit 23857a5b6a

@ -117,8 +117,10 @@ dependencies {
def dnsjava_version = "2.1.8" def dnsjava_version = "2.1.8"
def openpgp_version = "12.0" def openpgp_version = "12.0"
def requery_version = "3.26.0" def requery_version = "3.26.0"
def junit_version = "5.3.1" def junit_version = "4.12"
def assertj_version = "3.11.1" def assertj_version = "3.11.1"
def mockito_version = "2.24.0"
def powermock_version = "2.0.0"
// https://developer.android.com/jetpack/docs/release-notes // https://developer.android.com/jetpack/docs/release-notes
@ -181,10 +183,17 @@ dependencies {
// git clone https://android.googlesource.com/platform/frameworks/opt/colorpicker // git clone https://android.googlesource.com/platform/frameworks/opt/colorpicker
implementation project(path: ':colorpicker') implementation project(path: ':colorpicker')
// https://junit.org/junit5/ // https://junit.org/
testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version" testImplementation "junit:junit:$junit_version"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
// https://joel-costigliola.github.io/assertj/ // https://joel-costigliola.github.io/assertj/
testImplementation "org.assertj:assertj-core:$assertj_version" testImplementation "org.assertj:assertj-core:$assertj_version"
// https://site.mockito.org/
testImplementation "org.mockito:mockito-core:$mockito_version"
// https://github.com/powermock/powermock
testImplementation "org.powermock:powermock-core:$powermock_version"
testImplementation "org.powermock:powermock-api-mockito2:$powermock_version"
testImplementation "org.powermock:powermock-module-junit4:$powermock_version"
} }

@ -130,8 +130,8 @@ public class HtmlHelper {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int end = 0; int end = 0;
while (matcher.find()) { while (matcher.find()) {
sb.append(html(text.substring(end, matcher.start()))); sb.append(Html.escapeHtml(text.substring(end, matcher.start())));
String ref = html(matcher.group()); String ref = Html.escapeHtml(matcher.group());
sb.append(String.format("<a href=\"%s\">%s</a>", ref, ref)); sb.append(String.format("<a href=\"%s\">%s</a>", ref, ref));
end = matcher.end(); end = matcher.end();
} }
@ -139,10 +139,6 @@ public class HtmlHelper {
return sb.toString(); return sb.toString();
} }
private static String html(String plain) {
return plain.replace("&", "&amp;").replace("<", "&lt;");
}
static Drawable decodeImage(String source, Context context, long id, boolean show) { static Drawable decodeImage(String source, Context context, long id, boolean show) {
int px = Helper.dp2pixels(context, 48); int px = Helper.dp2pixels(context, 48);

@ -1,13 +1,39 @@
package eu.faircode.email; package eu.faircode.email;
import org.junit.jupiter.api.Test; import android.text.Html;
import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
class HtmlHelperTest { import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
@PrepareForTest(Html.class)
@RunWith(PowerMockRunner.class)
public class HtmlHelperTest {
@Before
public void setUp() {
mockStatic(Html.class);
when(Html.escapeHtml(any(CharSequence.class))).thenAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) {
return invocation.getArgument(0).toString()
.replace("&", "&amp;")
.replace("<", "&lt;");
}
});
}
@Test @Test
void autolink() { public void autolink() {
testAutolink( testAutolink(
"To visit http://www.example.org, go to http://www.example.org.", "To visit http://www.example.org, go to http://www.example.org.",

Loading…
Cancel
Save