Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): explicitly serialise File due to upstream issue #553

Merged
merged 2 commits into from
Sep 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ object Versions {
val espressoRules = "1.0.1"
val espressoRunner = "1.0.1"
val junit = "4.12"
val gson = "2.8.7"
val gson = "2.8.8"
val apacheCommonsText = "1.9"
val apacheCommonsIO = "2.9.0"
val influxDbClient = "2.21"
Expand Down
12 changes: 12 additions & 0 deletions core/src/main/kotlin/com/malinskiy/marathon/Marathon.kt
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ class Marathon(
configureLogging(configuration.vendorConfiguration)
trackAnalytics(configuration)

logSystemInformation()

val testParser = loadTestParser(configuration.vendorConfiguration)
val deviceProvider = loadDeviceProvider(configuration.vendorConfiguration)
val testBundleIdentifier = loadTestBundleIdentifier(configuration.vendorConfiguration)
Expand Down Expand Up @@ -131,6 +133,16 @@ class Marathon(
return progressReporter.aggregateResult()
}

private fun logSystemInformation() {
log.info { "System Information:" }

val properties = System.getProperties()
val systemProperties = properties.filterKeys { it.toString().startsWith("java") || it.toString().startsWith("os") }
systemProperties.forEach {
log.info { "${it.key}: ${it.value}" }
}
}

private fun installShutdownHook(block: suspend () -> Unit): ShutdownHook {
val shutdownHook = ShutdownHook(configuration) {
runBlocking {
Expand Down
10 changes: 8 additions & 2 deletions core/src/main/kotlin/com/malinskiy/marathon/di/Modules.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package com.malinskiy.marathon.di

import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.malinskiy.marathon.Marathon
import com.malinskiy.marathon.analytics.TrackerFactory
import com.malinskiy.marathon.analytics.external.AnalyticsFactory
import com.malinskiy.marathon.analytics.internal.pub.Track
import com.malinskiy.marathon.execution.Configuration
import com.malinskiy.marathon.execution.progress.ProgressReporter
import com.malinskiy.marathon.io.FileManager
import com.malinskiy.marathon.json.FileSerializer
import com.malinskiy.marathon.time.SystemTimer
import com.malinskiy.marathon.time.Timer
import org.koin.core.KoinApplication
import org.koin.core.context.startKoin
import org.koin.dsl.module
import java.io.File
import java.time.Clock

val analyticsModule = module {
Expand All @@ -23,7 +25,11 @@ val analyticsModule = module {

val coreModule = module {
single { FileManager(get<Configuration>().outputDir) }
single { Gson() }
single {
GsonBuilder()
.registerTypeAdapter(File::class.java, FileSerializer())
.create()
}
single<Clock> { Clock.systemDefaultZone() }
single<Timer> { SystemTimer(get()) }
single { ProgressReporter(get()) }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.malinskiy.marathon.json

import com.google.gson.JsonElement
import com.google.gson.JsonPrimitive
import com.google.gson.JsonSerializationContext
import com.google.gson.JsonSerializer
import java.io.File
import java.lang.reflect.Type

internal class FileSerializer : JsonSerializer<File> {
override fun serialize(src: File, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement {
return JsonPrimitive(src.absolutePath)
}
}