From 78c76a37f666ddb591be1b59f7c57a753797baad Mon Sep 17 00:00:00 2001 From: pablf Date: Tue, 20 Aug 2024 23:40:54 +0200 Subject: [PATCH 1/6] fix flaky tests --- .../scala/zio/process/ZIOProcessBaseSpec.scala | 8 ++++++++ .../scala/zio/process/ZIOProcessBaseSpec.scala | 8 ++++++++ .../scala/zio/process/ZIOProcessBaseSpec.scala | 0 .../main/scala/zio/process/ProcessStream.scala | 16 +++++++++++----- .../scala/zio/process/PipedCommandSpec.scala | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala create mode 100644 zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala rename zio-process/{shared => native}/src/test/scala/zio/process/ZIOProcessBaseSpec.scala (100%) diff --git a/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala b/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala new file mode 100644 index 00000000..f0939f72 --- /dev/null +++ b/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala @@ -0,0 +1,8 @@ +package zio.process + +import zio.test._ +import zio.{ durationInt, Chunk } + +trait ZIOProcessBaseSpec extends ZIOSpecDefault { + override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.flaky) +} diff --git a/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala b/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala new file mode 100644 index 00000000..f0939f72 --- /dev/null +++ b/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala @@ -0,0 +1,8 @@ +package zio.process + +import zio.test._ +import zio.{ durationInt, Chunk } + +trait ZIOProcessBaseSpec extends ZIOSpecDefault { + override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.flaky) +} diff --git a/zio-process/shared/src/test/scala/zio/process/ZIOProcessBaseSpec.scala b/zio-process/native/src/test/scala/zio/process/ZIOProcessBaseSpec.scala similarity index 100% rename from zio-process/shared/src/test/scala/zio/process/ZIOProcessBaseSpec.scala rename to zio-process/native/src/test/scala/zio/process/ZIOProcessBaseSpec.scala diff --git a/zio-process/shared/src/main/scala/zio/process/ProcessStream.scala b/zio-process/shared/src/main/scala/zio/process/ProcessStream.scala index 0edc7095..344367c3 100644 --- a/zio-process/shared/src/main/scala/zio/process/ProcessStream.scala +++ b/zio-process/shared/src/main/scala/zio/process/ProcessStream.scala @@ -28,10 +28,13 @@ final case class ProcessStream( private[process] val outputStream: Option[OutputStream] = None ) { - private def close: ZIO[Any, Nothing, Unit] = + private def close: ZIO[Any, CommandError, Unit] = outputStream match { case None => ZIO.unit - case Some(out) => ZIO.succeed(out.close()) + case Some(out) => + ZIO.attemptBlocking(out.close()).mapError { case e: Throwable => + CommandError.Error(e) + } } /** @@ -94,9 +97,12 @@ final case class ProcessStream( * Note: Needs Java 9 or greater. */ def string(charset: Charset): ZIO[Any, CommandError, String] = - ZIO.attemptBlockingCancelable { - new String(inputStream.readAllBytes(), charset) - }(ZIO.succeed(inputStream.close())).refineOrDie { case CommandThrowable.IOError(e) => + ZIO.scoped { + close *> ProcessPlatformSpecific.wait(inputStream) *> ZIO.attemptBlockingCancelable { + new String(inputStream.readAllBytes(), charset) + }(ZIO.succeed(inputStream.close())) + }.refineOrDie { case CommandThrowable.IOError(e) => e } + } diff --git a/zio-process/shared/src/test/scala/zio/process/PipedCommandSpec.scala b/zio-process/shared/src/test/scala/zio/process/PipedCommandSpec.scala index d54bbb84..091f7580 100644 --- a/zio-process/shared/src/test/scala/zio/process/PipedCommandSpec.scala +++ b/zio-process/shared/src/test/scala/zio/process/PipedCommandSpec.scala @@ -62,5 +62,5 @@ object PipedCommandSpec extends ZIOProcessBaseSpec { equalTo(NonEmptyChunk(false, false, true)) ) } - ) + ) @@ TestAspect.nonFlaky } From e926cc80ba8650b434ddabe33c2d45681cdfc9b9 Mon Sep 17 00:00:00 2001 From: pablf Date: Wed, 21 Aug 2024 12:55:04 +0200 Subject: [PATCH 2/6] typo --- .../js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala | 2 +- .../jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala b/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala index f0939f72..4540fcc6 100644 --- a/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala +++ b/zio-process/js/src/test/scala/zio/process/ZIOProcessBaseSpec.scala @@ -4,5 +4,5 @@ import zio.test._ import zio.{ durationInt, Chunk } trait ZIOProcessBaseSpec extends ZIOSpecDefault { - override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.flaky) + override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.nonFlaky) } diff --git a/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala b/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala index f0939f72..4540fcc6 100644 --- a/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala +++ b/zio-process/jvm/src/test/scala/zio/process/ZIOProcessBaseSpec.scala @@ -4,5 +4,5 @@ import zio.test._ import zio.{ durationInt, Chunk } trait ZIOProcessBaseSpec extends ZIOSpecDefault { - override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.flaky) + override def aspects = Chunk(TestAspect.timeout(30.seconds), TestAspect.nonFlaky) } From ef90ab5aabb781a68eda15532afa6946cdc30396 Mon Sep 17 00:00:00 2001 From: pablf Date: Wed, 21 Aug 2024 13:02:32 +0200 Subject: [PATCH 3/6] fix timeout --- .../test/scala/zio/process/CommandPlatformSpecificSpec.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala b/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala index e71ca6c8..94ff7bb3 100644 --- a/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala +++ b/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala @@ -8,7 +8,9 @@ import FilePlatformSpecific._ import java.util.Optional // TODO: Add aspects for different OSes? scala.util.Properties.isWin, etc. Also try to make this as OS agnostic as possible in the first place -object CommandPlatformSpecificSpec extends ZIOProcessBaseSpec { +object CommandPlatformSpecificSpec extends ZIOSpecDefault { + + override def aspects = Chunk(TestAspect.timeout(30.seconds)) def spec = suite("CommandSpec")( test("killTree also kills child processes") { From 4255f6ae6da091c25fab2c3d178db7a46dabad1a Mon Sep 17 00:00:00 2001 From: pablf Date: Wed, 21 Aug 2024 13:05:54 +0200 Subject: [PATCH 4/6] fix timeout --- .../test/scala/zio/process/CommandPlatformSpecificSpec.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala b/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala index 94ff7bb3..c19e7805 100644 --- a/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala +++ b/zio-process/jvm/src/test/scala/zio/process/CommandPlatformSpecificSpec.scala @@ -2,7 +2,7 @@ package zio.process import zio.stream.ZPipeline import zio.test._ -import zio.Chunk +import zio.{ durationInt, Chunk } import FilePlatformSpecific._ import java.util.Optional From 36846e81c507e4421fc7dd30e34c51951616fce7 Mon Sep 17 00:00:00 2001 From: pablf Date: Wed, 21 Aug 2024 13:08:15 +0200 Subject: [PATCH 5/6] g --- build.sbt | 2 +- project/plugins.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index b46e4a59..172549ed 100644 --- a/build.sbt +++ b/build.sbt @@ -46,7 +46,7 @@ usefulTasks := Seq( UsefulTask("testOnly *.YourSpec -- -t \"YourLabel\"", "Only runs tests with matching term").noAlias ) -val zioVersion = "2.1.6" +val zioVersion = "2.1.7" lazy val root = project diff --git a/project/plugins.sbt b/project/plugins.sbt index bf106856..30c95542 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -20,7 +20,7 @@ addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.3.10") addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.17") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.3") addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2") From d532f1f0959f930e6092020a10e68c386acc9d5d Mon Sep 17 00:00:00 2001 From: pablf Date: Wed, 21 Aug 2024 13:10:47 +0200 Subject: [PATCH 6/6] revert version --- build.sbt | 2 +- project/plugins.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 172549ed..b46e4a59 100644 --- a/build.sbt +++ b/build.sbt @@ -46,7 +46,7 @@ usefulTasks := Seq( UsefulTask("testOnly *.YourSpec -- -t \"YourLabel\"", "Only runs tests with matching term").noAlias ) -val zioVersion = "2.1.7" +val zioVersion = "2.1.6" lazy val root = project diff --git a/project/plugins.sbt b/project/plugins.sbt index 30c95542..bf106856 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -20,7 +20,7 @@ addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.3.10") addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.3") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.17") addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2")