Sha256: 6d6e6f2c6eb5dce1a3803e56ac53129808e2d48a41126a22437a5c7c4e0e50f3
Contents?: true
Size: 1.54 KB
Versions: 5
Compression:
Stored size: 1.54 KB
Contents
require 'bait' require 'bait/build' require 'git' require 'pty' module Bait class Tester attr_reader :passed def initialize build @build = build end def bait_dir File.join(clone_path, ".bait") end def script File.join(bait_dir, "test.sh") end def test! begin begin PTY.spawn(script) do |r, w, pid| r.each { |line| @build.output << line } @build.passed = PTY.check(pid).exitstatus == 0 end rescue PTY::ChildExited => e @build.output << e @build.passed = false end @build.tested = true rescue Errno::ENOENT => ex @build.output << "A test script was expected but missing.\nError: #{ex.message}" ensure @build.save end end def clone_path File.join(sandbox_directory, @build.name) end def clone! unless cloned? begin Git.clone(@build.clone_url, @build.name, :path => sandbox_directory) rescue => ex msg = "Failed to clone #{@build.clone_url}" puts msg @build.stderr = "#{msg}\n\n#{ex.message}\n\n#{ex.backtrace}" @build.save end end end def cloned? Dir.exists? File.join(clone_path, ".git/") end def cleanup! FileUtils.rm_rf sandbox_directory end def sandbox_directory @sandbox_directory ||= begin dir = File.join Bait.storage_dir, "build_tester", @build.id FileUtils.mkdir_p(dir) && dir end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
bait-0.3.2 | lib/bait/tester.rb |
bait-0.3.1 | lib/bait/tester.rb |
bait-0.3.0 | lib/bait/tester.rb |
bait-0.2.1 | lib/bait/tester.rb |
bait-0.2.0 | lib/bait/tester.rb |