Skip to content

Commit 64a4470

Browse files
authored
Sort dependencies in error reports (#25)
* Sort depenendencies in output * Update examples in docs
1 parent b43dcfc commit 64a4470

File tree

5 files changed

+59
-20
lines changed

5 files changed

+59
-20
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ A mismatch between the lockfile and current dependencies will generate an error
3030
```text
3131
[error] (dependencyLockCheck) Dependency lock check failed:
3232
[error] 3 dependencies changed:
33-
[error] org.scala-lang.modules:scala-xml_2.12:[1.2.0]->[1.1.0] (test)
34-
[error] org.scalactic:scalactic_2.12:[3.0.8]->[3.0.7] (test)
35-
[error] org.scalatest:scalatest_2.12:[3.0.8]->[3.0.7] (test)
33+
[error] org.apache.commons:commons-lang3 (test) -> (compile,test) 3.9
34+
[error] org.scala-lang.modules:scala-xml_2.12 (test) 1.2.0 -> 1.1.0
35+
[error] org.scalactic:scalactic_2.12 (test) 3.0.8 -> 3.0.7
36+
[error] org.scalatest:scalatest_2.12 (test) 3.0.8 -> 3.0.7
3637
```
3738

3839
See the [docs](https://stringbean.github.io/sbt-dependency-lock) for further information on how the plugin works.

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ libraryDependencies ++= Seq(
1818
).map(_ % circeVersion)
1919

2020
libraryDependencies ++= Seq(
21-
"software.purpledragon" %% "text-utils" % "1.3.0",
21+
"software.purpledragon" %% "text-utils" % "1.3.1",
2222
"org.scalatest" %% "scalatest" % "3.2.9" % Test
2323
)
2424

src/main/paradox/getting-started.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ A mismatch between the lockfile and current dependencies will generate an error
4949
```text
5050
[error] (dependencyLockCheck) Dependency lock check failed:
5151
[error] 3 dependencies changed:
52-
[error] org.apache.commons:commons-lang3:3.9 (test)->(compile,test)
53-
[error] org.scala-lang.modules:scala-xml_2.12:[1.2.0]->[1.1.0] (test)
54-
[error] org.scalactic:scalactic_2.12:[3.0.8]->[3.0.7] (test)
55-
[error] org.scalatest:scalatest_2.12:[3.0.8]->[3.0.7] (test)
52+
[error] org.apache.commons:commons-lang3 (test) -> (compile,test) 3.9
53+
[error] org.scala-lang.modules:scala-xml_2.12 (test) 1.2.0 -> 1.1.0
54+
[error] org.scalactic:scalactic_2.12 (test) 3.0.8 -> 3.0.7
55+
[error] org.scalatest:scalatest_2.12 (test) 3.0.8 -> 3.0.7
5656
```
5757

5858
The error report is broken down into a number of sections:
@@ -68,18 +68,18 @@ The error report is broken down into a number of sections:
6868
3. Dependencies added:
6969
```text
7070
2 dependencies added:
71-
com.example:artifact1:1.0 (compile)
72-
com.example:artifact2:1.2 (test)
71+
com.example:artifact1 (compile) 1.0
72+
com.example:artifact2 (test) 1.2
7373
```
7474
4. Dependencies removed:
7575
```text
7676
1 dependency removed:
77-
com.example:artifact3:3.1.1 (runtime)
77+
com.example:artifact3 (runtime) 3.1.1
7878
```
7979
5. Changed dependencies:
8080
```text
8181
3 dependencies changed:
82-
org.example:version:[1.0]->[2.0] (compile)
83-
org.example:configs:1.0 (compile,test)->(compile)
84-
org.example:both:[1.0]->[2.0] (compile)->(compile,test)
82+
org.example:both (compile) -> (compile,test) 1.0 -> 2.0
83+
org.example:configs (compile,test) -> (compile) 1.0
84+
org.example:version (compile) 1.0 -> 2.0
8585
```

src/main/scala/software/purpledragon/sbt/lock/model/LockFileStatus.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package software.purpledragon.sbt.lock.model
1818

1919
import software.purpledragon.sbt.lock.util.MessageUtil
20-
import software.purpledragon.text.TableFormatter
20+
import software.purpledragon.text.SortedTableFormatter
2121

2222
import scala.collection.mutable
2323

@@ -116,8 +116,7 @@ final case class LockFileDiffers(
116116
}
117117

118118
def dumpDependencies(dependencies: Seq[ResolvedDependency]): String = {
119-
val table =
120-
new TableFormatter(None, prefix = " ", stripTrailingNewline = true)
119+
val table = new SortedTableFormatter(None, prefix = " ", stripTrailingNewline = true)
121120

122121
dependencies foreach { dep =>
123122
table.addRow(s"${dep.org}:${dep.name}", s"(${dep.configurations.mkString(",")})", dep.version)
@@ -141,7 +140,7 @@ final case class LockFileDiffers(
141140
}
142141

143142
def dumpChanges(changes: Seq[ChangedDependency]): String = {
144-
val table = new TableFormatter(None, prefix = " ", stripTrailingNewline = true)
143+
val table = new SortedTableFormatter(None, prefix = " ", stripTrailingNewline = true)
145144

146145
changes foreach { change =>
147146
table.addRow(

src/test/scala/software/purpledragon/sbt/lock/model/LockFileStatusSpec.scala

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,45 @@ class LockFileStatusSpec extends AnyFlatSpec with Matchers {
238238
.toLongReport shouldBe expected
239239
}
240240

241+
it should "sort dependencies" in {
242+
val expected =
243+
"""Dependency lock check failed:
244+
| 3 dependencies added:
245+
| com.example:added-2 (compile,test) 1.0
246+
| com.example:added-3 (compile,test) 1.0
247+
| net.example:added-1 (compile,test) 1.0
248+
| 3 dependencies removed:
249+
| com.example:removed-1 (compile,test) 1.0
250+
| com.example:removed-2 (compile,test) 1.0
251+
| com.example:removed-3 (compile,test) 1.0
252+
| 3 dependencies changed:
253+
| com.example:changed-2 (compile,test) 1.0 -> 1.3
254+
| com.example:changed-3 (compile,test) 1.0 -> 1.2
255+
| net.example:changed-1 (compile,test) 1.0 -> 1.0.1""".stripMargin
256+
257+
val actual = LockFileMatches
258+
.withDependencyChanges(
259+
Seq(
260+
testDependency(name = "added-3"),
261+
testDependency(name = "added-2"),
262+
testDependency(org = "net.example", name = "added-1")
263+
),
264+
Seq(
265+
testDependency(name = "removed-1"),
266+
testDependency(name = "removed-3"),
267+
testDependency(name = "removed-2")
268+
),
269+
Seq(
270+
testChangedDependency(name = "changed-3", newVersion = "1.2"),
271+
testChangedDependency(name = "changed-2", newVersion = "1.3"),
272+
testChangedDependency(org = "net.example", name = "changed-1", newVersion = "1.0.1")
273+
)
274+
)
275+
.toLongReport
276+
277+
actual shouldBe expected
278+
}
279+
241280
it should "render lots of changes" in {
242281
val expected =
243282
"""Dependency lock check failed:
@@ -249,9 +288,9 @@ class LockFileStatusSpec extends AnyFlatSpec with Matchers {
249288
| 1 dependency removed:
250289
| com.example:artifact3 (runtime) 3.1.1
251290
| 3 dependencies changed:
252-
| org.example:version (compile) 1.0 -> 2.0
291+
| org.example:both (compile) -> (compile,test) 1.0 -> 2.0
253292
| org.example:configs (compile,test) -> (compile) 1.0
254-
| org.example:both (compile) -> (compile,test) 1.0 -> 2.0""".stripMargin
293+
| org.example:version (compile) 1.0 -> 2.0""".stripMargin
255294

256295
val actual = LockFileMatches
257296
.withConfigurationsChanged(Seq("test1"), Seq("test2", "test3"))

0 commit comments

Comments
 (0)