Sha256: c7efa1559e5c91bcca9adecb74e820220c82832730edadd81553b684d140f9de

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

require 'rspec'
require 'webmock/rspec'
require 'tmpdir'
require 'open3'

require 'pandler'
require 'pandler/cli'

def capture_stdout
  old_stdout = $stdout.dup
  rd, wr = IO.method(:pipe).arity.zero? ? IO.pipe : IO.pipe("BINARY")
  $stdout = wr
  yield
  wr.close
  rd.read
ensure
  $stdout = old_stdout
end

class Pandler::Chroot
  def chroot_run_cmd(*cmd)
    chroot_cmd = ["chroot", root_dir] + cmd
    Open3.popen3(*chroot_cmd) do |stdin, stdout, stderr|
      stdin.close_write
      $stdout.puts(stdout.read)
      $stderr.puts(stdout.read)
    end
  end
end

module PandleHelper
  def self.included(example_group)
    example_group.extend self
  end

  def pandle(args)
    capture_stdout do
      begin
        Pandler::CLI.start(args.split(" "), { :mock => @mock })
      rescue SystemExit
      end
    end
  end
end

module TempDirHelper
  def self.extended(example_group)
    example_group.use_tempdir(example_group)
  end

  def self.included(example_group)
    example_group.extend self
  end

  def use_tempdir(describe_block)
    describe_block.before :all do
      @old_pwd = Dir.pwd
      @root_dir = Dir.mktmpdir
      Dir.chdir @root_dir
    end

    describe_block.after :all do
      FileUtils.remove_entry_secure @root_dir
      Dir.chdir @old_pwd
    end
  end

  def mkdir(dirpath)
    path = "#{@root_dir}/#{dirpath}"
    Dir.mkdir path unless File.exists? path
    path
  end

  def write_file(filepath, content)
    path = "#{@root_dir}/#{filepath}"
    open(path, "w") do |f|
      f.puts content
    end
    path
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pandler-0.0.1 spec/spec_helper.rb