@@ -21,13 +21,27 @@ internal val utbotHomePath = "${System.getProperty("user.home")}/.utbot"
21
21
private val defaultSettingsPath = " $utbotHomePath /settings.properties"
22
22
private const val defaultKeyForSettingsPath = " utbot.settings.path"
23
23
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 ) {
25
30
private var value = initializer()
26
31
32
+ init {
33
+ updateSettingValue()
34
+ }
35
+
27
36
operator fun getValue (thisRef : Any? , property : KProperty <* >): T = value
28
37
29
38
operator fun setValue (thisRef : Any? , property : KProperty <* >, value : T ) {
30
39
this .value = value
40
+ updateSettingValue()
41
+ }
42
+
43
+ private fun updateSettingValue () {
44
+ settingsValues[property] = value
31
45
}
32
46
}
33
47
@@ -55,15 +69,13 @@ object UtSettings {
55
69
defaultValue : T ,
56
70
converter : (String ) -> T
57
71
): PropertyDelegateProvider <UtSettings , SettingDelegate <T >> {
58
- return PropertyDelegateProvider { _, prop ->
59
- SettingDelegate {
72
+ return PropertyDelegateProvider { _, property ->
73
+ SettingDelegate (property) {
60
74
try {
61
- properties.getProperty(prop .name)?.let (converter) ? : defaultValue
75
+ properties.getProperty(property .name)?.let (converter) ? : defaultValue
62
76
} catch (e: Throwable ) {
63
77
logger.info(e) { e.message }
64
78
defaultValue
65
- } finally {
66
- properties.putIfAbsent(prop.name, defaultValue.toString())
67
79
}
68
80
}
69
81
}
@@ -76,7 +88,6 @@ object UtSettings {
76
88
private inline fun <reified T : Enum <T >> getEnumProperty (defaultValue : T ) =
77
89
getProperty(defaultValue) { enumValueOf(it) }
78
90
79
-
80
91
/* *
81
92
* Setting to disable coroutines debug explicitly.
82
93
*
@@ -381,9 +392,10 @@ object UtSettings {
381
392
var skipTestGenerationForSyntheticMethods by getBooleanProperty(true )
382
393
383
394
override fun toString (): String =
384
- properties
395
+ settingsValues
396
+ .mapKeys { it.key.name }
385
397
.entries
386
- .sortedBy { it.key.toString() }
398
+ .sortedBy { it.key }
387
399
.joinToString(separator = System .lineSeparator()) { " \t ${it.key} =${it.value} " }
388
400
}
389
401
0 commit comments