Skip to content

Commit 2757d01

Browse files
authored
Fixed missing support of manual UtSettings update (#654)
1 parent 45e687e commit 2757d01

File tree

1 file changed

+21
-9
lines changed
  • utbot-framework-api/src/main/kotlin/org/utbot/framework

1 file changed

+21
-9
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,27 @@ internal val utbotHomePath = "${System.getProperty("user.home")}/.utbot"
2121
private val defaultSettingsPath = "$utbotHomePath/settings.properties"
2222
private const val defaultKeyForSettingsPath = "utbot.settings.path"
2323

24-
internal class SettingDelegate<T>(val initializer: () -> T) {
24+
/**
25+
* Stores current values for each setting from [UtSettings].
26+
*/
27+
private val settingsValues: MutableMap<KProperty<*>, Any?> = mutableMapOf()
28+
29+
internal class SettingDelegate<T>(val property: KProperty<*>, val initializer: () -> T) {
2530
private var value = initializer()
2631

32+
init {
33+
updateSettingValue()
34+
}
35+
2736
operator fun getValue(thisRef: Any?, property: KProperty<*>): T = value
2837

2938
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
3039
this.value = value
40+
updateSettingValue()
41+
}
42+
43+
private fun updateSettingValue() {
44+
settingsValues[property] = value
3145
}
3246
}
3347

@@ -55,15 +69,13 @@ object UtSettings {
5569
defaultValue: T,
5670
converter: (String) -> T
5771
): PropertyDelegateProvider<UtSettings, SettingDelegate<T>> {
58-
return PropertyDelegateProvider { _, prop ->
59-
SettingDelegate {
72+
return PropertyDelegateProvider { _, property ->
73+
SettingDelegate(property) {
6074
try {
61-
properties.getProperty(prop.name)?.let(converter) ?: defaultValue
75+
properties.getProperty(property.name)?.let(converter) ?: defaultValue
6276
} catch (e: Throwable) {
6377
logger.info(e) { e.message }
6478
defaultValue
65-
} finally {
66-
properties.putIfAbsent(prop.name, defaultValue.toString())
6779
}
6880
}
6981
}
@@ -76,7 +88,6 @@ object UtSettings {
7688
private inline fun <reified T : Enum<T>> getEnumProperty(defaultValue: T) =
7789
getProperty(defaultValue) { enumValueOf(it) }
7890

79-
8091
/**
8192
* Setting to disable coroutines debug explicitly.
8293
*
@@ -381,9 +392,10 @@ object UtSettings {
381392
var skipTestGenerationForSyntheticMethods by getBooleanProperty(true)
382393

383394
override fun toString(): String =
384-
properties
395+
settingsValues
396+
.mapKeys { it.key.name }
385397
.entries
386-
.sortedBy { it.key.toString() }
398+
.sortedBy { it.key }
387399
.joinToString(separator = System.lineSeparator()) { "\t${it.key}=${it.value}" }
388400
}
389401

0 commit comments

Comments
 (0)