Sha256: a8e24feb2e0418390c7e062e4c5dd3345659a4950c5f1fe5cc83bc93f49f1d25

Contents?: true

Size: 1.66 KB

Versions: 3

Compression:

Stored size: 1.66 KB

Contents

require "methadone/test/base_integration_test"
require "clean_test/test_case"

class BaseIntegrationTest < Methadone::BaseIntegrationTest
  include Clean::Test::GivenWhenThen
  include Clean::Test::TestThat
  include Clean::Test::Any
  def setup
    root = (Pathname(__FILE__).dirname / ".." / "..").expand_path
    ENV["PATH"] = (root / "bin").to_s + File::PATH_SEPARATOR + ENV["PATH"]
    ENV["RUBYLIB"] = (root / "lib").to_s + File::PATH_SEPARATOR + ENV["RUBYLIB"]
    @pwd = pwd
    @tmdir = Dir.mktmpdir
    chdir @tmdir
  end

  def teardown
    chdir @pwd
    rm_rf @tmdir
  end

private

  def methadone(args, allow_failure: false)
    command = "methadone #{args}"
    stdout, stderr, status = Open3.capture3(command)
    if !status.success? && !allow_failure
      raise "'#{command}' failed: #{status.inspect}\n\nSTDOUT:\n\n#{stdout}\n\nSTDERR:\n\n#{stderr}\nEND"
    end
    [ stdout, stderr, status ]
  end

  def run_app(gemname,args="")
    run_in_gem(gemname, "bin/#{gemname}", args)
  end

  # Runs rake inside the app for an integration test, returning stdout and stderr as strings
  def rake(gemname,args="")
    run_in_gem(gemname, "rake", args)
  end

  # Runs an arbitrary command inside the gem, returning stdout and stderr as strings.
  def run_in_gem(gemname, command, args)
    stdout = nil
    stderr = nil
    original_rubylib = ENV["RUBYLIB"]
    chdir gemname do
      ENV["RUBYLIB"] = "lib" + File::PATH_SEPARATOR + original_rubylib
      stdout, stderr, result = Open3.capture3("#{command} #{args}")
      unless result.success?
        raise "#{stdout}\n#{stderr}"
      end
    end
    [ stdout, stderr ]
  ensure
    ENV["RUBYLIB"] = original_rubylib
  end


end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
methadone-2.0.2 test/integration/base_integration_test.rb
methadone-2.0.1 test/integration/base_integration_test.rb
methadone-2.0.0 test/integration/base_integration_test.rb