rspec-system 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +21 -1
- data/README.md +10 -11
- data/lib/rspec-system/helpers.rb +2 -6
- data/lib/rspec-system/prefab.rb +3 -1
- data/lib/rspec-system/rake_task.rb +0 -5
- data/lib/rspec-system/util.rb +13 -0
- data/rspec-system.gemspec +1 -1
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
2.1.0
|
2
|
+
=====
|
3
|
+
|
4
|
+
This is a small feature release, that includes the ability for custom prefabs to be 'merged' with the inbuilt ones. This is a convenience, so that one can override the box definitions without having to also provide new Fact details (for example).
|
5
|
+
|
6
|
+
#### Detailed Changes
|
7
|
+
|
8
|
+
* Bundle exec should be used (Hunter Haugen)
|
9
|
+
* Align bundler instructions based on @hunner previous patch (Ken Barber)
|
10
|
+
* Perform deep merge of custom prefabs (Dominic Cleal)
|
11
|
+
* Fix yard doc error for Helpers (Ken Barber)
|
12
|
+
|
13
|
+
-------------------------------
|
14
|
+
|
1
15
|
2.0.0
|
2
16
|
=====
|
3
17
|
|
@@ -44,7 +58,13 @@ As part of this release, we have also removed some prior deprecations:
|
|
44
58
|
|
45
59
|
Before upgrading, we suggest you upgrade to 1.7.0, paying heed to any deprecation warnings before upgrading to 2.0.0.
|
46
60
|
|
47
|
-
####
|
61
|
+
#### Detailed Changes
|
62
|
+
|
63
|
+
* Fix yarddoc for rcp (Ken Barber)
|
64
|
+
* Remove deprecations in prep for 2 (Ken Barber)
|
65
|
+
* More sugar through lazy helper object (Ken Barber)
|
66
|
+
* Fix 2 yard errors (Ken Barber)
|
67
|
+
* Minor improvements to tests and apidocs (Ken Barber)
|
48
68
|
|
49
69
|
-------------------------------
|
50
70
|
|
data/README.md
CHANGED
@@ -20,9 +20,9 @@ However it is usually recommended to include it in your `Gemfile` and let bundle
|
|
20
20
|
|
21
21
|
Then installing with:
|
22
22
|
|
23
|
-
bundle install --path vendor
|
23
|
+
bundle install --path vendor/bundle
|
24
24
|
|
25
|
-
If
|
25
|
+
If you're using git, add `.rspec_system` to your project's `.gitignore` file. This is the default location for files created by rspec-system.
|
26
26
|
|
27
27
|
### Writing tests
|
28
28
|
|
@@ -92,7 +92,7 @@ The file must adhere to the Kwalify schema supplied in `resources/kwalify-schema
|
|
92
92
|
* `sets`: Each set contains a series of nodes, and is given a unique name. You can create sets with only 1 node if you like.
|
93
93
|
* `sets -> [setname] -> nodes`: Node definitions for a set. Each node needs a unique name so you can address each one individualy if you like.
|
94
94
|
* `sets -> [setname] -> nodes -> [name] -> prefab`: This relates to the prefabricated node template you wish to use. Currently this is the only way to launch a node. Look in `resources/prefabs.yml` for more details.
|
95
|
-
* `default_set`: this is the default set to run if none are provided with `rake spec:system`. This should be the most common platform normally.
|
95
|
+
* `default_set`: this is the default set to run if none are provided with `bundle exec rake spec:system`. This should be the most common platform normally.
|
96
96
|
|
97
97
|
### Prefabs
|
98
98
|
|
@@ -162,7 +162,7 @@ Make sure you have already installed:
|
|
162
162
|
|
163
163
|
Once these are ready, you can Run the system tests with:
|
164
164
|
|
165
|
-
rake spec:system
|
165
|
+
bundle exec rake spec:system
|
166
166
|
|
167
167
|
The VM's should be downloaded from the internet, started and tests should run.
|
168
168
|
|
@@ -175,7 +175,7 @@ Instead of switches, we use a number of environment variables to modify the beha
|
|
175
175
|
|
176
176
|
So if you wanted to run an alternate nodeset you could use:
|
177
177
|
|
178
|
-
RSPEC_SET=fedora18 rake spec:system
|
178
|
+
RSPEC_SET=fedora18 bundle exec rake spec:system
|
179
179
|
|
180
180
|
In Jenkins you should be able to use RSPEC\_SET in a test matrix, thus obtaining quite a nice integration and visual display of nodesets in Jenkins.
|
181
181
|
|
@@ -203,7 +203,7 @@ This provider has a lot more options for setup, in the form of environment varia
|
|
203
203
|
|
204
204
|
Set these variables, and run the usual rake command:
|
205
205
|
|
206
|
-
rake spec:system
|
206
|
+
bundle exec rake spec:system
|
207
207
|
|
208
208
|
In Jenkins, set the authentication variables above using environment variable injection. I recommend using the private environment variables feature for user & pass however so these do not get displayed in the console output. As with the vagrant provider however, turn RSPEC\_SET into a test matrix, containing all the sets you want to test against.
|
209
209
|
|
@@ -269,10 +269,9 @@ The setup for a job is basically:
|
|
269
269
|
set +e
|
270
270
|
|
271
271
|
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
272
|
-
rvm use ruby-2.0.0
|
273
|
-
|
274
|
-
bundle
|
275
|
-
rake spec:system
|
272
|
+
rvm use ruby-2.0.0
|
273
|
+
bundle install --path vendor/bundle
|
274
|
+
bundle exec rake spec:system
|
276
275
|
|
277
276
|
I went quite complex and had Github pull request integration working with this, and quite a few other nice features. If you need help setting it up get in touch.
|
278
277
|
|
@@ -297,7 +296,7 @@ The setup for a job is basically:
|
|
297
296
|
set +e
|
298
297
|
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
299
298
|
rvm use ruby-2.0.0
|
300
|
-
bundle install --vendor
|
299
|
+
bundle install --path vendor/bundle
|
301
300
|
bundle exec rake spec:system
|
302
301
|
|
303
302
|
Basically the results were quite nice, as apposed to the 'vagrant' provider I was able to achieve running parallel jobs using my matrix setup.
|
data/lib/rspec-system/helpers.rb
CHANGED
@@ -57,8 +57,6 @@ require 'rspec-system/helpers/rcp'
|
|
57
57
|
module RSpecSystem::Helpers
|
58
58
|
# @!group Actions
|
59
59
|
|
60
|
-
# @!macro shell_method
|
61
|
-
|
62
60
|
# Runs a shell command on a test host.
|
63
61
|
#
|
64
62
|
# When invoked as a block a result hash is yielded to the block as a
|
@@ -73,9 +71,7 @@ module RSpecSystem::Helpers
|
|
73
71
|
# node provider, however this abstraction should mean you shouldn't need
|
74
72
|
# to worry about that.
|
75
73
|
#
|
76
|
-
# @
|
77
|
-
# @api public
|
78
|
-
# @overload $0(options)
|
74
|
+
# @overload shell(options)
|
79
75
|
# @param options [Hash] options for command execution
|
80
76
|
# @option options [String] :command command to execute. Mandatory.
|
81
77
|
# @option options [String] :c alias for :command
|
@@ -83,7 +79,7 @@ module RSpecSystem::Helpers
|
|
83
79
|
# default in your YAML file, otherwise if there is only one node it uses
|
84
80
|
# that) specifies node to execute command on.
|
85
81
|
# @option options [RSpecSystem::Node] :n alias for :node
|
86
|
-
# @overload
|
82
|
+
# @overload shell(command)
|
87
83
|
# @param command [String] command to execute
|
88
84
|
# @yield [result] yields result when called as a block
|
89
85
|
# @yieldparam result [RSpecSystem::Helpers::Shell] result of run
|
data/lib/rspec-system/prefab.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module RSpecSystem
|
2
2
|
# This object represents a prefab definition from the prefabs.yml file
|
3
3
|
class Prefab
|
4
|
+
extend RSpecSystem::Util
|
5
|
+
|
4
6
|
attr_reader :name
|
5
7
|
attr_reader :description
|
6
8
|
attr_reader :facts
|
@@ -15,7 +17,7 @@ module RSpecSystem
|
|
15
17
|
end
|
16
18
|
|
17
19
|
prefabs = YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'resources', 'prefabs.yml'))
|
18
|
-
|
20
|
+
deep_merge!(prefabs, custom_prefabs)
|
19
21
|
raise "No such prefab" unless pf = prefabs[name]
|
20
22
|
|
21
23
|
RSpecSystem::Prefab.new(
|
data/lib/rspec-system/util.rb
CHANGED
@@ -23,4 +23,17 @@ module RSpecSystem::Util
|
|
23
23
|
|
24
24
|
return str
|
25
25
|
end
|
26
|
+
|
27
|
+
# This is based on the Hash#deep_merge! method from activesupport
|
28
|
+
#
|
29
|
+
# @param dest_hash [Hash] hash to save merged values into
|
30
|
+
# @param other_hash [Hash] hash to merge values from
|
31
|
+
# @return [Hash] dest_hash
|
32
|
+
def deep_merge!(dest_hash, other_hash)
|
33
|
+
other_hash.each_pair do |k,v|
|
34
|
+
tv = dest_hash[k]
|
35
|
+
dest_hash[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? deep_merge!(tv.dup, v) : v
|
36
|
+
end
|
37
|
+
dest_hash
|
38
|
+
end
|
26
39
|
end
|
data/rspec-system.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-system
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|