From 52923854cc5ba87e0737664fcd66e19c5ec46d1f Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Thu, 27 Jul 2017 15:55:47 +0100 Subject: [PATCH] Make sure UpdateReport has a nice toString Fixes sbt/sbt#3357 --- .../OrganizationArtifactReport.scala | 3 +- .../main/contraband/librarymanagement.json | 4 ++ core/src/test/scala/UpdateReportSpec.scala | 41 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 core/src/test/scala/UpdateReportSpec.scala diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReport.scala b/core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReport.scala index 3b62b191a..112c4708b 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReport.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReport.scala @@ -30,7 +30,8 @@ final class OrganizationArtifactReport private ( 37 * (37 * (37 * (37 * (17 + "sbt.librarymanagement.OrganizationArtifactReport".##) + organization.##) + name.##) + modules.##) } override def toString: String = { - "OrganizationArtifactReport(" + organization + ", " + name + ", " + modules + ")" + val details = modules map { _.detailReport } + s"\t$organization:$name\n${details.mkString}\n" } protected[this] def copy(organization: String = organization, name: String = name, modules: Vector[sbt.librarymanagement.ModuleReport] = modules): OrganizationArtifactReport = { new OrganizationArtifactReport(organization, name, modules) diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index fa7506f95..c7a04ede8 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -596,6 +596,10 @@ { "name": "organization", "type": "String" }, { "name": "name", "type": "String" }, { "name": "modules", "type": "sbt.librarymanagement.ModuleReport*" } + ], + "toString": [ + "val details = modules map { _.detailReport }", + "s\"\\t$organization:$name\\n${details.mkString}\\n\"" ] }, { diff --git a/core/src/test/scala/UpdateReportSpec.scala b/core/src/test/scala/UpdateReportSpec.scala new file mode 100644 index 000000000..cc7dfd7fd --- /dev/null +++ b/core/src/test/scala/UpdateReportSpec.scala @@ -0,0 +1,41 @@ +package sbt.librarymanagement + +import java.io.File + +import org.scalatest._ + +class UpdateReportSpec extends FlatSpec with Matchers { + "UpdateReport.toString" should "have a nice toString" in { + assert(updateReport.toString === s""" + |Update report: + | Resolve time: 0 ms, Download time: 0 ms, Download size: 0 bytes + | compile: + | org:name + | - 1.0 + | evicted: false + | + |""".stripMargin.drop(1)) + } + + lazy val updateReport = + UpdateReport( + new File("cachedDescriptor.data"), + Vector(configurationReport), + UpdateStats(0, 0, 0, false), + Map.empty + ) + + lazy val configurationReport = + ConfigurationReport( + ConfigRef("compile"), + Vector(moduleReport), + Vector(organizationArtifactReport) + ) + + lazy val moduleReport = + ModuleReport(ModuleID("org", "name", "1.0"), Vector.empty, Vector.empty) + + lazy val organizationArtifactReport = + OrganizationArtifactReport("org", "name", Vector(moduleReport)) + +}