Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
9fcf5c0
UTBotFamily
denis-fokin Oct 5, 2022
eee8f85
Add CodeGenLanguage.id
tamarinvs19 Oct 5, 2022
08ccb65
Update Renderers
tamarinvs19 Oct 5, 2022
301f2d5
Move codeGenLanguage to CgRenderContext
tamarinvs19 Oct 5, 2022
ddc57d9
Add init to CodeLanguage
tamarinvs19 Oct 5, 2022
8086a63
UTBotFamily
denis-fokin Oct 5, 2022
0708155
Fix after merge bugs
tamarinvs19 Oct 5, 2022
64ade72
Fix bug with variableConstructors and remove ExecutionStateAnalyzer from
tamarinvs19 Oct 6, 2022
50c9a57
Update generated_tests__dicts
tamarinvs19 Oct 6, 2022
6a6a337
Change targetCompatibility verstion
tamarinvs19 Oct 6, 2022
9e9725c
Refactor js
tamarinvs19 Oct 6, 2022
8a53d09
Fix PycharmUltimate code and uncomment js
tamarinvs19 Oct 6, 2022
8abe0b7
Fix Windows symbols problem
tamarinvs19 Oct 6, 2022
542aeae
Disable runIde tasks in modules where we need only Idea sdk dependencies
denis-fokin Oct 6, 2022
ee45191
Merge actual UTBot Go, set up and fix its CLI
GlebSolovev Oct 4, 2022
e44813d
Improve requirements description for UTBot Go
GlebSolovev Oct 4, 2022
a3ad833
Merge UTBot Go IntelliJ plugin support
tamarinvs19 Oct 7, 2022
a7b8d25
Fix Go
tamarinvs19 Oct 7, 2022
8def007
New file chooser in Python plugin
tochilinak Oct 7, 2022
0af38e8
Fixed bug in Python cli
tochilinak Oct 7, 2022
14ff580
Refactored Slava's CodegenLanguage
zishkaz Oct 7, 2022
d8328e2
disable go runIde
Markoutte Oct 10, 2022
8a91164
Change "\\" to File.separator
tamarinvs19 Oct 10, 2022
14ccaf6
Add relation sys.path support
tamarinvs19 Oct 10, 2022
894707b
Change cli result output
tamarinvs19 Oct 10, 2022
78e8f9d
[WIP] Linux cmd possible fix
rudolf101 Oct 11, 2022
99c5d8b
[WIP] universal JsCmdExec implementation
zishkaz Oct 14, 2022
e6b0168
Moved OsProvider for a wider access scope
zishkaz Oct 14, 2022
299452d
Getting node and npm from IDEA settings
zishkaz Oct 14, 2022
ba23868
JsDynamicSettings added
zishkaz Oct 14, 2022
4b3fb14
[WIP] Added nyc path field to dialog window
rudolf101 Oct 14, 2022
079e8d0
New js coverage algo implementation
zishkaz Oct 16, 2022
319bc54
Added nyc path field into dialog window
rudolf101 Oct 17, 2022
54f079c
Update samples
tamarinvs19 Oct 17, 2022
ff1b093
Added replace separator in Nyc validation
rudolf101 Oct 18, 2022
9ed03f0
Added new options to js CLI and fixed exports managers
zishkaz Oct 18, 2022
074d0d1
Fix after rebase problems
tamarinvs19 Oct 19, 2022
b11718f
Fixed js samples and help tips in js CLI
zishkaz Oct 19, 2022
18f514f
Fixed js exports managers regexes
zishkaz Oct 19, 2022
eae8efe
Move language-specific UtModels to utbo-<lang> and remove CodegenLang…
tamarinvs19 Oct 20, 2022
d99deb9
Fix cli bug
tamarinvs19 Oct 20, 2022
e74317f
Simle style fix
tamarinvs19 Oct 20, 2022
3887c93
Moved test directory chooser to ui-commons and fixed graal error
zishkaz Oct 20, 2022
1247455
Removing go from pr branch
zishkaz Oct 24, 2022
037098f
Added gitignore file for js samples
zishkaz Oct 24, 2022
97f4d6a
Fix changes
tamarinvs19 Oct 24, 2022
7688990
Fix testClassName bug
tamarinvs19 Oct 25, 2022
29180b9
Rebase FileUtil.kt onto main
tamarinvs19 Oct 26, 2022
3129d70
Rebase files onto main
tamarinvs19 Oct 26, 2022
0152df5
Remove internal UtilMethodProvider
tamarinvs19 Oct 26, 2022
84ec8fc
Rebase onto main
tamarinvs19 Oct 26, 2022
b24caf9
Update language settings
tamarinvs19 Oct 26, 2022
fc52711
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 26, 2022
52085ec
Update gradle files
tamarinvs19 Oct 26, 2022
eba7d57
Fix js npm path and nyc validator for linux
tamarinvs19 Oct 26, 2022
be1adc7
Add conditions for ideType
tamarinvs19 Oct 26, 2022
f997039
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 26, 2022
9e0b25a
Update ide settings
tamarinvs19 Oct 26, 2022
83a9dcd
Add docs page about IDE
tamarinvs19 Oct 26, 2022
fcca3bf
Add docs link
tamarinvs19 Oct 26, 2022
f21a1cb
Fix Coverage error
tamarinvs19 Oct 26, 2022
2d7d817
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 26, 2022
05af2c5
Rebase onto main
tamarinvs19 Oct 26, 2022
68c5d7d
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 26, 2022
92f6f72
Rebase onto main
tamarinvs19 Oct 26, 2022
55c278b
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 27, 2022
1f1b016
Rebase onto main
tamarinvs19 Oct 27, 2022
1d5b379
Make GgGetClass sealed
tamarinvs19 Oct 27, 2022
3d98f82
Fix deprecated showYesNoDialog and ProjectFileIndex.SERVICE
tamarinvs19 Oct 27, 2022
dc242fe
Change IU to IC
tamarinvs19 Oct 27, 2022
bdd4442
Remove open from ClassId.elementClassId
tamarinvs19 Oct 27, 2022
c7b69a1
Code style refactoring
tamarinvs19 Oct 27, 2022
4432359
Add file with changes description
tamarinvs19 Oct 27, 2022
284928b
Update gitignores
tamarinvs19 Oct 27, 2022
7ee92d1
Remove com.jetbrains.intellij.idea:ideaIC dependency
tamarinvs19 Oct 27, 2022
67b9fe0
Change IU to IC
tamarinvs19 Oct 27, 2022
6d9522a
Added coverage mode buttons | JS
rudolf101 Oct 27, 2022
54faab1
Update CLI docs
rudolf101 Oct 28, 2022
5a50a55
Fixed JS basic coverage service algo
zishkaz Oct 28, 2022
60e96e9
Fixes JsConstantsModelProvider after master merge
zishkaz Oct 28, 2022
972607e
Removed unnecessary check for Mocha framework that failed in built pl…
zishkaz Oct 28, 2022
05d7b4e
Removed lateinit modifier
zishkaz Oct 28, 2022
f578890
Removed export statements from js samples
zishkaz Oct 28, 2022
f8f064a
Merge branch 'tamarinvs19/UnitTestBot_Family_PR' of https://github.co…
zishkaz Oct 28, 2022
aa4c1a8
Fix in Python CLI
tochilinak Oct 28, 2022
3409678
JS cli naming fix
zishkaz Oct 31, 2022
289b6b9
Rename python cli class
tamarinvs19 Oct 31, 2022
5f205e3
Move comment line in CodeGeneratorResult
tamarinvs19 Oct 31, 2022
ec8f1dd
Remove jClass from python/js branch
tamarinvs19 Oct 31, 2022
d66c1ba
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Oct 31, 2022
6295f85
Reworked text annotations in Mocha object
zishkaz Oct 31, 2022
1781fa8
Merge remote-tracking branch 'origin/tamarinvs19/UnitTestBot_Family_P…
zishkaz Oct 31, 2022
d53325b
Remove soot dependency from utbot-python and implement new CgRender m…
tamarinvs19 Oct 31, 2022
18acd32
Merge remote-tracking branch 'origin/tamarinvs19/UnitTestBot_Family_P…
tamarinvs19 Oct 31, 2022
2385dc6
Used withUtContext in JsTestGenerator and reworked Mocha TestFramewor…
zishkaz Oct 31, 2022
20e416a
Locally fixed explicit File.separator replacements
zishkaz Oct 31, 2022
6dff767
Removed unnecessary catch
rudolf101 Nov 1, 2022
766616c
Fix weak comments
rudolf101 Nov 1, 2022
58415b3
Removed unnecessary try catch
rudolf101 Nov 1, 2022
f73d3fd
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Nov 2, 2022
5c9e7fb
Fix CgRenderer bugs after merge
tamarinvs19 Nov 2, 2022
a8d4d92
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Nov 2, 2022
0b66cab
Add README.md to utbot-python-cli
tamarinvs19 Nov 2, 2022
7a8893c
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Nov 3, 2022
98ac84a
JS code refactoring
zishkaz Nov 3, 2022
d0815c8
Merge remote-tracking branch 'origin/tamarinvs19/UnitTestBot_Family_P…
zishkaz Nov 3, 2022
7e16b66
Removed unnecessary JS file parsing
zishkaz Nov 7, 2022
dcfa7eb
Refactor utbot-intellij-python
tamarinvs19 Nov 7, 2022
a781aa9
Refactor utbot-python
tamarinvs19 Nov 7, 2022
9074ed2
Fix "Language <> is disabled" problem from Issue #1329
tamarinvs19 Nov 9, 2022
f9698b3
Merge branch 'main' into tamarinvs19/UnitTestBot_Family_PR
tamarinvs19 Nov 9, 2022
37c9564
Change GenerateTestsModel to BaseTestsModel
tamarinvs19 Nov 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions utbot-cli-python/src/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
## Build

.jar file can be built in Github Actions with script `publish-plugin-and-cli-from-branch`.

## Requirements

- Required Java version: 11.

- Prefered Python version: 3.8 or 3.9.

Make sure that your Python has `pip` installed (this is usually the case). [Read more about pip installation](https://pip.pypa.io/en/stable/installation/).

Before running utbot install pip requirements (or use `--install-requirements` flag in `generate_python` command):

python -m pip install mypy==0.971 astor typeshed-client coverage

## Basic usage

Generate tests:

java -jar utbot-cli.jar generate_python dir/file_with_sources.py -p <PYTHON_PATH> -o generated_tests.py -s dir

This will generate tests for top-level functions from `file_with_sources.py`.

Run generated tests:

java -jar utbot-cli.jar run_python generated_tests.py -p <PYTHON_PATH>

### `generate_python` options

- `-s, --sys-path <dir1>,<dir2>`

(required) Directories to add to `sys.path`. One of directories must contain the file with the methods under test.

`sys.path` is a list of strings that specifies the search path for modules. It must include paths for all user modules that are used in imports.

- `-p, --python-path <path>`

(required) Path to Python interpreter.

- `-o, --output <filename>`

(required) File for generated tests.

- `--coverage <filename>`

File to write coverage report.

- `-c, --class <class>`

Specify top-level (ordinary, not nested) class under test. Without this option tests will be generated for top-level functions.

- `-m, --methods <method1>,<method2>`

Specify methods under test.

- `--install-requirements`

Install Python requirements if missing.

- `--do-not-minimize`

Turn off minimization of the number of generated tests.

- `--do-not-check-requirements`

Turn off Python requirements check (to speed up).

- `--visit-only-specified-source`

Do not search for classes and imported modules in other Python files from `--sys-path` option.

- `-t, --timeout INT`

Specify the maximum time in milliseconds to spend on generating tests (60000 by default).

- `--timeout-for-run INT`

Specify the maximum time in milliseconds to spend on one function run (2000 by default).

- `--test-framework [pytest|Unittest]`

Test framework to be used.

### `run_python` options

- `-p, --python-path <path>`

(required) Path to Python interpreter.

- `--test-framework [pytest|Unittest]`

Test framework of tests to run.

- `-o, --output <filename>`

Specify file for report.

## Problems

- Unittest can not run tests from parent directories
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ open class CodeGenerator(
}
}

fun renderClassFile(file: AbstractCgClassFile<*>): String {
fun renderClassFile(file: CgClassFile): String {
val renderer = CgAbstractRenderer.makeRenderer(context)
file.accept(renderer)
return renderer.toString()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.utbot.framework.codegen.model.constructor.tree

import org.utbot.framework.UtSettings
import org.utbot.framework.codegen.ParametrizedTestSource
import org.utbot.framework.codegen.model.constructor.CgMethodTestSet
import org.utbot.framework.codegen.model.constructor.TestClassModel
Expand Down Expand Up @@ -65,8 +66,8 @@ open class CgTestClassConstructor(val context: CgContext) :
}
}

open fun constructTestClass(testClassModel: TestClassModel): CgTestClass {
return buildTestClass {
open fun constructTestClass(testClassModel: TestClassModel): CgClass {
return buildClass {
id = currentTestClass

if (currentTestClass != outerMostTestClass) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ import org.utbot.framework.plugin.api.util.shortClassId

abstract class CgAbstractRenderer(
val context: CgRendererContext,
private val printer: CgPrinter = CgPrinterImpl()
val printer: CgPrinter = CgPrinterImpl()
) : CgVisitor<Unit>,
CgPrinter by printer {

Expand All @@ -112,6 +112,7 @@ abstract class CgAbstractRenderer(

protected open val regionStart: String = "///region"
protected open val regionEnd: String = "///endregion"
protected var isInterrupted = false

protected abstract val langPackage: String

Expand Down Expand Up @@ -850,7 +851,7 @@ abstract class CgAbstractRenderer(
}
}

protected fun renderClassFileImports(element: AbstractCgClassFile<*>) {
protected open fun renderClassFileImports(element: CgClassFile) {
val regularImports = element.imports.filterIsInstance<RegularImport>()
val staticImports = element.imports.filterIsInstance<StaticImport>()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class JsDialogWindow(val model: JsTestsModel) : DialogWrapper(model.project) {
init {
model.pathToNode = nodeInterp.interpreterSystemDependentPath.replace("\\", "/")
model.pathToNPM = model.pathToNode.substringBeforeLast("/") + "/" + "npm"
//TODO: fix.
//TODO: Find out how to find pathToNode from IDEA settings without extra actions from the user
model.pathToNode = "node"
title = "Generate Tests with UtBot"
// initTestFrameworkPresenceThread = thread(start = true) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,6 @@ import org.utbot.intellij.plugin.util.RunConfigurationHelper
import org.utbot.intellij.plugin.util.extractClassMethodsIncludingNested
import org.utbot.sarif.Sarif
import org.utbot.sarif.SarifReport
import java.nio.file.Path
import java.util.concurrent.CancellationException
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit

object CodeGenerationController {
private val logger = KotlinLogging.logger {}
Expand Down
24 changes: 10 additions & 14 deletions utbot-js/src/main/kotlin/api/JsTestGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@ import com.oracle.js.parser.ScriptEnvironment
import com.oracle.js.parser.Source
import com.oracle.js.parser.ir.ClassNode
import com.oracle.js.parser.ir.FunctionNode
import framework.api.js.JsClassId
import framework.api.js.JsMethodId
import framework.api.js.JsMultipleClassId
import framework.api.js.util.isJsBasic
import framework.api.js.util.jsErrorClassId
import fuzzer.JsFuzzer
import fuzzer.providers.JsObjectModelProvider
import java.io.File
import org.graalvm.polyglot.Context
import org.utbot.framework.codegen.model.constructor.CgMethodTestSet
import org.utbot.framework.plugin.api.EnvironmentModels
import org.utbot.framework.plugin.api.ExecutableId
Expand All @@ -20,12 +25,6 @@ import org.utbot.framework.plugin.api.UtExecutionResult
import org.utbot.framework.plugin.api.UtExecutionSuccess
import org.utbot.framework.plugin.api.UtExplicitlyThrownException
import org.utbot.framework.plugin.api.UtModel
import framework.api.js.JsClassId
import framework.api.js.JsMethodId
import framework.api.js.JsMultipleClassId
import framework.api.js.util.isJsBasic
import framework.api.js.util.jsErrorClassId
import org.graalvm.polyglot.Context
import org.utbot.framework.plugin.api.util.UtContext
import org.utbot.framework.plugin.api.util.isStatic
import org.utbot.framework.plugin.api.util.voidClassId
Expand All @@ -47,6 +46,7 @@ import settings.JsTestGenerationSettings.dummyClassName
import utils.PathResolver
import utils.constructClass
import utils.toJsAny
import java.io.File


class JsTestGenerator(
Expand Down Expand Up @@ -103,11 +103,7 @@ class JsTestGenerator(
val methods = makeMethodsToTest()
if (methods.isEmpty()) throw IllegalArgumentException("No methods to test were found!")
methods.forEach { funcNode ->
try {
makeTestsForMethod(classId, funcNode, classNode, context, testSets, paramNames)
} catch (e: Exception) {
throw e
}
makeTestsForMethod(classId, funcNode, classNode, context, testSets, paramNames)
}
val importPrefix = makeImportPrefix()
val codeGen = JsCodeGenerator(
Expand Down Expand Up @@ -140,7 +136,7 @@ class JsTestGenerator(
)
val testsForGenerator = mutableListOf<UtExecution>()
val errorsForGenerator = mutableMapOf<String, Int>()
executionResults.forEachIndexed {index, value ->
executionResults.forEachIndexed { index, value ->
if (value == "Error:Timeout") {
errorsForGenerator["Timeout in generating test for ${
fuzzedValues[index]
Expand Down Expand Up @@ -356,4 +352,4 @@ class JsTestGenerator(
it.value is FunctionNode
}?.map { it.value as FunctionNode } ?: throw IllegalStateException("Can't extract methods of class $className")
}
}
}
4 changes: 2 additions & 2 deletions utbot-js/src/main/kotlin/api/JsUtModelConstructor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import framework.api.js.util.jsUndefinedClassId

class JsUtModelConstructor : UtModelConstructorInterface {

// TODO SEVERE: This is a very dirty prototype version. Expand!
// TODO SEVERE: Requires substantial expansion to other types
@Suppress("NAME_SHADOWING")
override fun construct(value: Any?, classId: ClassId): UtModel {
val classId = classId as JsClassId
Expand Down Expand Up @@ -60,4 +60,4 @@ class JsUtModelConstructor : UtModelConstructorInterface {
instantiationCall = instantiationCall,
)
}
}
}
1 change: 0 additions & 1 deletion utbot-js/src/main/kotlin/framework/codegen/JsDomain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ object Mocha : TestFramework(id = "Mocha", displayName = "Mocha") {
override val methodSourceAnnotationFqn: String
get() = throw UnsupportedOperationException("Parameterized tests are not supported for Mocha")

//TODO MINOR: think
override val nestedClassesShouldBeStatic: Boolean
get() = false
override val argListClassId: ClassId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ internal class CgJsRenderer(context: CgRendererContext, printer: CgPrinter = CgP
}


override fun visit(element: CgTestClass) {
override fun visit(element: CgClass) {
element.body.accept(this)
}

Expand Down Expand Up @@ -162,7 +162,7 @@ internal class CgJsRenderer(context: CgRendererContext, printer: CgPrinter = CgP
element.values.renderElements(elementsInLine)
}

override fun visit(element: CgTestClassFile) {
override fun visit(element: CgClassFile) {
element.imports.filterIsInstance<RegularImport>().forEach {
renderRegularImport(it)
}
Expand Down Expand Up @@ -248,13 +248,9 @@ internal class CgJsRenderer(context: CgRendererContext, printer: CgPrinter = CgP
// TODO: Should we render throw statement right here?
}

override fun visit(element: AbstractCgClass<*>) {
TODO("Not yet implemented")
}

override fun visit(element: CgTestClassBody) {
override fun visit(element: CgClassBody) {
// render regions for test methods
for ((i, region) in (element.testMethodRegions + element.nestedClassRegions).withIndex()) {
for ((i, region) in (element.methodRegions + element.nestedClassRegions).withIndex()) {
if (i != 0) println()

region.accept(this)
Expand Down Expand Up @@ -363,7 +359,7 @@ internal class CgJsRenderer(context: CgRendererContext, printer: CgPrinter = CgP
TODO("Not yet implemented")
}

override fun renderClassModality(aClass: AbstractCgClass<*>) {
override fun renderClassModality(aClass: CgClass) {
TODO("Not yet implemented")
}

Expand Down
6 changes: 2 additions & 4 deletions utbot-js/src/main/kotlin/service/BasicCoverageService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class BasicCoverageService(
private val context: ServiceContext,
private val scriptTexts: List<String>,
private val testCaseIndices: IntRange,
): ICoverageService {
) : ICoverageService {

private val errors = mutableListOf<Int>()
private var baseCoverage = emptyList<Int>()
Expand Down Expand Up @@ -46,8 +46,6 @@ class BasicCoverageService(
}
}
return res
} catch (e: Exception) {
throw Exception("Could not get coverage of test cases!")
} finally {
removeTempFiles()
}
Expand Down Expand Up @@ -142,4 +140,4 @@ class BasicCoverageService(
file.writeText(scriptText)
file.createNewFile()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@ import org.utbot.python.framework.api.python.pythonBuiltinsModuleName
import org.utbot.python.framework.api.python.util.pythonAnyClassId
import org.utbot.python.framework.codegen.model.tree.*

internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter = CgPrinterImpl()) :
CgAbstractRenderer(context, printer), CgPythonVisitor<Unit> {
internal class CgPythonRenderer(
context: CgRendererContext,
printer: CgPrinter = CgPrinterImpl()
) :
CgAbstractRenderer(context, printer),
CgPythonVisitor<Unit> {

override val regionStart: String = "# region"
override val regionEnd: String = "# endregion"

Expand All @@ -38,7 +43,7 @@ internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter =
override val ClassId.methodsAreAccessibleAsTopLevel: Boolean
get() = false

override fun visit(element: CgTestClassFile) {
override fun visit(element: CgClassFile) {
renderClassFileImports(element)

println()
Expand All @@ -47,7 +52,7 @@ internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter =
element.declaredClass.accept(this)
}

override fun visit(element: AbstractCgClass<*>) {
override fun visit(element: CgClass) {
print("class ")
print(element.simpleName)
if (element.superclass != null) {
Expand Down Expand Up @@ -114,9 +119,9 @@ internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter =
element.expression.accept(this)
}

override fun visit(element: CgTestClassBody) {
override fun visit(element: CgClassBody) {
// render regions for test methods
for ((i, region) in (element.testMethodRegions + element.nestedClassRegions).withIndex()) {
for ((i, region) in (element.methodRegions + element.nestedClassRegions).withIndex()) {
if (i != 0) println()

region.accept(this)
Expand Down Expand Up @@ -233,9 +238,8 @@ internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter =
throw UnsupportedOperationException()
}

private fun renderClassFileImports(element: CgTestClassFile) {
override fun renderClassFileImports(element: CgClassFile) {
element.imports
.toSet()
.filterIsInstance<PythonImport>()
.sortedBy { it.order }
.forEach { renderPythonImport(it) }
Expand Down Expand Up @@ -354,7 +358,7 @@ internal class CgPythonRenderer(context: CgRendererContext, printer: CgPrinter =
throw UnsupportedOperationException()
}

override fun renderClassModality(aClass: AbstractCgClass<*>) {
override fun renderClassModality(aClass: CgClass) {
throw UnsupportedOperationException()
}

Expand Down