rspec-system 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/.ruby-version +1 -0
- data/Gemfile +3 -0
- data/examples/spec/.gitignore +1 -0
- data/examples/spec/system/distros/centos-58-x64_spec.rb +14 -0
- data/examples/spec/system/distros/debian-606-x64_spec.rb +14 -0
- data/examples/spec/system/tests/test1.rb +13 -0
- data/examples/spec/system/tests/test2.rb +11 -0
- data/examples/spec/system_spec_helper.rb +7 -0
- data/examples/spec/systemtmp/rspec_system_vagrant/centos-58-x64/.vagrant +1 -0
- data/examples/spec/systemtmp/rspec_system_vagrant/centos-58-x64/Vagrantfile +6 -0
- data/lib/rspec-system/helpers.rb +5 -0
- data/lib/rspec-system/node_set/vagrant.rb +88 -0
- data/lib/rspec-system/node_set.rb +35 -0
- data/lib/rspec-system/shared_contexts.rb +44 -0
- data/lib/rspec-system.rb +14 -0
- data/rspec-system.gemspec +23 -0
- metadata +126 -0
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p362@rspec-system-vagrant
|
data/Gemfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
tmp
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'system_spec_helper'
|
2
|
+
|
3
|
+
shared_examples "test1", :scope => :all do
|
4
|
+
it 'run test1 - part1' do
|
5
|
+
puts 'test1 - part1'
|
6
|
+
run_on('main', "cat /etc/resolv.conf")
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'run test1 - part2' do
|
10
|
+
puts 'test1 - part2'
|
11
|
+
run_on('main', "cat /etc/issue")
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"active":{"main":"890d1d49-5bac-4373-99ff-7b8b8d144c38"}}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
module RSpecSystem
|
5
|
+
class NodeSet::Vagrant
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
@vagrant_path = File.expand_path(File.join(RSpec.configuration.rspec_system_vagrant_projects, @config[:id].to_s))
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup
|
12
|
+
puts "Setting up vagrant!"
|
13
|
+
create_virtualboxfile
|
14
|
+
|
15
|
+
puts "prepping vagrant environment"
|
16
|
+
@vagrant_env = Vagrant::Environment.new(:cwd => @vagrant_path)
|
17
|
+
puts "running vagrant up"
|
18
|
+
@vagrant_env.cli("up")
|
19
|
+
|
20
|
+
snapshot
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
puts "running vagrant down"
|
25
|
+
@vagrant_env.cli("suspend")
|
26
|
+
end
|
27
|
+
|
28
|
+
def snapshot
|
29
|
+
puts "turning on sandbox"
|
30
|
+
Dir.chdir(@vagrant_path) do
|
31
|
+
@vagrant_env.cli("sandbox", "on")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def rollback
|
36
|
+
puts "rolling back vagrant box"
|
37
|
+
Dir.chdir(@vagrant_path) do
|
38
|
+
@vagrant_env.cli("sandbox", "rollback")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def run(dest, command)
|
43
|
+
puts "Running #{command} on #{dest}"
|
44
|
+
result = ""
|
45
|
+
@vagrant_env.vms[dest.to_sym].channel.sudo("cd /tmp && #{command}") do |ch, data|
|
46
|
+
result << data
|
47
|
+
puts "Got data: #{data}"
|
48
|
+
end
|
49
|
+
result
|
50
|
+
end
|
51
|
+
|
52
|
+
# @api private
|
53
|
+
def create_virtualboxfile
|
54
|
+
puts "Creating vagrant file here: #{@vagrant_path}"
|
55
|
+
FileUtils.mkdir_p(@vagrant_path)
|
56
|
+
File.open(File.expand_path(File.join(@vagrant_path, "Vagrantfile")), 'w') do |f|
|
57
|
+
f.write('Vagrant::Config.run do |c|')
|
58
|
+
@config[:nodes].each do |k,v|
|
59
|
+
puts "prepping #{k}"
|
60
|
+
f.write(<<-EOS)
|
61
|
+
c.vm.define '#{k}' do |vmconf|
|
62
|
+
#{setup_prefabs(v[:prefab])}
|
63
|
+
end
|
64
|
+
EOS
|
65
|
+
end
|
66
|
+
f.write('end')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# @api private
|
71
|
+
def setup_prefabs(prefab)
|
72
|
+
case prefab
|
73
|
+
when 'centos-58-x64'
|
74
|
+
<<-EOS
|
75
|
+
vmconf.vm.box = 'centos-58-x64'
|
76
|
+
vmconf.vm.box_url = 'http://puppet-vagrant-boxes.puppetlabs.com/centos-58-x64.box'
|
77
|
+
EOS
|
78
|
+
when 'debian-606-x64'
|
79
|
+
<<-EOS
|
80
|
+
vmconf.vm.box = 'debian-606-x64'
|
81
|
+
vmconf.vm.box_url = 'http://puppet-vagrant-boxes.puppetlabs.com/debian-606-x64.box'
|
82
|
+
EOS
|
83
|
+
else
|
84
|
+
raise 'Unknown prefab'
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RSpecSystem
|
2
|
+
class NodeSet
|
3
|
+
attr_reader :config, :virtual_env
|
4
|
+
|
5
|
+
def initialize(config, virtual_env)
|
6
|
+
@config = config
|
7
|
+
@virtual_env = virtual_env
|
8
|
+
|
9
|
+
@virtual_driver = case(@virtual_env)
|
10
|
+
when 'vagrant'
|
11
|
+
RSpecSystem::NodeSet::Vagrant.new(@config)
|
12
|
+
else
|
13
|
+
raise "Unsupported virtual environment #{@virtual_env}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def setup
|
18
|
+
@virtual_driver.setup
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
@virtual_driver.teardown
|
23
|
+
end
|
24
|
+
|
25
|
+
def rollback
|
26
|
+
@virtual_driver.rollback
|
27
|
+
end
|
28
|
+
|
29
|
+
def run(dest, command)
|
30
|
+
@virtual_driver.run(dest,command)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
require 'rspec-system/node_set/vagrant'
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
shared_context "shared stuff", :scope => :all do
|
4
|
+
# Grab the type of virtual environment we wish to run these tests in
|
5
|
+
let(:rspec_virtual_env) do
|
6
|
+
ENV["RSPEC_VIRTUAL_ENV"] || 'vagrant'
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:rspec_system_node_set) do
|
10
|
+
RSpecSystem::NodeSet.new(rspec_system_config, rspec_virtual_env)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:rspec_system_logger) do
|
14
|
+
Logger::DEBUG
|
15
|
+
end
|
16
|
+
|
17
|
+
before :all do
|
18
|
+
require 'pp'
|
19
|
+
|
20
|
+
puts "Configuration for now is:"
|
21
|
+
puts rspec_system_node_set.config.pretty_inspect
|
22
|
+
puts "Virtual Environment is: #{rspec_system_node_set.virtual_env}"
|
23
|
+
|
24
|
+
rspec_system_node_set.setup
|
25
|
+
|
26
|
+
puts 'before all: setup vms'
|
27
|
+
puts 'before all: snapshot vms'
|
28
|
+
end
|
29
|
+
|
30
|
+
before :each do
|
31
|
+
puts 'before each: roll back vms'
|
32
|
+
rspec_system_node_set.rollback
|
33
|
+
end
|
34
|
+
|
35
|
+
after :each do
|
36
|
+
puts 'after each: roll back vms'
|
37
|
+
rspec_system_node_set.rollback
|
38
|
+
end
|
39
|
+
|
40
|
+
after :all do
|
41
|
+
puts 'after all: shut down all vms'
|
42
|
+
rspec_system_node_set.teardown
|
43
|
+
end
|
44
|
+
end
|
data/lib/rspec-system.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
|
3
|
+
module RSpecSystem; end
|
4
|
+
|
5
|
+
require 'rspec-system/helpers'
|
6
|
+
require 'rspec-system/node_set'
|
7
|
+
require 'rspec-system/shared_contexts'
|
8
|
+
|
9
|
+
RSpec::configure do |c|
|
10
|
+
c.include RSpecSystem::Helpers
|
11
|
+
|
12
|
+
# This provides a path to save vagrant files
|
13
|
+
c.add_setting :rspec_system_vagrant_projects
|
14
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
# Metadata
|
4
|
+
s.name = "rspec-system"
|
5
|
+
s.version = "0.0.1"
|
6
|
+
s.authors = ["Ken Barber"]
|
7
|
+
s.email = ["ken@bob.sh"]
|
8
|
+
s.homepage = "https://github.com/kbarber/rspec-system"
|
9
|
+
s.summary = "System testing with vagrant"
|
10
|
+
|
11
|
+
# Manifest
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.test_files = `git ls-files -- {test,spec,features}/*_spec.rb`.split("\n")
|
14
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
|
17
|
+
# Dependencies
|
18
|
+
s.required_ruby_version = '>= 1.9.3'
|
19
|
+
s.add_runtime_dependency "vagrant"
|
20
|
+
s.add_runtime_dependency "sahara"
|
21
|
+
s.add_runtime_dependency "rspec"
|
22
|
+
s.add_development_dependency "simplecov"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rspec-system
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ken Barber
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: vagrant
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: sahara
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: simplecov
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description:
|
79
|
+
email:
|
80
|
+
- ken@bob.sh
|
81
|
+
executables: []
|
82
|
+
extensions: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
files:
|
85
|
+
- .gitignore
|
86
|
+
- .ruby-version
|
87
|
+
- Gemfile
|
88
|
+
- examples/spec/.gitignore
|
89
|
+
- examples/spec/system/distros/centos-58-x64_spec.rb
|
90
|
+
- examples/spec/system/distros/debian-606-x64_spec.rb
|
91
|
+
- examples/spec/system/tests/test1.rb
|
92
|
+
- examples/spec/system/tests/test2.rb
|
93
|
+
- examples/spec/system_spec_helper.rb
|
94
|
+
- examples/spec/systemtmp/rspec_system_vagrant/centos-58-x64/.vagrant
|
95
|
+
- examples/spec/systemtmp/rspec_system_vagrant/centos-58-x64/Vagrantfile
|
96
|
+
- lib/rspec-system.rb
|
97
|
+
- lib/rspec-system/helpers.rb
|
98
|
+
- lib/rspec-system/node_set.rb
|
99
|
+
- lib/rspec-system/node_set/vagrant.rb
|
100
|
+
- lib/rspec-system/shared_contexts.rb
|
101
|
+
- rspec-system.gemspec
|
102
|
+
homepage: https://github.com/kbarber/rspec-system
|
103
|
+
licenses: []
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 1.9.3
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirements: []
|
121
|
+
rubyforge_project:
|
122
|
+
rubygems_version: 1.8.24
|
123
|
+
signing_key:
|
124
|
+
specification_version: 3
|
125
|
+
summary: System testing with vagrant
|
126
|
+
test_files: []
|