Sha256: 1028fc412145d458a11f786a103b7d8bedb49e7b07a4551ec306677dd73dd9b4

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

require 'serverspec'
require 'pathname'
require 'net/ssh'

include SpecInfra::Helper::Ssh
include SpecInfra::Helper::DetectOS

def run(cmd)
  unless(system(cmd, out: $stdout, err: :out))
    puts 'Failed to setup vagrant machine'
    exit 1
  end
end

RSpec.configure do |c|
  c.before :suite do
    c.host  = ENV['TARGET_HOST']
    c.ssh.close if c.ssh
    options = Net::SSH::Config.for(c.host)
    if(!ENV['LOCAL'])
	run("vagrant destroy #{c.host} -f")
	run("vagrant up #{c.host}")
      config = `vagrant ssh-config #{c.host}`
      sshhost =  sshuser = ''
      if config != ''
        config.each_line do |line|
          if match = /HostName (.*)/.match(line)
            sshhost = match[1]
          elsif  match = /User (.*)/.match(line)
            sshuser = match[1]
          elsif match = /IdentityFile (.*)/.match(line)
            options[:keys] =  [match[1].gsub(/"/,'')]
          elsif match = /Port (.*)/.match(line)
            options[:port] = match[1]
          end
        end
      end
    else
      sshhost = 'localhost' 
      sshuser = 'vagrant' 
    end
    c.ssh = Net::SSH.start(sshhost, sshuser, options)
  end

  c.after :suite do
    c.host  = ENV['TARGET_HOST']
    run("vagrant destroy #{c.host} -f")
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
opskeleton-0.7.3 templates/parent/spec/spec_helper.rb
opskeleton-0.7.2 templates/parent/spec/spec_helper.rb