From c462e6bd0ab9042c79f4236a915971b4b3eb8cd5 Mon Sep 17 00:00:00 2001 From: "David Y. Ross" Date: Wed, 23 Jan 2013 12:12:45 -0800 Subject: [PATCH] enumeratee.take(0) should not trigger any callbacks --- .../scala/play/api/libs/iteratee/Enumeratee.scala | 2 +- .../play/api/libs/iteratee/EnumerateesSpec.scala | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/framework/src/iteratees/src/main/scala/play/api/libs/iteratee/Enumeratee.scala b/framework/src/iteratees/src/main/scala/play/api/libs/iteratee/Enumeratee.scala index a184ffe7826..d8a1702062c 100644 --- a/framework/src/iteratees/src/main/scala/play/api/libs/iteratee/Enumeratee.scala +++ b/framework/src/iteratees/src/main/scala/play/api/libs/iteratee/Enumeratee.scala @@ -291,7 +291,7 @@ object Enumeratee { case in => Done(Cont(k), in) } - def continue[A](k: K[E, A]) = Cont(step(count)(k)) + def continue[A](k: K[E, A]) = if (count <= 0) Done(Cont(k), Input.EOF) else Cont(step(count)(k)) } diff --git a/framework/src/iteratees/src/test/scala/play/api/libs/iteratee/EnumerateesSpec.scala b/framework/src/iteratees/src/test/scala/play/api/libs/iteratee/EnumerateesSpec.scala index 55e9c7439a1..17b465b5d5d 100644 --- a/framework/src/iteratees/src/test/scala/play/api/libs/iteratee/EnumerateesSpec.scala +++ b/framework/src/iteratees/src/test/scala/play/api/libs/iteratee/EnumerateesSpec.scala @@ -50,6 +50,17 @@ object EnumerateesSpec extends Specification { } + "not trigger callback on take 0" in { + var triggered = false + val enumerator = Enumerator.fromCallback { + () => + triggered = true + Future(Some(1)) + } + Await.result(enumerator &> Enumeratee.take(0) |>>> Iteratee.fold(0)(_ + _), Duration.Inf) must equalTo(0) + triggered must beFalse + } + } "Enumeratee.takeWhile" should {