[SLC] make inheritors testData more human-readable

This commit is contained in:
Dmitrii Gridin
2022-12-13 15:28:51 +01:00
committed by Space Team
parent 69d308edac
commit 66dc7a3168
6 changed files with 84 additions and 62 deletions
@@ -1,5 +1,5 @@
one.MyAnnotationClass|java.lang.annotation.Annotation|false| -> true
one.MyAnnotationClass|java.lang.annotation.Annotation|true| -> true
one.MyAnnotationClass|java.lang.Object|false| -> true
one.MyAnnotationClass|java.lang.Object|true| -> true
one.MyAnnotationClass|java.util.Collection|true| -> false
subClass: one.MyAnnotationClass, superClass: java.lang.annotation.Annotation, deepSearch: false -> true
subClass: one.MyAnnotationClass, superClass: java.lang.annotation.Annotation, deepSearch: true -> true
subClass: one.MyAnnotationClass, superClass: java.lang.Object, deepSearch: false -> true
subClass: one.MyAnnotationClass, superClass: java.lang.Object, deepSearch: true -> true
subClass: one.MyAnnotationClass, superClass: java.util.Collection, deepSearch: true -> false
@@ -1,12 +1,12 @@
cba.ChildOfOpen|cba.OpenClassFromAbstractClass|false| -> true
cba.ChildOfOpen|cba.OpenClassFromAbstractClass|true| -> true
cba.ChildOfOpen|java.lang.Object|false| -> false
cba.ChildOfOpen|java.lang.Object|true| -> true
cba.ChildOfOpen|cba.AbstractClass|false| -> false
cba.ChildOfOpen|cba.AbstractClass|true| -> true
cba.OpenClassFromAbstractClass|cba.AbstractClass|false| -> true
cba.OpenClassFromAbstractClass|cba.AbstractClass|true| -> true
cba.OpenClassFromAbstractClass|cba.OpenClassFromAbstractClass|false| -> false
cba.OpenClassFromAbstractClass|cba.OpenClassFromAbstractClass|true| -> false
cba.OpenClassFromAbstractClass|cba.FinalClass|false| -> false
cba.OpenClassFromAbstractClass|cba.FinalClass|true| -> false
subClass: cba.ChildOfOpen, superClass: cba.OpenClassFromAbstractClass, deepSearch: false -> true
subClass: cba.ChildOfOpen, superClass: cba.OpenClassFromAbstractClass, deepSearch: true -> true
subClass: cba.ChildOfOpen, superClass: java.lang.Object, deepSearch: false -> false
subClass: cba.ChildOfOpen, superClass: java.lang.Object, deepSearch: true -> true
subClass: cba.ChildOfOpen, superClass: cba.AbstractClass, deepSearch: false -> false
subClass: cba.ChildOfOpen, superClass: cba.AbstractClass, deepSearch: true -> true
subClass: cba.OpenClassFromAbstractClass, superClass: cba.AbstractClass, deepSearch: false -> true
subClass: cba.OpenClassFromAbstractClass, superClass: cba.AbstractClass, deepSearch: true -> true
subClass: cba.OpenClassFromAbstractClass, superClass: cba.OpenClassFromAbstractClass, deepSearch: false -> false
subClass: cba.OpenClassFromAbstractClass, superClass: cba.OpenClassFromAbstractClass, deepSearch: true -> false
subClass: cba.OpenClassFromAbstractClass, superClass: cba.FinalClass, deepSearch: false -> false
subClass: cba.OpenClassFromAbstractClass, superClass: cba.FinalClass, deepSearch: true -> false
@@ -1,14 +1,14 @@
one.two.EnumEntries|java.lang.Object|false| -> false
one.two.EnumEntries|java.lang.Object|true| -> true
one.two.EnumEntries|java.lang.Enum|false| -> true
one.two.EnumEntries|java.lang.Enum|true| -> true
one.two.EnumEntries.SecondEntryWithBody|java.lang.Enum|false| -> false
one.two.EnumEntries.SecondEntryWithBody|java.lang.Enum|true| -> true
one.two.EnumEntries.SecondEntryWithBody|one.two.EnumEntries|false| -> true
one.two.EnumEntries.SecondEntryWithBody|one.two.EnumEntries|true| -> true
one.two.EnumEntries.SecondEntryWithBody|java.lang.Object|false| -> false
one.two.EnumEntries.SecondEntryWithBody|java.lang.Object|true| -> true
one.two.EnumEntries.SecondEntryWithBody|one.two.BaseInterface|false| -> false
one.two.EnumEntries.SecondEntryWithBody|one.two.BaseInterface|true| -> false
one.two.EnumClassWithInterface.NewSecondEntryWithBody|one.two.BaseInterface|false| -> false
one.two.EnumClassWithInterface.NewSecondEntryWithBody|one.two.BaseInterface|true| -> true
subClass: one.two.EnumEntries, superClass: java.lang.Object, deepSearch: false -> false
subClass: one.two.EnumEntries, superClass: java.lang.Object, deepSearch: true -> true
subClass: one.two.EnumEntries, superClass: java.lang.Enum, deepSearch: false -> true
subClass: one.two.EnumEntries, superClass: java.lang.Enum, deepSearch: true -> true
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: java.lang.Enum, deepSearch: false -> false
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: java.lang.Enum, deepSearch: true -> true
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: one.two.EnumEntries, deepSearch: false -> true
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: one.two.EnumEntries, deepSearch: true -> true
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: java.lang.Object, deepSearch: false -> false
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: java.lang.Object, deepSearch: true -> true
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: one.two.BaseInterface, deepSearch: false -> false
subClass: one.two.EnumEntries.SecondEntryWithBody, superClass: one.two.BaseInterface, deepSearch: true -> false
subClass: one.two.EnumClassWithInterface.NewSecondEntryWithBody, superClass: one.two.BaseInterface, deepSearch: false -> false
subClass: one.two.EnumClassWithInterface.NewSecondEntryWithBody, superClass: one.two.BaseInterface, deepSearch: true -> true
@@ -1,22 +1,22 @@
two.Object|java.lang.Object|false| -> true
two.Object|java.lang.Object|true| -> true
two.Object|two.BaseInterface|false| -> false
two.Object|two.BaseInterface|true| -> false
two.ObjectWithInterface|two.BaseInterface|false| -> true
two.ObjectWithInterface|two.BaseInterface|true| -> true
two.ObjectWithInterface|java.lang.Object|false| -> true
two.ObjectWithInterface|java.lang.Object|true| -> true
two.ObjectWithClassAndInterface|java.lang.Object|false| -> false
two.ObjectWithClassAndInterface|java.lang.Object|true| -> true
two.ObjectWithClassAndInterface|two.NonBaseClass|false| -> true
two.ObjectWithClassAndInterface|two.NonBaseClass|true| -> true
two.ObjectWithClassAndInterface|two.NonBaseInterface|false| -> true
two.ObjectWithClassAndInterface|two.NonBaseInterface|true| -> true
two.ObjectWithClassAndJavaInterface|java.lang.Object|false| -> false
two.ObjectWithClassAndJavaInterface|java.lang.Object|true| -> true
two.ObjectWithClassAndJavaInterface|two.NonBaseClass|false| -> true
two.ObjectWithClassAndJavaInterface|two.NonBaseClass|true| -> true
two.ObjectWithClassAndJavaInterface|two.NonBaseInterface|false| -> false
two.ObjectWithClassAndJavaInterface|two.NonBaseInterface|true| -> false
two.ObjectWithClassAndJavaInterface|java.lang.Runnable|false| -> true
two.ObjectWithClassAndJavaInterface|java.lang.Runnable|true| -> true
subClass: two.Object, superClass: java.lang.Object, deepSearch: false -> true
subClass: two.Object, superClass: java.lang.Object, deepSearch: true -> true
subClass: two.Object, superClass: two.BaseInterface, deepSearch: false -> false
subClass: two.Object, superClass: two.BaseInterface, deepSearch: true -> false
subClass: two.ObjectWithInterface, superClass: two.BaseInterface, deepSearch: false -> true
subClass: two.ObjectWithInterface, superClass: two.BaseInterface, deepSearch: true -> true
subClass: two.ObjectWithInterface, superClass: java.lang.Object, deepSearch: false -> true
subClass: two.ObjectWithInterface, superClass: java.lang.Object, deepSearch: true -> true
subClass: two.ObjectWithClassAndInterface, superClass: java.lang.Object, deepSearch: false -> false
subClass: two.ObjectWithClassAndInterface, superClass: java.lang.Object, deepSearch: true -> true
subClass: two.ObjectWithClassAndInterface, superClass: two.NonBaseClass, deepSearch: false -> true
subClass: two.ObjectWithClassAndInterface, superClass: two.NonBaseClass, deepSearch: true -> true
subClass: two.ObjectWithClassAndInterface, superClass: two.NonBaseInterface, deepSearch: false -> true
subClass: two.ObjectWithClassAndInterface, superClass: two.NonBaseInterface, deepSearch: true -> true
subClass: two.ObjectWithClassAndJavaInterface, superClass: java.lang.Object, deepSearch: false -> false
subClass: two.ObjectWithClassAndJavaInterface, superClass: java.lang.Object, deepSearch: true -> true
subClass: two.ObjectWithClassAndJavaInterface, superClass: two.NonBaseClass, deepSearch: false -> true
subClass: two.ObjectWithClassAndJavaInterface, superClass: two.NonBaseClass, deepSearch: true -> true
subClass: two.ObjectWithClassAndJavaInterface, superClass: two.NonBaseInterface, deepSearch: false -> false
subClass: two.ObjectWithClassAndJavaInterface, superClass: two.NonBaseInterface, deepSearch: true -> false
subClass: two.ObjectWithClassAndJavaInterface, superClass: java.lang.Runnable, deepSearch: false -> true
subClass: two.ObjectWithClassAndJavaInterface, superClass: java.lang.Runnable, deepSearch: true -> true
@@ -1,2 +1,2 @@
one.two.MyInterface.DefaultImpls|java.lang.Object|false| -> true
one.two.MyInterface.DefaultImpls|java.lang.Object|true| -> true
subClass: one.two.MyInterface.DefaultImpls, superClass: java.lang.Object, deepSearch: false -> true
subClass: one.two.MyInterface.DefaultImpls, superClass: java.lang.Object, deepSearch: true -> true
@@ -25,6 +25,8 @@ import kotlin.io.path.forEachLine
import kotlin.io.path.notExists
private const val INHERITORS_EXTENSION = "inheritors.txt"
private const val PAIRS_DELIMITER = ", "
private const val VALUE_DELIMITER = ": "
abstract class AbstractSymbolLightClassesStructureTest(
configurator: AnalysisApiTestConfigurator,
@@ -60,12 +62,21 @@ abstract class AbstractSymbolLightClassesStructureTest(
val queries = parseInheritorsFile(testData)
val result = buildString {
for (query in queries) {
append("subClass")
append(VALUE_DELIMITER)
append(query.fqNameToCheck)
append('|')
append(PAIRS_DELIMITER)
append("superClass")
append(VALUE_DELIMITER)
append(query.baseFqName)
append('|')
append(PAIRS_DELIMITER)
append("deepSearch")
append(VALUE_DELIMITER)
append(query.deep.toString())
append("| -> ")
append(" -> ")
appendLine(query.isInheritor(project).toString())
}
}
@@ -89,10 +100,21 @@ abstract class AbstractSymbolLightClassesStructureTest(
path.forEachLine { line: String ->
if (line.isBlank()) return@forEachLine
val arguments = line.split('|')
val fqNameToCheck = arguments.getOrNull(0) ?: wrongInheritorStructure(line)
val baseFqName = arguments.getOrNull(1) ?: wrongInheritorStructure(line)
val deep = arguments.getOrNull(2)?.toBoolean() ?: wrongInheritorStructure(line)
val arguments = line.split(PAIRS_DELIMITER)
val fqNameToCheck = arguments.getOrNull(0)
?.substringAfter(VALUE_DELIMITER)
?: wrongInheritorStructure(line)
val baseFqName = arguments.getOrNull(1)
?.substringAfter(VALUE_DELIMITER)
?: wrongInheritorStructure(line)
val deep = arguments.getOrNull(2)
?.substringAfter(VALUE_DELIMITER)
?.substringBefore(' ')
?.toBoolean()
?: wrongInheritorStructure(line)
add(InheritorStructure(fqNameToCheck = fqNameToCheck, baseFqName = baseFqName, deep = deep))
}
}.toSet()