From 24d97aa10410e7d571a8a5aef8a74ba059f7f7dd Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 16 Jul 2017 18:48:28 -0400 Subject: [PATCH] Fixes Tracked.inputChanged Tracked.inputChanged stores and reads hash correctly. Fixes #96 --- .../src/main/scala/sbt/util/Tracked.scala | 14 +++++++++----- .../src/test/scala/sbt/util/TrackedSpec.scala | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/util-tracking/src/main/scala/sbt/util/Tracked.scala b/util-tracking/src/main/scala/sbt/util/Tracked.scala index 66e84e8fb..823e9bde9 100644 --- a/util-tracking/src/main/scala/sbt/util/Tracked.scala +++ b/util-tracking/src/main/scala/sbt/util/Tracked.scala @@ -96,16 +96,20 @@ object Tracked { private final class CacheHelp[I: JsonFormat](val sc: SingletonCache[Long]) { import CacheImplicits.implicitHashWriter + import CacheImplicits.LongJsonFormat def save(store: CacheStore, value: I): Unit = { - store.write(value) + Hasher.hash(value) match { + case Success(keyHash) => store.write[Long](keyHash.toLong) + case Failure(e) => () + } } def changed(store: CacheStore, value: I): Boolean = - Try { store.read[I] } match { - case Success(prev) => + Try { store.read[Long] } match { + case Success(prev: Long) => Hasher.hash(value) match { - case Success(keyHash) => keyHash.toLong != prev - case Failure(_) => true + case Success(keyHash: Int) => keyHash.toLong != prev + case Failure(_) => true } case Failure(_) => true } diff --git a/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala b/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala index 90513cad6..4fa480ca7 100644 --- a/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala +++ b/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala @@ -51,10 +51,10 @@ class TrackedSpec extends UnitSpec { "inputChanged" should "detect that the input has not changed" in { withStore { store => - val input0 = 0 + val input0 = "foo" val res0 = - Tracked.inputChanged[Int, Int](store) { + Tracked.inputChanged[String, String](store) { case (true, in) => assert(in === input0) in @@ -64,7 +64,7 @@ class TrackedSpec extends UnitSpec { assert(res0 === input0) val res1 = - Tracked.inputChanged[Int, Int](store) { + Tracked.inputChanged[String, String](store) { case (true, in) => fail() case (false, in) =>