beaker-rspec 5.3.0 → 5.4.0
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.
- checksums.yaml +8 -8
- data/HISTORY.md +63 -2
- data/README.md +153 -3
- data/lib/beaker-rspec/helpers/serverspec.rb +13 -3
- data/lib/beaker-rspec/spec_helper.rb +5 -0
- data/lib/beaker-rspec/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDYxN2NmZWJkNTMyMGNlNGNkMWI5NTcwMzQ2YzU0YzYxZjI5OTZlYw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzkxZjg3YTA1NWExYjU1OWQ5Zjg3OWU4MWRiNWY1NDNlMGY4YTE5NA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDNhYWUyNjMzZGFjOWYyODViNTJlOGQ3ZWRiN2JiZmVkM2I2YjFhYzRlNWNj
|
10
|
+
YjNhNTg3ZjM3YTdkNzM2YzdkNDQ5YzI1ZWY5OTNmYzU0Y2Q3ZWVjNTE0MjY3
|
11
|
+
OWY1YjJmOTc2N2ExODZiNjNmMzFhYTA5ZTM3Zjc1MjQzMjcwMjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Nzk0MWU5NDdhY2VkODlmOTEyZjAwOWI4NzcyMDRiYzgxZjJkMGM5ZTVmYjZi
|
14
|
+
ZGI3YjU1NjQwZjU4YTU0YzEzZTY4MTc3Y2IyMTBjN2M3MTA0ODhkZWQzMzQ2
|
15
|
+
MTQxOGVkYjQ0ZjFlM2VkZTExYzViZTUyMjVhMmFmZjIxNWQ4NGI=
|
data/HISTORY.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# default - History
|
2
2
|
## Tags
|
3
|
-
* [LATEST -
|
3
|
+
* [LATEST - 9 Jun, 2016 (a25f1e77)](#LATEST)
|
4
|
+
* [5.3.0 - 13 Oct, 2015 (2efeb932)](#5.3.0)
|
4
5
|
* [5.2.2 - 3 Sep, 2015 (69980e14)](#5.2.2)
|
5
6
|
* [5.2.1 - 27 Aug, 2015 (49c45f61)](#5.2.1)
|
6
7
|
* [5.2.0 - 15 Jul, 2015 (261dacdb)](#5.2.0)
|
@@ -23,7 +24,67 @@
|
|
23
24
|
* [beaker-rspec1.0.0 - 3 Dec, 2013 (65e89ec9)](#beaker-rspec1.0.0)
|
24
25
|
|
25
26
|
## Details
|
26
|
-
### <a name = "LATEST">LATEST -
|
27
|
+
### <a name = "LATEST">LATEST - 9 Jun, 2016 (a25f1e77)
|
28
|
+
|
29
|
+
* (GEM) update beaker-rspec version to 5.4.0 (a25f1e77)
|
30
|
+
|
31
|
+
* Merge pull request #79 from richburroughs/master (4db37886)
|
32
|
+
|
33
|
+
|
34
|
+
```
|
35
|
+
Merge pull request #79 from richburroughs/master
|
36
|
+
|
37
|
+
fixed an incomplete sentence in README.md
|
38
|
+
```
|
39
|
+
* fixed an incomplete sentence in README.md (cfd9cbd6)
|
40
|
+
|
41
|
+
* Merge pull request #77 from oskar-flores/fix-serverspec-on-non-cygwin-node (a617f7bb)
|
42
|
+
|
43
|
+
|
44
|
+
```
|
45
|
+
Merge pull request #77 from oskar-flores/fix-serverspec-on-non-cygwin-node
|
46
|
+
|
47
|
+
Add a check on windows part, to exec commands on a non cygwin environment
|
48
|
+
```
|
49
|
+
* Merge pull request #78 from DavidS/bkr-577-update-readme (563ba7e7)
|
50
|
+
|
51
|
+
|
52
|
+
```
|
53
|
+
Merge pull request #78 from DavidS/bkr-577-update-readme
|
54
|
+
|
55
|
+
(BKR-577) Update README to describe usage in detail
|
56
|
+
```
|
57
|
+
* (BKR-577) Update README to describe usage in detail (18b307a7)
|
58
|
+
|
59
|
+
* Cleaning code as per @DavidS sugestion (c0142b57)
|
60
|
+
|
61
|
+
* Add a check on windows part, to exec commads on a non cywing environment (f483b063)
|
62
|
+
|
63
|
+
* fixed up recent README changes (2771b4b1)
|
64
|
+
|
65
|
+
* Merge pull request #71 from electrical/cleanup_ctrl_c (756de678)
|
66
|
+
|
67
|
+
|
68
|
+
```
|
69
|
+
Merge pull request #71 from electrical/cleanup_ctrl_c
|
70
|
+
|
71
|
+
(BKR-345) Cleanup and quit on ctrl-c
|
72
|
+
```
|
73
|
+
* Merge pull request #76 from DavidS/document-env (b3d4f839)
|
74
|
+
|
75
|
+
|
76
|
+
```
|
77
|
+
Merge pull request #76 from DavidS/document-env
|
78
|
+
|
79
|
+
Document environment variables
|
80
|
+
```
|
81
|
+
* Document environment variables (5ab74188)
|
82
|
+
|
83
|
+
* (BKR-345) Cleanup and quit on ctrl-c (90a74317)
|
84
|
+
|
85
|
+
### <a name = "5.3.0">5.3.0 - 13 Oct, 2015 (2efeb932)
|
86
|
+
|
87
|
+
* (HISTORY) update beaker-rspec history for gem release 5.3.0 (2efeb932)
|
27
88
|
|
28
89
|
* (GEM) update beaker-rspec version to 5.3.0 (2ea88c14)
|
29
90
|
|
data/README.md
CHANGED
@@ -1,4 +1,154 @@
|
|
1
|
-
beaker-rspec
|
2
|
-
=======================
|
1
|
+
#beaker-rspec
|
3
2
|
|
4
|
-
|
3
|
+
beaker-rspec is a bridge between the puppet acceptance test harness ([beaker](https://github.com/puppetlabs/beaker)) and [rspec](https://github.com/rspec/rspec). It also integrates [serverspec](http://serverspec.org/).
|
4
|
+
|
5
|
+
#Typical Workflow
|
6
|
+
|
7
|
+
Beaker does setup and provision all nodes from your nodeset on each test run, and cleans up the VMs after use. During development on a module it can be very handy to keep the VMs available for inspection or reuse. Set `BEAKER_destroy=no` do skip the cleanup and `BEAKER_provision=no` once the VMs are created.
|
8
|
+
|
9
|
+
1. Run tests with `BEAKER_destroy=no`, no setting for `BEAKER_provision`
|
10
|
+
* beaker-rspec will use spec/acceptance/nodesets/default.yml node file
|
11
|
+
* boxes will be newly provisioned
|
12
|
+
* boxes will be preserved post-testing
|
13
|
+
* Run tests with `BEAKER_destroy=no` and `BEAKER_provision=no`
|
14
|
+
* beaker-rspec will use spec/acceptance/nodesets/default.yml node file
|
15
|
+
* boxes will be re-used from previous run
|
16
|
+
* boxes will be preserved post-testing
|
17
|
+
* Nodes become corrupted with too many test runs/bad data and need to be refreshed then set `BEAKER_provision=yes`
|
18
|
+
* Testing is complete and you want to clean up, run once more with `BEAKER_destroy` unset
|
19
|
+
* you can also:
|
20
|
+
|
21
|
+
cd .vagrant/beaker_vagrant_files/default.yml ; vagrant destroy --force
|
22
|
+
|
23
|
+
##Supported ENV variables
|
24
|
+
|
25
|
+
* `BEAKER_color`: set to `no` to disable color output
|
26
|
+
* `BEAKER_debug`: set to any value to enable beaker debug logging
|
27
|
+
* `BEAKER_destroy`: set to `no` to keep the VMs after the test run. Set to `onpass` to keep the VMs around only after a test failure.
|
28
|
+
* `BEAKER_keyfile`: specify alternate SSH key to access the test VMs
|
29
|
+
* `BEAKER_provision`: set to `no` to skip provisioning boxes before testing, beaker will then assume that boxes are already provisioned and reachable
|
30
|
+
* `BEAKER_set`: set to the name of the node file to be used during testing (exclude .yml file extension, it will be added by beaker-rspec). The file is assumed to be in module's spec/acceptance/nodesets directory.
|
31
|
+
* `BEAKER_setfile` - set to the full path to a node file be used during testing (be sure to include full path and file extensions, beaker-rspec will use this path without editing/altering it in any way)
|
32
|
+
|
33
|
+
For details on the specific mappings, the [setup code](https://github.com/puppetlabs/beaker-rspec/blob/2771b4b1864692690254a969680a57ff22ac0516/lib/beaker-rspec/spec_helper.rb#L26-L32) and the [beaker docs](https://github.com/puppetlabs/beaker/wiki/The-Command-Line).
|
34
|
+
|
35
|
+
#Building your Module Testing Environment
|
36
|
+
|
37
|
+
Using puppetlabs-mysql as an example module.
|
38
|
+
|
39
|
+
##Clone the module repository of the module where you want to add tests
|
40
|
+
|
41
|
+
git clone https://github.com/puppetlabs/puppetlabs-mysql
|
42
|
+
cd puppetlabs-mysql
|
43
|
+
|
44
|
+
##Install beaker-rspec
|
45
|
+
|
46
|
+
In module's top level directory edit the Gemfile. If there is a `:system_tests` or `:acceptance` group, add it there.
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
group :acceptance do
|
50
|
+
gem 'beaker-rspec'
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
Then run
|
55
|
+
|
56
|
+
bundle install
|
57
|
+
|
58
|
+
##Create node files
|
59
|
+
|
60
|
+
These files indicate the nodes (or hosts) that the tests will be run on. By default, any node file called `default.yml` will be used. You can override this using the `BEAKER_set` environment variable to indicate an alternate file. Do not provide full path or the '.yml' file extension to `BEAKER_set`, it is assumed to be located in 'spec/acceptance/nodesets/${NAME}.yml' by beaker-rspec. If you wish to use a completely different file location use `BEAKER_setfile` and set it to the full path (including file extension) of your hosts file.
|
61
|
+
|
62
|
+
Nodes are pulled from [Puppet Labs Vagrant Boxes](https://vagrantcloud.com/puppetlabs).
|
63
|
+
|
64
|
+
Example node files can be found here:
|
65
|
+
|
66
|
+
* [Puppet Labs example Vagrant node files](https://github.com/puppetlabs/beaker/blob/master/docs/Example-Vagrant-Hosts-Files.md)
|
67
|
+
|
68
|
+
Create the nodesets directory. From module's top level directory:
|
69
|
+
|
70
|
+
mkdir -p spec/acceptance/nodesets
|
71
|
+
|
72
|
+
Copy any nodesets that you wish to use into the nodesets directory.
|
73
|
+
|
74
|
+
##Create the spec_helper_acceptance.rb
|
75
|
+
|
76
|
+
Create example file `spec_helper_acceptance.rb`:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
require 'beaker-rspec'
|
80
|
+
require 'pry'
|
81
|
+
|
82
|
+
# Install Puppet on all hosts
|
83
|
+
hosts.each do |host|
|
84
|
+
on host, install_puppet
|
85
|
+
end
|
86
|
+
|
87
|
+
RSpec.configure do |c|
|
88
|
+
module_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
89
|
+
|
90
|
+
c.formatter = :documentation
|
91
|
+
|
92
|
+
c.before :suite do
|
93
|
+
# Install module to all hosts
|
94
|
+
hosts.each do |host|
|
95
|
+
install_dev_puppet_module_on(host, :source => module_root, :module_name => 'mysql',
|
96
|
+
:target_module_path => '/etc/puppet/modules')
|
97
|
+
# Install dependencies
|
98
|
+
on(host, puppet('module', 'install', 'puppetlabs-stdlib'))
|
99
|
+
|
100
|
+
# Add more setup code as needed
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
Update spec_helper_acceptance.rb to reflect the module under test. You will need to set the correct module name and add any module dependencies. Place the file in the `spec` directory (in this case `puppetlabs-mysql/spec`)
|
107
|
+
|
108
|
+
##Create spec tests for your module
|
109
|
+
|
110
|
+
Spec tests are written in [RSpec](http://rspec.info). You can also use [serverspec](http://serverspec.org/) matchers to test [resources](http://serverspec.org/resource_types.html).
|
111
|
+
|
112
|
+
Example spec file `spec/acceptance/mysql_account_delete_spec.rb`:
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
require 'spec_helper_acceptance'
|
116
|
+
|
117
|
+
describe 'mysql::server::account_security class' do
|
118
|
+
let(:manifest) {
|
119
|
+
<<-EOS
|
120
|
+
class { 'mysql::server': remove_default_accounts => true }
|
121
|
+
EOS
|
122
|
+
}
|
123
|
+
|
124
|
+
it 'should run without errors' do
|
125
|
+
result = apply_manifest(manifest)
|
126
|
+
expect(@result.exit_code).to eq 2
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'should delete accounts' do
|
130
|
+
grants_results = shell("mysql -e 'show grants for root@127.0.0.1;'")
|
131
|
+
expect(grants_results.exit_code).to eq 1
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should delete databases' do
|
135
|
+
show_result = shell("mysql -e 'show databases;'")
|
136
|
+
expect(show_result.stdout).not_to match /test/
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'should run a second time without changes' do
|
140
|
+
result = apply_manifest(manifest)
|
141
|
+
expect(@result.exit_code).to eq 0
|
142
|
+
end
|
143
|
+
|
144
|
+
describe package('mysql-server') do
|
145
|
+
it { is_expected.to be_installed }
|
146
|
+
end
|
147
|
+
end
|
148
|
+
```
|
149
|
+
|
150
|
+
##Run your spec tests
|
151
|
+
|
152
|
+
From module's top level directory
|
153
|
+
|
154
|
+
bundle exec rspec spec/acceptance
|
@@ -235,10 +235,20 @@ module Specinfra::Backend
|
|
235
235
|
def run_command(cmd, opt = {})
|
236
236
|
node = get_working_node
|
237
237
|
script = create_script(cmd)
|
238
|
-
|
238
|
+
#when node is not cygwin rm -rf will fail so lets use native del instead
|
239
|
+
#There should be a better way to do this, but for now , this works
|
240
|
+
if node.is_cygwin?
|
241
|
+
delete_command = "rm -rf"
|
242
|
+
redirection = "< /dev/null"
|
243
|
+
else
|
244
|
+
delete_command = "del"
|
245
|
+
redirection = "< NUL"
|
246
|
+
end
|
247
|
+
on node, "#{delete_command} script.ps1"
|
239
248
|
create_remote_file(node, 'script.ps1', script)
|
240
|
-
#
|
241
|
-
|
249
|
+
#When using cmd on a pswindows node redirection should be set to < NUl
|
250
|
+
#when using a cygwing one, /dev/null should be fine
|
251
|
+
ret = ssh_exec!(node, "powershell.exe -File script.ps1 #{redirection}")
|
242
252
|
|
243
253
|
if @example
|
244
254
|
@example.metadata[:command] = script
|
data/lib/beaker-rspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|