beaker 1.12.2 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/beaker.gemspec +1 -1
- data/lib/beaker/cli.rb +2 -1
- data/lib/beaker/dsl/helpers.rb +74 -18
- data/lib/beaker/dsl/install_utils.rb +172 -39
- data/lib/beaker/host.rb +6 -3
- data/lib/beaker/host/unix/pkg.rb +22 -1
- data/lib/beaker/host/windows.rb +1 -0
- data/lib/beaker/host/windows/pkg.rb +7 -2
- data/lib/beaker/host_prebuilt_steps.rb +22 -21
- data/lib/beaker/hypervisor/docker.rb +1 -1
- data/lib/beaker/hypervisor/vagrant.rb +13 -0
- data/lib/beaker/junit.xsl +268 -0
- data/lib/beaker/logger.rb +25 -5
- data/lib/beaker/options/command_line_parser.rb +8 -8
- data/lib/beaker/options/presets.rb +5 -1
- data/lib/beaker/platform.rb +1 -0
- data/lib/beaker/ssh_connection.rb +15 -11
- data/lib/beaker/tasks/rake_task.rb +114 -0
- data/lib/beaker/tasks/test.rb +18 -0
- data/lib/beaker/test_case.rb +6 -0
- data/lib/beaker/test_suite.rb +316 -191
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers_spec.rb +98 -25
- data/spec/beaker/dsl/install_utils_spec.rb +26 -12
- data/spec/beaker/host/unix/pkg_spec.rb +109 -0
- data/spec/beaker/host_prebuilt_steps_spec.rb +2 -18
- data/spec/beaker/host_spec.rb +3 -2
- data/spec/beaker/hypervisor/docker_spec.rb +1 -1
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/puppet_command_spec.rb +2 -2
- data/spec/beaker/ssh_connection_spec.rb +9 -8
- data/spec/beaker/test_suite_spec.rb +108 -0
- metadata +9 -4
data/spec/beaker/host_spec.rb
CHANGED
@@ -11,8 +11,8 @@ module Beaker
|
|
11
11
|
expect( host ).to be_a_kind_of Windows::Host
|
12
12
|
end
|
13
13
|
|
14
|
-
it 'defaults to a unix host' do
|
15
|
-
expect( host ).to be_a_kind_of Unix::Host
|
14
|
+
it 'defaults to a unix host' do
|
15
|
+
expect( host ).to be_a_kind_of Unix::Host
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'can be read like a hash' do
|
@@ -189,5 +189,6 @@ module Beaker
|
|
189
189
|
end
|
190
190
|
|
191
191
|
end
|
192
|
+
|
192
193
|
end
|
193
194
|
end
|
@@ -128,7 +128,7 @@ module Beaker
|
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'should start the container' do
|
131
|
-
container.should_receive(:start).with({'PublishAllPorts' => true})
|
131
|
+
container.should_receive(:start).with({'PublishAllPorts' => true, 'Privileged' => true})
|
132
132
|
|
133
133
|
docker.provision
|
134
134
|
end
|
@@ -6,14 +6,14 @@ module Beaker
|
|
6
6
|
|
7
7
|
let(:parser) {Beaker::Options::CommandLineParser.new}
|
8
8
|
let(:test_opts) {["-h", "vcloud.cfg", "--debug", "--tests", "test.rb", "--help"]}
|
9
|
-
let(:full_opts) {["--hosts", "host.cfg", "--options", "opts_file", "--type", "pe", "--helper", "path_to_helper", "--load-path", "load_path", "--tests", "test1.rb,test2.rb,test3.rb", "--pre-suite", "pre_suite.rb", "--post-suite", "post_suite.rb", "--no-provision", "--preserve-hosts", "always", "--root-keys", "--keyfile", "../.ssh/id_rsa", "--install", "gitrepopath", "-m", "module", "-q", "--
|
9
|
+
let(:full_opts) {["--hosts", "host.cfg", "--options", "opts_file", "--type", "pe", "--helper", "path_to_helper", "--load-path", "load_path", "--tests", "test1.rb,test2.rb,test3.rb", "--pre-suite", "pre_suite.rb", "--post-suite", "post_suite.rb", "--no-provision", "--preserve-hosts", "always", "--root-keys", "--keyfile", "../.ssh/id_rsa", "--install", "gitrepopath", "-m", "module", "-q", "--dry-run", "--no-ntp", "--repo-proxy", "--add-el-extras", "--config", "anotherfile.cfg", "--fail-mode", "fast", "--no-color", "--version", "--log-level", "info", "--package-proxy", "http://192.168.100.1:3128"]}
|
10
10
|
|
11
11
|
it "can correctly read command line input" do
|
12
12
|
expect(parser.parse(test_opts)).to be === {:hosts_file=>"vcloud.cfg", :log_level=>"debug", :tests=>"test.rb", :help=>true}
|
13
13
|
end
|
14
14
|
|
15
15
|
it "supports all our command line options" do
|
16
|
-
expect(parser.parse(full_opts)).to be === {:hosts_file=>"anotherfile.cfg", :options_file=>"opts_file", :type=>"pe", :helper=>"path_to_helper", :load_path=>"load_path", :tests=>"test1.rb,test2.rb,test3.rb", :pre_suite=>"pre_suite.rb", :post_suite=>"post_suite.rb", :provision=>false, :preserve_hosts=>"always", :root_keys=>true, :keyfile=>"../.ssh/id_rsa", :install=>"gitrepopath", :modules=>"module", :quiet=>true, :
|
16
|
+
expect(parser.parse(full_opts)).to be === {:hosts_file=>"anotherfile.cfg", :options_file=>"opts_file", :type=>"pe", :helper=>"path_to_helper", :load_path=>"load_path", :tests=>"test1.rb,test2.rb,test3.rb", :pre_suite=>"pre_suite.rb", :post_suite=>"post_suite.rb", :provision=>false, :preserve_hosts=>"always", :root_keys=>true, :keyfile=>"../.ssh/id_rsa", :install=>"gitrepopath", :modules=>"module", :quiet=>true, :dry_run=>true, :timesync=>false, :repo_proxy=>true, :add_el_extras=>true, :fail_mode=>"fast", :color=>false, :version=>true, :log_level=>"info", :package_proxy => "http://192.168.100.1:3128"}
|
17
17
|
end
|
18
18
|
|
19
19
|
it "can produce a usage description" do
|
@@ -26,8 +26,8 @@ module Beaker
|
|
26
26
|
expect( cmd.args_string ).to be == 'to the baz'
|
27
27
|
expect( cmd.options_string ).to be == '--foo=bar'
|
28
28
|
|
29
|
-
win_path = %q[
|
30
|
-
win_lib = %q[
|
29
|
+
win_path = %q[/opt/puppet-git-repos/hiera/bin:${PATH}]
|
30
|
+
win_lib = %q[`cygpath -w /opt/puppet-git-repos/hiera/lib`;`cygpath -w /opt/puppet-git-repos/hiera-puppet/lib`;${RUBYLIB}]
|
31
31
|
cmd_exe = %q[cmd.exe /c]
|
32
32
|
|
33
33
|
command_line = cmd.environment_string_for( host, cmd.environment )
|
@@ -3,25 +3,26 @@ require 'net/ssh'
|
|
3
3
|
|
4
4
|
module Beaker
|
5
5
|
describe SshConnection do
|
6
|
-
let( :host )
|
7
|
-
let( :user )
|
8
|
-
let( :
|
9
|
-
|
6
|
+
let( :host ) { 'my_host' }
|
7
|
+
let( :user ) { 'root' }
|
8
|
+
let( :ssh_opts ) { {} }
|
9
|
+
let( :options ) { { :logger => double('logger').as_null_object } }
|
10
|
+
subject(:connection) { SshConnection.new host, user, ssh_opts, options }
|
10
11
|
|
11
12
|
it 'self.connect creates connects and returns a proxy for that connection' do
|
12
13
|
# grrr
|
13
|
-
Net::SSH.should_receive(:start).with( host, user,
|
14
|
-
connection_constructor = SshConnection.connect host, user, options
|
14
|
+
Net::SSH.should_receive(:start).with( host, user, ssh_opts )
|
15
|
+
connection_constructor = SshConnection.connect host, user, ssh_opts, options
|
15
16
|
expect( connection_constructor ).to be_a_kind_of SshConnection
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'connect creates a new connection' do
|
19
|
-
Net::SSH.should_receive( :start ).with( host, user,
|
20
|
+
Net::SSH.should_receive( :start ).with( host, user, ssh_opts)
|
20
21
|
connection.connect
|
21
22
|
end
|
22
23
|
|
23
24
|
it 'connect caches its connection' do
|
24
|
-
Net::SSH.should_receive( :start ).with( host, user,
|
25
|
+
Net::SSH.should_receive( :start ).with( host, user, ssh_opts ).once.and_return true
|
25
26
|
connection.connect
|
26
27
|
connection.connect
|
27
28
|
end
|
@@ -27,5 +27,113 @@ module Beaker
|
|
27
27
|
end
|
28
28
|
|
29
29
|
end
|
30
|
+
|
31
|
+
describe TestSuite::TestSuiteResult do
|
32
|
+
|
33
|
+
let( :options ) { make_opts.merge({ :logger => double().as_null_object }) }
|
34
|
+
let( :hosts ) { make_hosts() }
|
35
|
+
let( :testcase1 ) { Beaker::TestCase.new( hosts, options[:logger], options) }
|
36
|
+
let( :testcase2 ) { Beaker::TestCase.new( hosts, options[:logger], options) }
|
37
|
+
let( :testcase3 ) { Beaker::TestCase.new( hosts, options[:logger], options) }
|
38
|
+
let( :test_suite_result ) { TestSuite::TestSuiteResult.new( options, "my_suite") }
|
39
|
+
|
40
|
+
it 'supports adding test cases' do
|
41
|
+
expect( test_suite_result.test_count ).to be === 0
|
42
|
+
test_suite_result.add_test_case( testcase1 )
|
43
|
+
expect( test_suite_result.test_count ).to be === 1
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'calculates passed tests' do
|
47
|
+
testcase1.instance_variable_set(:@test_status, :pass)
|
48
|
+
testcase2.instance_variable_set(:@test_status, :pass)
|
49
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
50
|
+
test_suite_result.add_test_case( testcase1 )
|
51
|
+
test_suite_result.add_test_case( testcase2 )
|
52
|
+
test_suite_result.add_test_case( testcase3 )
|
53
|
+
expect( test_suite_result.passed_tests ).to be == 2
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'calculates failed tests' do
|
57
|
+
testcase1.instance_variable_set(:@test_status, :pass)
|
58
|
+
testcase2.instance_variable_set(:@test_status, :pass)
|
59
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
60
|
+
test_suite_result.add_test_case( testcase1 )
|
61
|
+
test_suite_result.add_test_case( testcase2 )
|
62
|
+
test_suite_result.add_test_case( testcase3 )
|
63
|
+
expect( test_suite_result.failed_tests ).to be == 1
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'calculates errored tests' do
|
67
|
+
testcase1.instance_variable_set(:@test_status, :error)
|
68
|
+
testcase2.instance_variable_set(:@test_status, :pass)
|
69
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
70
|
+
test_suite_result.add_test_case( testcase1 )
|
71
|
+
test_suite_result.add_test_case( testcase2 )
|
72
|
+
test_suite_result.add_test_case( testcase3 )
|
73
|
+
expect( test_suite_result.errored_tests ).to be == 1
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'calculates skipped tests' do
|
77
|
+
testcase1.instance_variable_set(:@test_status, :error)
|
78
|
+
testcase2.instance_variable_set(:@test_status, :skip)
|
79
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
80
|
+
test_suite_result.add_test_case( testcase1 )
|
81
|
+
test_suite_result.add_test_case( testcase2 )
|
82
|
+
test_suite_result.add_test_case( testcase3 )
|
83
|
+
expect( test_suite_result.skipped_tests ).to be == 1
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'calculates pending tests' do
|
87
|
+
testcase1.instance_variable_set(:@test_status, :error)
|
88
|
+
testcase2.instance_variable_set(:@test_status, :pending)
|
89
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
90
|
+
test_suite_result.add_test_case( testcase1 )
|
91
|
+
test_suite_result.add_test_case( testcase2 )
|
92
|
+
test_suite_result.add_test_case( testcase3 )
|
93
|
+
expect( test_suite_result.pending_tests ).to be == 1
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'calculates sum_failed as a sum of errored and failed TestCases' do
|
97
|
+
testcase1.instance_variable_set(:@test_status, :error)
|
98
|
+
testcase2.instance_variable_set(:@test_status, :pending)
|
99
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
100
|
+
test_suite_result.add_test_case( testcase1 )
|
101
|
+
test_suite_result.add_test_case( testcase2 )
|
102
|
+
test_suite_result.add_test_case( testcase3 )
|
103
|
+
expect( test_suite_result.sum_failed ).to be == 2
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'reports success with no errors/failures' do
|
107
|
+
testcase1.instance_variable_set(:@test_status, :pass)
|
108
|
+
testcase2.instance_variable_set(:@test_status, :pending)
|
109
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
110
|
+
test_suite_result.add_test_case( testcase1 )
|
111
|
+
test_suite_result.add_test_case( testcase2 )
|
112
|
+
test_suite_result.add_test_case( testcase3 )
|
113
|
+
expect( test_suite_result.success? ).to be == false
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'reports failed if any tests error/fail' do
|
117
|
+
testcase1.instance_variable_set(:@test_status, :pass)
|
118
|
+
testcase2.instance_variable_set(:@test_status, :pending)
|
119
|
+
testcase3.instance_variable_set(:@test_status, :fail)
|
120
|
+
test_suite_result.add_test_case( testcase1 )
|
121
|
+
test_suite_result.add_test_case( testcase2 )
|
122
|
+
test_suite_result.add_test_case( testcase3 )
|
123
|
+
expect( test_suite_result.failed? ).to be == true
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'can calculate the sum of all TestCase runtimes' do
|
127
|
+
testcase1.instance_variable_set(:@runtime, 1)
|
128
|
+
testcase2.instance_variable_set(:@runtime, 10)
|
129
|
+
testcase3.instance_variable_set(:@runtime, 100)
|
130
|
+
test_suite_result.add_test_case( testcase1 )
|
131
|
+
test_suite_result.add_test_case( testcase2 )
|
132
|
+
test_suite_result.add_test_case( testcase3 )
|
133
|
+
expect( test_suite_result.elapsed_time ).to be == 111
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
end
|
30
138
|
end
|
31
139
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-20 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -165,9 +165,9 @@ dependencies:
|
|
165
165
|
prerelease: false
|
166
166
|
requirement: &id017 !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - "="
|
169
169
|
- !ruby/object:Gem::Version
|
170
|
-
version:
|
170
|
+
version: 1.42.0
|
171
171
|
type: :runtime
|
172
172
|
version_requirements: *id017
|
173
173
|
- !ruby/object:Gem::Dependency
|
@@ -272,6 +272,7 @@ files:
|
|
272
272
|
- lib/beaker/hypervisor/vcloud_pooled.rb
|
273
273
|
- lib/beaker/hypervisor/vsphere.rb
|
274
274
|
- lib/beaker/hypervisor/vsphere_helper.rb
|
275
|
+
- lib/beaker/junit.xsl
|
275
276
|
- lib/beaker/logger.rb
|
276
277
|
- lib/beaker/network_manager.rb
|
277
278
|
- lib/beaker/options.rb
|
@@ -290,6 +291,8 @@ files:
|
|
290
291
|
- lib/beaker/shared/repetition.rb
|
291
292
|
- lib/beaker/shared/timed.rb
|
292
293
|
- lib/beaker/ssh_connection.rb
|
294
|
+
- lib/beaker/tasks/rake_task.rb
|
295
|
+
- lib/beaker/tasks/test.rb
|
293
296
|
- lib/beaker/test_case.rb
|
294
297
|
- lib/beaker/test_suite.rb
|
295
298
|
- lib/beaker/version.rb
|
@@ -303,6 +306,7 @@ files:
|
|
303
306
|
- spec/beaker/dsl/roles_spec.rb
|
304
307
|
- spec/beaker/dsl/structure_spec.rb
|
305
308
|
- spec/beaker/dsl/wrappers_spec.rb
|
309
|
+
- spec/beaker/host/unix/pkg_spec.rb
|
306
310
|
- spec/beaker/host/windows/group_spec.rb
|
307
311
|
- spec/beaker/host_prebuilt_steps_spec.rb
|
308
312
|
- spec/beaker/host_spec.rb
|
@@ -381,6 +385,7 @@ test_files:
|
|
381
385
|
- spec/beaker/dsl/roles_spec.rb
|
382
386
|
- spec/beaker/dsl/structure_spec.rb
|
383
387
|
- spec/beaker/dsl/wrappers_spec.rb
|
388
|
+
- spec/beaker/host/unix/pkg_spec.rb
|
384
389
|
- spec/beaker/host/windows/group_spec.rb
|
385
390
|
- spec/beaker/host_prebuilt_steps_spec.rb
|
386
391
|
- spec/beaker/host_spec.rb
|