diff options
author | Jakob Odersky <jakob@odersky.com> | 2017-03-02 23:35:46 -0800 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2017-03-02 23:35:46 -0800 |
commit | f9cc5e3f8478eb9f19cca093b8019e579f9c87e6 (patch) | |
tree | 5834850e91478ceb3dd25d9d390f9f4555e0523e /crashbox-worker/src/test/scala/io/crashbox/ci/build/ShellBuildersSpec.scala | |
parent | c4ff7eaf274eb4e2cfacdabeb65bfc43a89fdd3a (diff) | |
download | crashbox-ci-f9cc5e3f8478eb9f19cca093b8019e579f9c87e6.tar.gz crashbox-ci-f9cc5e3f8478eb9f19cca093b8019e579f9c87e6.tar.bz2 crashbox-ci-f9cc5e3f8478eb9f19cca093b8019e579f9c87e6.zip |
Implement basic worker functionality
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.scala | 55 |
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) + } + +} |