Added suppresswarnings for all generated tests; fixes gh-1074

This commit is contained in:
Marcin Grzejszczak
2019-07-01 10:49:27 +02:00
parent 8949bae485
commit a18df67ae8
12 changed files with 107 additions and 12 deletions

View File

@@ -177,6 +177,14 @@ class BlockBuilder {
return builder.toString().endsWith(text)
}
BlockBuilder addAtTheEndIfEndsWithAChar(String toAdd) {
char lastChar = builder.charAt(builder.length() - 1)
if (Character.isLetter(lastChar)) {
builder.append(toAdd)
}
return this
}
/**
* Adds the given text at the end of the line
*

View File

@@ -30,6 +30,11 @@ class ClassAnnotationsBuilder {
this.metaData = generatedTestClassBuilder.generatedClassMetaData;
}
ClassAnnotationsBuilder defaultAnnotations() {
this.parentBuilder.classAnnotations(new SuppressWarningsClassAnnotation(builder));
return this;
}
ClassAnnotationsBuilder jUnit4() {
this.parentBuilder
.classAnnotations(new JUnit4OrderClassAnnotation(builder, metaData));

View File

@@ -137,16 +137,17 @@ class GeneratedTestClassBuilder {
// \n
this.blockBuilder.addEmptyLine();
// import ... \n
visit(this.imports);
visitSeparated(this.imports);
// import static ... \n
visit(this.staticImports);
visitSeparated(this.staticImports);
// @Test ... \n
visitWithNoEnding(this.annotations);
// @formatter:off
// public
this.blockBuilder.append(classMetaData::modifier)
.addAtTheEndIfEndsWithAChar(" ")
// class
.appendWithSpace("class")
.append("class")
// Foo
.appendWithSpace(classMetaData::className)
// Spec
@@ -159,22 +160,23 @@ class GeneratedTestClassBuilder {
return new GeneratedTestClass(this.blockBuilder);
}
void visit(List<? extends Visitor> list) {
visit(list, true);
void visitSeparated(List<? extends Visitor> list) {
visit(list, true, true);
}
void visitWithNoEnding(List<? extends Visitor> list) {
visit(list, false);
visit(list, false, false);
}
private void visit(List<? extends Visitor> list, boolean addEnding) {
private void visit(List<? extends Visitor> list, boolean addEnding,
boolean separated) {
List<Visitor> elements = list.stream().filter(Acceptor::accept)
.collect(Collectors.toList());
elements.forEach(OurCallable::call);
if (addEnding) {
this.blockBuilder.addEndingIfNotPresent();
}
if (!elements.isEmpty()) {
if (!elements.isEmpty() && separated) {
this.blockBuilder.addEmptyLine();
}
}

View File

@@ -37,7 +37,7 @@ class JUnit4OrderClassAnnotation implements ClassAnnotation {
@Override
public ClassAnnotation call() {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addLine);
return this;
}

View File

@@ -80,6 +80,7 @@ public class JavaTestGenerator implements SingleTestGenerator {
.jaxRs()
.build()
.classAnnotations()
.defaultAnnotations()
.jUnit4()
.jUnit5()
.spock()

View File

@@ -36,7 +36,7 @@ class SpockOrderClassAnnotation implements ClassAnnotation {
@Override
public ClassAnnotation call() {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addLine);
return this;
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright 2013-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.contract.verifier.builder;
import java.util.Arrays;
class SuppressWarningsClassAnnotation implements ClassAnnotation {
private final BlockBuilder blockBuilder;
private static final String[] ANNOTATIONS = { "@SuppressWarnings(\"rawtypes\")" };
SuppressWarningsClassAnnotation(BlockBuilder blockBuilder) {
this.blockBuilder = blockBuilder;
}
@Override
public ClassAnnotation call() {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addLine);
return this;
}
@Override
public boolean accept() {
return true;
}
}

View File

@@ -3,8 +3,6 @@ package org.springframework.cloud.contract.verifier.builder;
import org.assertj.core.api.BDDAssertions;
import org.junit.Test;
import static org.junit.Assert.*;
public class BlockBuilderTests {
@Test
@@ -52,6 +50,22 @@ public class BlockBuilderTests {
BDDAssertions.then(blockBuilder.toString()).isEqualTo("foo;\n");
}
@Test
public void should_add_space_if_ends_with_a_text() {
BlockBuilder blockBuilder = blockBuilder();
blockBuilder.append("foo").addAtTheEndIfEndsWithAChar(" ");
BDDAssertions.then(blockBuilder.toString()).isEqualTo("foo ");
}
@Test
public void should_not_add_space_if_does_not_end_with_a_text() {
BlockBuilder blockBuilder = blockBuilder();
blockBuilder.append("foo\n").addAtTheEndIfEndsWithAChar(" ");
BDDAssertions.then(blockBuilder.toString()).isEqualTo("foo\n");
}
private BlockBuilder blockBuilder() {
BlockBuilder blockBuilder = new BlockBuilder("\t");
blockBuilder.setupLineEnding(";");

View File

@@ -367,6 +367,7 @@ import static org.springframework.cloud.contract.verifier.util.ContractVerifierU
import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static io.restassured.module.mockmvc.RestAssuredMockMvc.*
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\tdef validate_optionals() throws Exception {

View File

@@ -66,6 +66,7 @@ public class GeneratedTestClassTests {
+ "import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;\n"
+ "import static io.restassured.module.mockmvc.RestAssuredMockMvc.*;\n"
+ "\n"
+ "@SuppressWarnings(\"rawtypes\")\n"
+ "@FixMethodOrder(MethodSorters.NAME_ASCENDING)\n"
+ "public class FooBarTest extends BazBar {\n"
+ "\n"

View File

@@ -930,6 +930,7 @@ import static org.springframework.cloud.contract.verifier.util.ContractVerifierU
import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static javax.ws.rs.client.Entity.*;
@SuppressWarnings("rawtypes")
public class FooTest {
\tWebTarget webTarget;

View File

@@ -116,6 +116,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -188,6 +189,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -268,6 +270,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -352,6 +355,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -429,6 +433,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -496,6 +501,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -566,6 +572,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -639,6 +646,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -721,6 +729,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -797,6 +806,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -1004,6 +1014,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1074,6 +1085,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1144,6 +1156,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1216,6 +1229,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -1293,6 +1307,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1334,6 +1349,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -1404,6 +1420,7 @@ import static org.springframework.cloud.contract.verifier.util.ContractVerifierU
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1448,6 +1465,7 @@ import static org.springframework.cloud.contract.verifier.util.ContractVerifierU
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;
@@ -1538,6 +1556,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes
@SuppressWarnings("rawtypes")
class FooSpec extends Specification {
\t@Inject ContractVerifierMessaging contractVerifierMessaging
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper
@@ -1592,6 +1611,7 @@ import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes;
@SuppressWarnings("rawtypes")
public class FooTest {
\t@Inject ContractVerifierMessaging contractVerifierMessaging;
\t@Inject ContractVerifierObjectMapper contractVerifierObjectMapper;