beaker 3.12.0 → 3.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/acceptance/tests/subcommands/init.rb +17 -15
- data/acceptance/tests/subcommands/provision.rb +45 -0
- data/beaker.gemspec +5 -9
- data/bin/beaker +1 -1
- data/docs/concepts/test_tagging.md +27 -14
- data/docs/how_to/archive_sut_files.md +19 -1
- data/docs/how_to/hypervisors/README.md +20 -3
- data/docs/how_to/hypervisors/ec2.md +4 -0
- data/docs/how_to/hypervisors/vmpooler.md +24 -0
- data/docs/how_to/hypervisors/vsphere.md +0 -3
- data/docs/tutorials/installation.md +22 -7
- data/lib/beaker/cli.rb +28 -12
- data/lib/beaker/dsl.rb +2 -1
- data/lib/beaker/dsl/helpers/puppet_helpers.rb +1 -1
- data/lib/beaker/dsl/helpers/tk_helpers.rb +1 -1
- data/lib/beaker/dsl/structure.rb +0 -130
- data/lib/beaker/dsl/test_tagging.rb +157 -0
- data/lib/beaker/host/unix/exec.rb +9 -1
- data/lib/beaker/host_prebuilt_steps.rb +1 -1
- data/lib/beaker/hypervisor/openstack.rb +8 -9
- data/lib/beaker/options/command_line_parser.rb +19 -4
- data/lib/beaker/options/parser.rb +18 -9
- data/lib/beaker/options/presets.rb +6 -4
- data/lib/beaker/options/validator.rb +11 -5
- data/lib/beaker/subcommand.rb +84 -6
- data/lib/beaker/subcommands/subcommand_util.rb +58 -7
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/cli_spec.rb +44 -1
- data/spec/beaker/dsl/structure_spec.rb +1 -214
- data/spec/beaker/dsl/test_tagging_spec.rb +274 -0
- data/spec/beaker/host/cisco_spec.rb +4 -4
- data/spec/beaker/host/unix/exec_spec.rb +2 -2
- data/spec/beaker/host_prebuilt_steps_spec.rb +1 -1
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/options/parser_spec.rb +33 -24
- data/spec/beaker/options/validator_spec.rb +18 -3
- data/spec/beaker/subcommand/subcommand_util_spec.rb +121 -10
- metadata +12 -8
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDRiMDdjNTBhMTU4NTljNWFmZDM1MDNhZjk0ZDI1MjJiNWI2YzE5ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzI4NDM0YTE4ZDMxZWEwODU0YTM1ODQ5YTcwNzIwNjM4YTgzYzU2ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzQ4NmY3MzljYjJmZTk3ZWU4OTFlODc1Nzk4ZDAxZjAxMjlkZGM0ZTg3ZTQx
|
10
|
+
MjNlMzQzY2JkNGFmNDU4ZmRiYTE2YjYyNTQyMzRiOGY2NjI1YWYzY2ZjYWIx
|
11
|
+
ZmFiN2Q3MjFlMTgwOGNkMmM2YzU5ZTAxYTc5YmM0NjU4MjAyYjc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTFmYWUzMTQ3NTc1MzZiNmUyYzdmOTBmNmU2YjIxYjBhMTQ2ODI1NmQzMzc4
|
14
|
+
NzRkODcyYmYwNWZiOTA4NTJiYTZkNTEwMDI3MmU1NzVjNTM3MjY1NzdiNWU5
|
15
|
+
NGQwOGQ2NGJlYTAxYjExYzRhMTQyOTY3ZmVhMDc2OTk1NjllMzg=
|
@@ -1,27 +1,30 @@
|
|
1
1
|
test_name 'use the init subcommand' do
|
2
2
|
|
3
3
|
def delete_root_folder_contents
|
4
|
-
on default, 'rm -rf /root/*'
|
4
|
+
on default, 'rm -rf /root/* /root/.beaker'
|
5
5
|
end
|
6
6
|
|
7
|
-
step 'ensure that `beaker init`
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
7
|
+
step 'ensure that `beaker init` exit value should be 1 when not provided with a supported hypervisor' do
|
8
|
+
result = on(default, 'beaker init ec2', :accept_all_exit_codes => true)
|
9
|
+
assert_match(/Invalid hypervisor. Currently supported hypervisors are.+/, result.stdout)
|
10
|
+
refute_equal(0, result.exit_code, '`beaker init` with an unsupported hypervisor argument should return a non-zero exit code')
|
11
|
+
end
|
13
12
|
|
14
13
|
step 'ensure that `beaker help init` works' do
|
15
14
|
result = on(default, 'beaker help init')
|
16
|
-
|
15
|
+
assert_match(/Usage+/, result.stdout)
|
17
16
|
end
|
18
17
|
|
19
|
-
step 'ensure that `beaker init`
|
18
|
+
step 'ensure that `beaker init --help` works' do
|
19
|
+
result = on(default, 'beaker init --help')
|
20
|
+
assert_match(/Usage.+/, result.stdout)
|
21
|
+
assert_equal(0, result.exit_code, '`beaker init --help` should return a zero exit code')
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
24
|
+
step 'ensure that `beaker init` accepts no argument as well as accepts either vmpooler or vagrant hypervisor arguments' do
|
25
|
+
['vmpooler', 'vagrant', ''].each do |hypervisor|
|
26
|
+
result = on(default, "beaker init #{hypervisor}")
|
23
27
|
assert_match(/Writing host config.+/, result.stdout)
|
24
|
-
assert_equal(0, result.exit_code, "`beaker init --hypervisor=#{hypervisor}` should return a zero exit code")
|
25
28
|
step 'ensure that the Rakefile is present' do
|
26
29
|
on(default, '[ -e "Rakefile" ]')
|
27
30
|
end
|
@@ -29,14 +32,13 @@ test_name 'use the init subcommand' do
|
|
29
32
|
end
|
30
33
|
end
|
31
34
|
|
32
|
-
|
33
35
|
step 'ensure that a Rakefile is not overwritten if it does exist prior' do
|
34
36
|
delete_root_folder_contents
|
35
|
-
on(default, "beaker init
|
37
|
+
on(default, "beaker init vmpooler")
|
36
38
|
prepended_rakefile = on(default, 'cat Rakefile').stdout
|
37
39
|
delete_root_folder_contents
|
38
40
|
on(default, 'echo "require \'tempfile\'" >> Rakefile')
|
39
|
-
on(default, 'beaker init
|
41
|
+
on(default, 'beaker init vmpooler', :accept_all_exit_codes => true)
|
40
42
|
rakefile = on(default, 'cat Rakefile')
|
41
43
|
|
42
44
|
# Assert that the Rakefile contents includes the original and inserted requirements
|
@@ -0,0 +1,45 @@
|
|
1
|
+
test_name 'use the provision subcommand' do
|
2
|
+
|
3
|
+
def delete_root_folder_contents
|
4
|
+
on default, 'rm -rf /root/* /root/.beaker'
|
5
|
+
end
|
6
|
+
|
7
|
+
step 'ensure that `beaker provision` fails correctly when a configuration has not been initialized' do
|
8
|
+
delete_root_folder_contents
|
9
|
+
result = on(default, 'beaker provision', :accept_all_exit_codes => true)
|
10
|
+
assert_match(/Please initialise a configuration/, result.stdout)
|
11
|
+
refute_equal(0, result.exit_code, '`beaker provision` in an uninitialised configuration should return a non-zero exit code')
|
12
|
+
end
|
13
|
+
|
14
|
+
step 'ensure that `beaker help provision` works' do
|
15
|
+
result = on(default, 'beaker help provision')
|
16
|
+
assert_match(/Usage/, result.stdout)
|
17
|
+
assert_equal(0, result.exit_code, '`beaker help provision` should return a zero exit code')
|
18
|
+
end
|
19
|
+
|
20
|
+
step 'ensure that `beaker provision --help` works' do
|
21
|
+
result = on(default, 'beaker provision --help')
|
22
|
+
assert_match(/Usage/, result.stdout)
|
23
|
+
assert_equal(0, result.exit_code, '`beaker provision --help` should return a zero exit code')
|
24
|
+
end
|
25
|
+
|
26
|
+
step 'ensure that `beaker provision` provisions vmpooler configuration' do
|
27
|
+
result = on(default, "beaker init vmpooler")
|
28
|
+
assert_match(/Writing host config/, result.stdout)
|
29
|
+
assert_equal(0, result.exit_code, "`beaker init vmpooler` should return a zero exit code")
|
30
|
+
step 'ensure that the Rakefile is present' do
|
31
|
+
on(default, '[ -e "Rakefile" ]')
|
32
|
+
end
|
33
|
+
step 'ensure provision provisions, validates, and configures new hosts' do
|
34
|
+
result = on(default, "beaker provision")
|
35
|
+
assert_equal(0, result.exit_code, "`beaker provision` should return a zero exit code")
|
36
|
+
end
|
37
|
+
step 'ensure provision will not provision new hosts if hosts have already been provisioned' do
|
38
|
+
result = on(default, 'beaker provision')
|
39
|
+
assert_match(/Hosts have already been provisioned/, result.stdout)
|
40
|
+
assert_equal(0, result.exit_code, "`beaker provision` should return a zero exit code")
|
41
|
+
end
|
42
|
+
delete_root_folder_contents
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/beaker.gemspec
CHANGED
@@ -5,11 +5,11 @@ require 'beaker/version'
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "beaker"
|
7
7
|
s.version = Beaker::Version::STRING
|
8
|
-
s.authors = ["
|
9
|
-
s.email = ["delivery@
|
8
|
+
s.authors = ["Puppet"]
|
9
|
+
s.email = ["delivery@puppet.com"]
|
10
10
|
s.homepage = "https://github.com/puppetlabs/beaker"
|
11
11
|
s.summary = %q{Let's test Puppet!}
|
12
|
-
s.description = %q{
|
12
|
+
s.description = %q{Puppet's accceptance testing harness}
|
13
13
|
s.license = 'Apache2'
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
-
s.required_ruby_version = Gem::Requirement.new('>= 2.
|
20
|
+
s.required_ruby_version = Gem::Requirement.new('>= 2.1.8')
|
21
21
|
|
22
22
|
# Testing dependencies
|
23
23
|
s.add_development_dependency 'rspec', '~> 3.0'
|
@@ -36,11 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.add_runtime_dependency 'hocon', '~> 1.0'
|
37
37
|
s.add_runtime_dependency 'net-ssh', '~> 4.0'
|
38
38
|
s.add_runtime_dependency 'net-scp', '~> 1.2'
|
39
|
-
s.add_runtime_dependency 'inifile', '~>
|
40
|
-
## inifile: keep <3.0, breaks puppet_helpers.rb:puppet_conf_for when updated
|
41
|
-
## will need to fix that to upgrade this gem
|
42
|
-
## indicating test from puppet acceptance:
|
43
|
-
## tests/security/cve-2013-1652_improper_query_params.rb
|
39
|
+
s.add_runtime_dependency 'inifile', '~> 3.0'
|
44
40
|
|
45
41
|
s.add_runtime_dependency 'rake', '~> 10.0'
|
46
42
|
s.add_runtime_dependency 'rsync', '~> 1.0.9'
|
data/bin/beaker
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
## What is This?
|
2
2
|
|
3
|
-
Beaker test tagging allows you to add tags to tests (using the
|
3
|
+
Beaker test tagging allows you to add tags to tests (using the
|
4
|
+
[`tag` DSL method](http://www.rubydoc.info/github/puppetlabs/beaker/master/Beaker/DSL/TestTagging#tag-instance_method)),
|
5
|
+
so that you can include or exclude a specific subset of the tests given for use
|
6
|
+
in this run. Why would you want to use this? Here are some examples of what
|
7
|
+
you can do with this functionality:
|
4
8
|
|
5
9
|
- Run groups of tests separately from the same testing codebase
|
6
10
|
- Declare different actions that should be taken when a test fails
|
@@ -8,12 +12,14 @@ Beaker test tagging allows you to add tags to tests (using the [`tag` DSL method
|
|
8
12
|
|
9
13
|
## How Tagging Works
|
10
14
|
|
11
|
-
Add tags to a Beaker test at the beginning, like you would if you were using
|
15
|
+
Add tags to a Beaker test at the beginning, like you would if you were using
|
16
|
+
confine. Things to stay aware of:
|
12
17
|
|
13
18
|
- A test that is not executed due to a tag will be considered a ‘skipped’ test
|
14
19
|
- Tags are free form strings and will not be subjected to any correctness testing
|
15
20
|
- Tags are NOT case sensitive
|
16
21
|
- Tagging was added after Beaker 2.14.1. If you're using that version or older, this isn't available
|
22
|
+
- `--test-tag-or` was added after Beaker 3.12.0. If you're using an older version, this isnt available
|
17
23
|
|
18
24
|
## Test Examples
|
19
25
|
|
@@ -39,38 +45,45 @@ Preferred style no-block example:
|
|
39
45
|
|
40
46
|
## Command Line Interaction
|
41
47
|
|
42
|
-
`--tag`: Run the set of tests matching ALL of the provided single or comma
|
48
|
+
`--test-tag-and`: Run the set of tests matching ALL of the provided single or comma-separated list of tags.
|
43
49
|
|
44
|
-
`--
|
50
|
+
`--test-tag-or`: Run the set of tests matching ANY of the provided single or comma-separated list of tags.
|
45
51
|
|
46
|
-
|
52
|
+
`--test-tag-exclude`: Run the set of tests that do not contain ANY of the provided single or comma-separated list of tags.
|
47
53
|
|
48
|
-
Beaker will raise an error if `--tag` & `--
|
54
|
+
Beaker will raise an error if `--test-tag-and` & `--test-tag-exclude` contain the same tag, however.
|
55
|
+
|
56
|
+
Beaker will also raise an error if you use both `--test-tag-or` & `--test-tag-and`, because
|
57
|
+
it won't be able to determine which order they should be used in.
|
49
58
|
|
50
59
|
## CLI Examples
|
51
60
|
|
52
61
|
Execute all ‘long_running’ tests.
|
53
62
|
|
54
|
-
$ beaker --tests path/to/tests --tag long_running
|
63
|
+
$ beaker --tests path/to/tests --test-tag-and long_running
|
55
64
|
|
56
65
|
Execute all tests, except those that are ‘feature_test’
|
57
66
|
|
58
|
-
$ beaker --tests path/to/tests --
|
67
|
+
$ beaker --tests path/to/tests --test-tag-exclude feature_test
|
59
68
|
|
60
69
|
Execute all tests that are long_running but not feature_test
|
61
70
|
|
62
|
-
$ beaker --tests path/to/tests --tag long_running --
|
71
|
+
$ beaker --tests path/to/tests --test-tag-and long_running --test-tag-exclude feature_test
|
63
72
|
|
64
73
|
Execute all tests marked both 'long_running' and 'feature_test'
|
65
74
|
|
66
|
-
$ beaker --tests /path/to/tests --
|
75
|
+
$ beaker --tests /path/to/tests --test-tag-and long_running,feature_test
|
67
76
|
|
68
77
|
## Environment Variable Support
|
69
78
|
|
70
|
-
Equivalent to `--tag`:
|
79
|
+
Equivalent to `--test-tag-and`:
|
80
|
+
|
81
|
+
BEAKER_TEST_TAG_AND=long_running,feature_test
|
82
|
+
|
83
|
+
Equivalent to `--test-tag-or`:
|
71
84
|
|
72
|
-
|
85
|
+
BEAKER_TEST_TAG_OR=long_running,feature_test
|
73
86
|
|
74
|
-
Equivalent to `--
|
87
|
+
Equivalent to `--test-tag-exclude`:
|
75
88
|
|
76
|
-
|
89
|
+
BEAKER_TEST_TAG_EXCLUDE=long_running,feature_test
|
@@ -24,8 +24,26 @@ and details of all method arguments are documented there as well. Check it out,
|
|
24
24
|
and with the right use, you won't need to preserve hosts at all to debug any
|
25
25
|
test failures.
|
26
26
|
|
27
|
+
# Challenges
|
28
|
+
|
29
|
+
## Conditionally Saving Files From SUTs
|
30
|
+
|
31
|
+
One thing that people tend to want from this functionality is to only archive
|
32
|
+
files from SUTs when a beaker run has failed. At this point, beaker does not
|
33
|
+
have access to other suites from a current one. This means that in practice,
|
34
|
+
a post-suite (where one would typically put archiving and other post-processes)
|
35
|
+
will not be able to archive files ONLY IF the test suite has had any failures
|
36
|
+
or errors.
|
37
|
+
|
38
|
+
Our suggestion to get the functionality required would be to have beaker always
|
39
|
+
archive the appropriate files in the post-suite of your tests, but then only
|
40
|
+
have Jenkins (or your job running system, whatever that may be) conditionally
|
41
|
+
take them from the beaker coordinator to whatever external archive system you
|
42
|
+
rely on for later analysis. This can both get you the files that you need from
|
43
|
+
the SUTs and save on space, as only files that need analysis will be kept.
|
44
|
+
|
27
45
|
# When Did This Come Out?
|
28
46
|
|
29
47
|
`archive_file_from` was originally added to the DSL in beaker
|
30
48
|
[2.48.0](https://github.com/puppetlabs/beaker/releases/tag/2.48.0), released on
|
31
|
-
[July 27, 2016](https://github.com/puppetlabs/beaker/blob/master/HISTORY.md#2480---27-jul-2016-47d3aa18).
|
49
|
+
[July 27, 2016](https://github.com/puppetlabs/beaker/blob/master/HISTORY.md#2480---27-jul-2016-47d3aa18).
|
@@ -9,9 +9,26 @@ assumptions.
|
|
9
9
|
|
10
10
|
# Credentials File
|
11
11
|
|
12
|
-
Beaker uses credentials from a
|
13
|
-
|
14
|
-
|
12
|
+
Beaker uses credentials from a `.fog` file for authentication. This file came
|
13
|
+
from using the [fog cloud services library](http://fog.io). Beaker now only uses
|
14
|
+
fog functionality in the openstack hypervisor, but we still use the `.fog` file
|
15
|
+
for a credentials store.
|
16
|
+
|
17
|
+
By default, the file is located under the user's home directory. This helps to
|
18
|
+
keep the credentials confidential. The path of `.fog` file can be changed by
|
19
|
+
setting the `dot_fog` global beaker option.
|
20
|
+
|
21
|
+
The `.fog` file is written in YAML. The keys are particular to the service that
|
22
|
+
they correspond to, and each hypervisor's documentation should include the keys
|
23
|
+
that are needed for it. An example `.fog` file is below:
|
24
|
+
|
25
|
+
```yaml
|
26
|
+
:default:
|
27
|
+
:vsphere_server: 'vsphere.example.com'
|
28
|
+
:vsphere_username: 'joe'
|
29
|
+
:vsphere_password: 'MyP@$$w0rd'
|
30
|
+
:vmpooler_token: 'randomtokentext'
|
31
|
+
```
|
15
32
|
|
16
33
|
# External Hypervisors
|
17
34
|
|
@@ -20,6 +20,7 @@ hypervisor: ec2
|
|
20
20
|
hypervisor: ec2
|
21
21
|
amisize: c1.medium
|
22
22
|
snapshot: pe
|
23
|
+
user: ec2-user
|
23
24
|
centos-5-64-1:
|
24
25
|
roles:
|
25
26
|
- agent
|
@@ -28,6 +29,7 @@ hypervisor: ec2
|
|
28
29
|
hypervisor: ec2
|
29
30
|
amisize: c1.medium
|
30
31
|
snapshot: pe
|
32
|
+
user: ec2-user
|
31
33
|
CONFIG:
|
32
34
|
nfs_server: none
|
33
35
|
consoleport: 443
|
@@ -75,3 +77,5 @@ AMI:
|
|
75
77
|
Size of the [EBS Volume](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html) that will be attached to the EC2 instance.
|
76
78
|
####`vpc_id`####
|
77
79
|
ID of the [VPC](https://aws.amazon.com/vpc/) to create the instances in. If not provided will either use the default VPC for the provided region (marked as `isDefault`), otherwise falls back to `nil`. If subnet information is provided (`subnet_id`/`subnet_ids`) this must be defined.
|
80
|
+
####`user`####
|
81
|
+
By default root login is not allowed with Amazon Linux. Setting it to ec2-user will trigger `sshd_config` and `authorized_keys` changes by beaker.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
[vmpooler](https://github.com/puppetlabs/vmpooler) is a puppet-built abstraction
|
2
|
+
layer over vSphere infrastructure that pools VMs to be used by beaker & other
|
3
|
+
systems.
|
4
|
+
|
5
|
+
beaker's vmpooler hypervisor interacts with vmpooler to get Systems Under Test
|
6
|
+
(SUTs) for testing purposes.
|
7
|
+
|
8
|
+
# Tokens
|
9
|
+
|
10
|
+
Using tokens will allow you to extend your VMs lifetime, as well as interact
|
11
|
+
with vmpooler and your VMs in more complex ways. You can have beaker do these
|
12
|
+
same things by providing your `vmpooler_token` in the `~/.fog` file. For more
|
13
|
+
info about how the `.fog` file works, please refer to the
|
14
|
+
[hypervisor README](README.md).
|
15
|
+
|
16
|
+
An example of a `.fog` file with just the vmpooler details is below:
|
17
|
+
```yaml
|
18
|
+
:default:
|
19
|
+
:vmpooler_token: 'randomtokentext'
|
20
|
+
```
|
21
|
+
|
22
|
+
Users with Puppet credentials can follow our instructions for getting & using
|
23
|
+
vmpooler tokens in our
|
24
|
+
[internal documentation](https://confluence.puppetlabs.com/pages/viewpage.action?spaceKey=SRE&title=Generating+and+using+vmpooler+tokens).
|
@@ -7,9 +7,6 @@ To do this create a `~/.fog` file with your vSphere credentials:
|
|
7
7
|
:vsphere_server: 'vsphere.example.com'
|
8
8
|
:vsphere_username: 'joe'
|
9
9
|
:vsphere_password: 'MyP@$$w0rd'
|
10
|
-
:vmpooler_token: 'randomtokentext'
|
11
|
-
|
12
|
-
The vmpooler_token can be used with https://github.com/puppetlabs/vmpooler. Users with Puppet Labs credentials can follow directions for getting and using tokens at https://confluence.puppetlabs.com/display/QE/Generating+and+using+vmpooler+tokens.
|
13
10
|
|
14
11
|
These follow the conventions used by Cloud Provisioner and Fog.
|
15
12
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
#Beaker Installation
|
1
|
+
# Beaker Installation
|
2
2
|
|
3
3
|
In most cases, beaker is running on a system separate from the SUT; we will commonly refer to this system as the beaker coordinator. This page outlines how to install requirements for the beaker coordinator and options for the installation of beaker itself.
|
4
4
|
|
5
5
|
## Beaker Requirements
|
6
6
|
|
7
|
-
* Ruby >= 2.2.5
|
7
|
+
* Ruby >= 2.1.8 (but we [only test on >= 2.2.5](installation.md#ruby-version))
|
8
8
|
* libxml2, libxslt (needed for the [Nokogiri](http://nokogiri.org/tutorials/installing_nokogiri.html) gem)
|
9
9
|
* g++ (needed for the [unf_ext](http://rubydoc.info/gems/unf_ext/) gem)
|
10
10
|
* curl (needed for some DSL functions to be able to execute successfully)
|
@@ -17,13 +17,13 @@ On an EL or Fedora system use:
|
|
17
17
|
|
18
18
|
sudo yum install make gcc gcc-c++ libxml2-devel libxslt-devel ruby-devel
|
19
19
|
|
20
|
-
##Installing Beaker
|
21
|
-
###From Gem (Preferred)
|
20
|
+
## Installing Beaker
|
21
|
+
### From Gem (Preferred)
|
22
22
|
|
23
23
|
$ gem install beaker
|
24
24
|
$ beaker --help
|
25
25
|
|
26
|
-
###From Latest Git
|
26
|
+
### From Latest Git
|
27
27
|
|
28
28
|
If you need the latest and greatest (and mostly likely broken/untested/no warranty) beaker code.
|
29
29
|
|
@@ -35,7 +35,7 @@ If you need the latest and greatest (and mostly likely broken/untested/no warran
|
|
35
35
|
$ bundle install
|
36
36
|
$ bundle exec beaker --help
|
37
37
|
|
38
|
-
###From Latest Git, As Installed Gem
|
38
|
+
### From Latest Git, As Installed Gem
|
39
39
|
|
40
40
|
If you need the latest and greatest, but prefer to work from gem instead of through bundler.
|
41
41
|
|
@@ -45,7 +45,7 @@ If you need the latest and greatest, but prefer to work from gem instead of thro
|
|
45
45
|
$ gem build beaker.gemspec
|
46
46
|
$ gem install ./beaker-*.gem
|
47
47
|
|
48
|
-
###Special Case Installation
|
48
|
+
### Special Case Installation
|
49
49
|
|
50
50
|
The beaker gem can be built and installed in the context of the current test suite by adding the github repos as the source in the Gemspec file (see <a href = "http://bundler.io/git.html">bundler git documentation</a>).
|
51
51
|
|
@@ -57,3 +57,18 @@ The beaker gem can be built and installed in the context of the current test sui
|
|
57
57
|
gem 'chromedriver2-helper'
|
58
58
|
gem 'beaker', :github => 'puppetlabs/beaker', :branch => 'master', :ref => 'fffe7'
|
59
59
|
end
|
60
|
+
|
61
|
+
## Ruby Version
|
62
|
+
|
63
|
+
In moving to beaker 3.0, we added in a hard requirement that a
|
64
|
+
beaker test writer be using Ruby 2.2.5 or higher. Since Puppet
|
65
|
+
has versions that support earlier versions of Ruby, this made
|
66
|
+
writing tests more difficult than it needed to be.
|
67
|
+
|
68
|
+
In order to make this easier, in beaker 3.13.0 we've relaxed
|
69
|
+
this requirement to Ruby 2.1.8. Note that the beaker team does
|
70
|
+
not internally test Ruby versions below 2.2.5, and that if bugs
|
71
|
+
are submitted that are found to be specific to versions below
|
72
|
+
2.2.5, they will not be worked on by the beaker team. This
|
73
|
+
doesn't mean we won't merge fixes to bugs that are specific to
|
74
|
+
those versions that are submitted by the community, however.
|