Kotlin class assertion generation problem
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con el reproductor de Kotlin en Klass.kt y JavaClass.java; después, inspecciona la ruta del generador que produce AbstractKlassAssert. Confirma que los métodos de aserción generados se emiten solo una vez y que la clase Java resultante compila.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
There is a small problem:
Generator is creating assertion methods twice in Abstract***Assert classes for code where Kotlin class with lateinit collection field is generified with complex java class. Generated code cannot compile
Example to reproduce the problem:
Klass.kt:
class Klass {
lateinit var collection: Collection<JavaClass>
}
JavaClass.java:
public class JavaClass {}
Result:
/**
* Abstract base class for {@link Klass} specific assertions - Generated by CustomAssertionGenerator.
*/
@javax.annotation.Generated(value="assertj-assertions-generator")
public abstract class AbstractKlassAssert<S extends AbstractKlassAssert<S, A>, A extends Klass> extends AbstractObjectAssert<S, A> {
/**
* Creates a new <code>{@link AbstractKlassAssert}</code> to make assertions on actual Klass.
* @param actual the Klass we want to make assertions on.
*/
protected AbstractKlassAssert(A actual, Class<S> selfType) {
super(actual, selfType);
}
/**
* Verifies that the actual Klass's collection contains the given JavaClass elements.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContains(info, actual.getCollection(), collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains the given JavaClass elements in Collection.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContains(info, actual.getCollection(), collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains <b>only</b> the given JavaClass elements and nothing else in whatever order.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasOnlyCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContainsOnly(info, actual.getCollection(), collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains <b>only</b> the given JavaClass elements in Collection and nothing else in whatever order.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasOnlyCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContainsOnly(info, actual.getCollection(), collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection does not contain the given JavaClass elements.
*
* @param collection the given elements that should not be in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection contains any given JavaClass elements.
*/
public S doesNotHaveCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message (use overridingErrorMessage before contains to set your own message).
Iterables.instance().assertDoesNotContain(info, actual.getCollection(), collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection does not contain the given JavaClass elements in Collection.
*
* @param collection the given elements that should not be in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection contains any given JavaClass elements.
*/
public S doesNotHaveCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message (use overridingErrorMessage before contains to set your own message).
Iterables.instance().assertDoesNotContain(info, actual.getCollection(), collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass has no collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection is not empty.
*/
public S hasNoCollection() {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// we override the default error message with a more explicit one
String assertjErrorMessage = "\nExpecting :\n <%s>\nnot to have collection but had :\n <%s>";
// check
if (actual.getCollection().iterator().hasNext()) {
failWithMessage(assertjErrorMessage, actual, actual.getCollection());
}
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains the given JavaClass elements.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContains(info, actual.collection, collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains the given JavaClass elements in Collection.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContains(info, actual.collection, collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains <b>only</b> the given JavaClass elements and nothing else in whatever order.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasOnlyCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContainsOnly(info, actual.collection, collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection contains <b>only</b> the given JavaClass elements in Collection and nothing else in whatever order.
* @param collection the given elements that should be contained in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection does not contain all given JavaClass elements.
*/
public S hasOnlyCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
Iterables.instance().assertContainsOnly(info, actual.collection, collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection does not contain the given JavaClass elements.
*
* @param collection the given elements that should not be in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection contains any given JavaClass elements.
*/
public S doesNotHaveCollection(JavaClass... collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass varargs is not null.
if (collection == null) failWithMessage("Expecting collection parameter not to be null.");
// check with standard error message (use overridingErrorMessage before contains to set your own message).
Iterables.instance().assertDoesNotContain(info, actual.collection, collection);
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass's collection does not contain the given JavaClass elements in Collection.
*
* @param collection the given elements that should not be in actual Klass's collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection contains any given JavaClass elements.
*/
public S doesNotHaveCollection(java.util.Collection<? extends JavaClass> collection) {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// check that given JavaClass collection is not null.
if (collection == null) {
failWithMessage("Expecting collection parameter not to be null.");
return myself; // to fool Eclipse "Null pointer access" warning on toArray.
}
// check with standard error message (use overridingErrorMessage before contains to set your own message).
Iterables.instance().assertDoesNotContain(info, actual.collection, collection.toArray());
// return the current assertion for method chaining
return myself;
}
/**
* Verifies that the actual Klass has no collection.
* @return this assertion object.
* @throws AssertionError if the actual Klass's collection is not empty.
*/
public S hasNoCollection() {
// check that actual Klass we want to make assertions on is not null.
isNotNull();
// we override the default error message with a more explicit one
String assertjErrorMessage = "\nExpecting :\n <%s>\nnot to have collection but had :\n <%s>";
// check
if (actual.collection.iterator().hasNext()) {
failWithMessage(assertjErrorMessage, actual, actual.collection);
}
// return the current assertion for method chaining
return myself;
}
}
- Lenguaje dominante
- Java
- Estrellas
- 72
- Forks
- 47
- Merge medio
- 14 h 37 min
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de assertj/assertj-generator
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
assertj/assertj-generator#278 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
assertj/assertj-generator#220 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
assertj/assertj-generator#219 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
assertj/assertj-generator#204 · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
assertj/assertj-generator#197 · 7 comentarios ·
Todos los issues de assertj/assertj-generator
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
objectionary/eo-graphs#85 ·
-
BoxAttachmentMulti parsing leaks IOException / ArrayIndexOutOfBoundsException on malformed content instead of IllegalArgumentExceptionPosiblemente ocupada @Kshot3000 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
ergoplatform/ergo-appkit#272 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
utopia-rise/godot-jvm#1004 ·
Los mantenedores suelen responder en 1 día