summaryrefslogtreecommitdiff
path: root/crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala
diff options
context:
space:
mode:
Diffstat (limited to 'crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala')
-rw-r--r--crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala55
1 files changed, 55 insertions, 0 deletions
diff --git a/crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala b/crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala
new file mode 100644
index 0000000..9419804
--- /dev/null
+++ b/crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala
@@ -0,0 +1,55 @@
+package io.crashbox.ci
+package build
+
+import java.io.{ BufferedOutputStream, ByteArrayOutputStream, File }
+import java.nio.file.Files
+import java.net.URL
+import org.eclipse.jgit.util.Paths
+import scala.concurrent.duration._
+import scala.concurrent.Await
+import org.scalatest._
+
+class ShellBuildersSpec extends FlatSpec with Matchers with ShellBuilders {
+
+ val Timeout = 10.seconds
+
+ def runScript(script: String): (Int, String, String) = {
+ val stdout = new ByteArrayOutputStream(4096)
+ val stderr = new ByteArrayOutputStream(4096)
+
+ val result = TestUtil.withTempDir{ dir =>
+ val exec = new File(dir, "crashbox")
+ exec.createNewFile()
+ Files.write(exec.toPath, script.getBytes)
+ exec.setExecutable(true)
+
+ Await.result(build(dir, stdout, stderr), Timeout)
+ }
+ stdout.close()
+ stderr.close()
+
+ (result, new String(stdout.toByteArray(), "utf-8"), new String(stderr.toByteArray(), "utf-8"))
+ }
+
+ "ShellBuilders" should "run a shell script" in {
+ val script = """|#!/bin/sh
+ |echo "hello world"
+ |echo "foo" >&2
+ |""".stripMargin
+ val (res, stdout, stderr) = runScript(script: String)
+
+ assert(res == 0)
+ assert(stdout == "hello world\n")
+ assert(stderr == "foo\n")
+ }
+
+ it should "report a failed script" in {
+ val script = """|#!/bin/sh
+ |exit 1
+ |""".stripMargin
+ val (res, _, _) = runScript(script: String)
+
+ assert(res == 1)
+ }
+
+}