beaker 1.21.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -0
  4. data/CONTRIBUTING.md +1 -0
  5. data/HISTORY.md +17288 -2
  6. data/Rakefile +6 -2
  7. data/beaker.gemspec +15 -19
  8. data/lib/beaker.rb +2 -5
  9. data/lib/beaker/answers.rb +2 -0
  10. data/lib/beaker/answers/version34.rb +37 -1
  11. data/lib/beaker/cli.rb +4 -0
  12. data/lib/beaker/command.rb +16 -84
  13. data/lib/beaker/command_factory.rb +13 -2
  14. data/lib/beaker/dsl/assertions.rb +25 -2
  15. data/lib/beaker/dsl/ezbake_utils.rb +2 -2
  16. data/lib/beaker/dsl/helpers.rb +66 -12
  17. data/lib/beaker/dsl/install_utils.rb +128 -66
  18. data/lib/beaker/dsl/wrappers.rb +41 -3
  19. data/lib/beaker/host.rb +42 -6
  20. data/lib/beaker/host/mac.rb +62 -0
  21. data/lib/beaker/host/mac/group.rb +96 -0
  22. data/lib/beaker/host/mac/user.rb +93 -0
  23. data/lib/beaker/host/unix/exec.rb +1 -1
  24. data/lib/beaker/host/unix/pkg.rb +11 -11
  25. data/lib/beaker/host/windows.rb +4 -4
  26. data/lib/beaker/host_prebuilt_steps.rb +194 -58
  27. data/lib/beaker/hypervisor.rb +16 -9
  28. data/lib/beaker/hypervisor/aws_sdk.rb +61 -17
  29. data/lib/beaker/hypervisor/docker.rb +14 -2
  30. data/lib/beaker/hypervisor/ec2_helper.rb +15 -3
  31. data/lib/beaker/hypervisor/vagrant.rb +22 -10
  32. data/lib/beaker/hypervisor/vagrant_libvirt.rb +11 -0
  33. data/lib/beaker/hypervisor/vagrant_virtualbox.rb +1 -1
  34. data/lib/beaker/hypervisor/vcloud_pooled.rb +8 -39
  35. data/lib/beaker/logger.rb +15 -9
  36. data/lib/beaker/network_manager.rb +2 -2
  37. data/lib/beaker/options/command_line_parser.rb +1 -1
  38. data/lib/beaker/options/parser.rb +1 -8
  39. data/lib/beaker/options/presets.rb +70 -45
  40. data/lib/beaker/perf.rb +3 -4
  41. data/lib/beaker/platform.rb +2 -1
  42. data/lib/beaker/result.rb +3 -9
  43. data/lib/beaker/ssh_connection.rb +2 -0
  44. data/lib/beaker/test_case.rb +2 -21
  45. data/lib/beaker/test_suite.rb +21 -25
  46. data/lib/beaker/version.rb +1 -1
  47. data/spec/beaker/answers_spec.rb +36 -0
  48. data/spec/beaker/cli_spec.rb +45 -45
  49. data/spec/beaker/command_spec.rb +25 -36
  50. data/spec/beaker/dsl/assertions_spec.rb +20 -27
  51. data/spec/beaker/dsl/ezbake_utils_spec.rb +5 -5
  52. data/spec/beaker/dsl/helpers_spec.rb +293 -208
  53. data/spec/beaker/dsl/install_utils_spec.rb +310 -189
  54. data/spec/beaker/dsl/outcomes_spec.rb +6 -6
  55. data/spec/beaker/dsl/roles_spec.rb +27 -18
  56. data/spec/beaker/dsl/structure_spec.rb +11 -11
  57. data/spec/beaker/dsl/wrappers_spec.rb +35 -11
  58. data/spec/beaker/host/mac/group_spec.rb +124 -0
  59. data/spec/beaker/host/mac/user_spec.rb +134 -0
  60. data/spec/beaker/host/unix/pkg_spec.rb +40 -24
  61. data/spec/beaker/host/windows/group_spec.rb +1 -1
  62. data/spec/beaker/host_prebuilt_steps_spec.rb +194 -68
  63. data/spec/beaker/host_spec.rb +145 -67
  64. data/spec/beaker/hypervisor/aixer_spec.rb +6 -6
  65. data/spec/beaker/hypervisor/aws_sdk_spec.rb +22 -7
  66. data/spec/beaker/hypervisor/docker_spec.rb +71 -50
  67. data/spec/beaker/hypervisor/ec2_helper_spec.rb +25 -4
  68. data/spec/beaker/hypervisor/fusion_spec.rb +2 -2
  69. data/spec/beaker/hypervisor/hypervisor_spec.rb +20 -27
  70. data/spec/beaker/hypervisor/hypervisor_spec.rb.orig +80 -0
  71. data/spec/beaker/hypervisor/solaris_spec.rb +8 -8
  72. data/spec/beaker/hypervisor/vagrant_fusion_spec.rb +6 -8
  73. data/spec/beaker/hypervisor/vagrant_libvirt_spec.rb +34 -0
  74. data/spec/beaker/hypervisor/vagrant_spec.rb +34 -33
  75. data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +18 -8
  76. data/spec/beaker/hypervisor/vagrant_workstation_spec.rb +6 -8
  77. data/spec/beaker/hypervisor/vcloud_pooled_spec.rb +8 -8
  78. data/spec/beaker/hypervisor/vcloud_spec.rb +10 -10
  79. data/spec/beaker/hypervisor/vsphere_helper_spec.rb +8 -8
  80. data/spec/beaker/hypervisor/vsphere_spec.rb +1 -1
  81. data/spec/beaker/logger_spec.rb +45 -31
  82. data/spec/beaker/options/command_line_parser_spec.rb +10 -2
  83. data/spec/beaker/options/hosts_file_parser_spec.rb +9 -2
  84. data/spec/beaker/options/options_hash_spec.rb +2 -2
  85. data/spec/beaker/options/parser_spec.rb +2 -2
  86. data/spec/beaker/options/pe_version_scaper_spec.rb +6 -1
  87. data/spec/beaker/options/presets_spec.rb +11 -1
  88. data/spec/beaker/shared/error_handler_spec.rb +5 -5
  89. data/spec/beaker/shared/host_manager_spec.rb +3 -2
  90. data/spec/beaker/shared/repetition_spec.rb +18 -18
  91. data/spec/beaker/ssh_connection_spec.rb +33 -4
  92. data/spec/beaker/test_case_spec.rb +9 -9
  93. data/spec/beaker/test_suite_spec.rb +14 -14
  94. data/spec/helpers.rb +4 -4
  95. data/spec/matchers.rb +4 -4
  96. data/spec/mocks.rb +5 -1
  97. data/spec/spec_helper.rb +2 -8
  98. metadata +114 -80
  99. data/lib/beaker/hypervisor/blimper.rb +0 -108
  100. data/spec/beaker/hypervisor/blimper_spec.rb +0 -42
  101. data/spec/beaker/options/data/LATEST +0 -1
  102. data/spec/beaker/puppet_command_spec.rb +0 -161
  103. data/spec/mock_blimpy.rb +0 -48
@@ -6,14 +6,14 @@ module Beaker
6
6
  before :each do
7
7
  MockVsphereHelper.set_config( fog_file_contents )
8
8
  MockVsphereHelper.set_vms( make_hosts() )
9
- stub_const( "VsphereHelper", MockVsphereHelper )
10
- stub_const( "Net", MockNet )
11
- json = mock( 'json' )
12
- json.stub( :parse ) do |arg|
9
+ stub_const( "VsphereHelper", MockVsphereHelper )
10
+ stub_const( "Net", MockNet )
11
+ json = double( 'json' )
12
+ allow( json ).to receive( :parse ) do |arg|
13
13
  arg
14
14
  end
15
- stub_const( "JSON", json )
16
- Socket.stub( :getaddrinfo ).and_return( true )
15
+ stub_const( "JSON", json )
16
+ allow( Socket ).to receive( :getaddrinfo ).and_return( true )
17
17
  end
18
18
 
19
19
  describe "#provision" do
@@ -25,8 +25,8 @@ module Beaker
25
25
  opts[:pooling_api] = nil
26
26
 
27
27
  vcloud = Beaker::Vcloud.new( make_hosts, opts )
28
- vcloud.stub( :require ).and_return( true )
29
- vcloud.stub( :sleep ).and_return( true )
28
+ allow( vcloud ).to receive( :require ).and_return( true )
29
+ allow( vcloud ).to receive( :sleep ).and_return( true )
30
30
  vcloud.provision
31
31
 
32
32
  hosts = vcloud.instance_variable_get( :@hosts )
@@ -49,8 +49,8 @@ module Beaker
49
49
  opts[:pooling_api] = nil
50
50
 
51
51
  vcloud = Beaker::Vcloud.new( make_hosts, opts )
52
- vcloud.stub( :require ).and_return( true )
53
- vcloud.stub( :sleep ).and_return( true )
52
+ allow( vcloud ).to receive( :require ).and_return( true )
53
+ allow( vcloud ).to receive( :sleep ).and_return( true )
54
54
  vcloud.provision
55
55
  vcloud.cleanup
56
56
 
@@ -18,21 +18,21 @@ module Beaker
18
18
 
19
19
 
20
20
  before :each do
21
- stub_const( "RbVmomi", MockRbVmomi )
21
+ stub_const( "RbVmomi", MockRbVmomi )
22
22
  end
23
23
 
24
24
  describe "#load_config" do
25
25
 
26
26
  it 'can load a .fog file' do
27
- File.stub( :exists? ).and_return( true )
28
- YAML.stub( :load_file ).and_return( fog_file_contents )
27
+ allow( File ).to receive( :exists? ).and_return( true )
28
+ allow( YAML ).to receive( :load_file ).and_return( fog_file_contents )
29
29
 
30
30
  expect( VsphereHelper.load_config ).to be === vInfo
31
31
 
32
32
  end
33
33
 
34
34
  it 'raises an error when the .fog file is missing' do
35
- File.stub( :exists? ).and_return( false )
35
+ allow( File ).to receive( :exists? ).and_return( false )
36
36
 
37
37
  expect{ VsphereHelper.load_config }.to raise_error( ArgumentError )
38
38
 
@@ -121,7 +121,7 @@ module Beaker
121
121
 
122
122
  describe "#wait_for_tasks" do
123
123
  it "can wait for tasks to error" do
124
- vsphere_helper.stub( :sleep ).and_return( true )
124
+ allow( vsphere_helper ).to receive( :sleep ).and_return( true )
125
125
  vms.each do |vm|
126
126
  vm.info.state = 'error'
127
127
  end
@@ -130,7 +130,7 @@ module Beaker
130
130
  end
131
131
 
132
132
  it "can wait for tasks to succeed" do
133
- vsphere_helper.stub( :sleep ).and_return( true )
133
+ allow( vsphere_helper ).to receive( :sleep ).and_return( true )
134
134
  vms.each do |vm|
135
135
  vm.info.state = 'success'
136
136
  end
@@ -139,7 +139,7 @@ module Beaker
139
139
  end
140
140
 
141
141
  it "errors when tasks fail to error/success before timing out" do
142
- vsphere_helper.stub( :sleep ).and_return( true )
142
+ allow( vsphere_helper ).to receive( :sleep ).and_return( true )
143
143
  vms.each do |vm|
144
144
  vm.info.state = 'nope'
145
145
  end
@@ -152,7 +152,7 @@ module Beaker
152
152
  describe "#close" do
153
153
  it 'closes the connection' do
154
154
  connection = vsphere_helper.instance_variable_get( :@connection )
155
- connection.should_receive( :close ).once
155
+ expect( connection ).to receive( :close ).once
156
156
 
157
157
  vsphere_helper.close
158
158
  end
@@ -6,7 +6,7 @@ module Beaker
6
6
  before :each do
7
7
  MockVsphereHelper.set_config( fog_file_contents )
8
8
  MockVsphereHelper.set_vms( make_hosts() )
9
- stub_const( "VsphereHelper", MockVsphereHelper )
9
+ stub_const( "VsphereHelper", MockVsphereHelper )
10
10
  end
11
11
 
12
12
  describe "#provision" do
@@ -2,10 +2,10 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  module Beaker
5
- describe Logger, :use_fakefs => true do
6
- let(:my_io) { MockIO.new }
7
- let(:logger) { Logger.new(my_io, :quiet => true) }
8
-
5
+ describe Logger do
6
+ let(:my_io) { MockIO.new }
7
+ let(:logger) { Logger.new(my_io, :quiet => true) }
8
+ let(:test_dir) { 'tmp/tests' }
9
9
 
10
10
  context '#convert' do
11
11
  let(:valid_utf8) { "/etc/puppet/modules\n├── jimmy-appleseed (\e[0;36mv1.1.0\e[0m)\n├── jimmy-crakorn (\e[0;36mv0.4.0\e[0m)\n└── jimmy-thelock (\e[0;36mv1.0.0\e[0m)\n" }
@@ -24,10 +24,24 @@ module Beaker
24
24
  end
25
25
  end
26
26
 
27
+ context '#generate_dated_log_folder' do
28
+
29
+ it 'generates path for a given timestamp' do
30
+ input_time = Time.new(2014, 6, 2, 16, 31, 22, '-07:00')
31
+ expect( Logger.generate_dated_log_folder(test_dir, input_time) ).to be === File.join(test_dir, '2014-06-02_16_31_22')
32
+ end
33
+
34
+ it 'generates directory for a given timestamp' do
35
+ input_time = Time.new(2011, 6, 10, 13, 7, 55, '-09:00')
36
+ expect( File.directory? Logger.generate_dated_log_folder(test_dir, input_time) ).to be_truthy
37
+ end
38
+
39
+ end
40
+
27
41
  context 'new' do
28
42
  it 'does not duplicate STDOUT when directly passed to it' do
29
43
  stdout_logger = Logger.new STDOUT
30
- expect( stdout_logger ).to have(1).destinations
44
+ expect( stdout_logger.destinations.size ).to be === 1
31
45
  end
32
46
 
33
47
 
@@ -42,7 +56,7 @@ module Beaker
42
56
  context 'it can' do
43
57
  it 'open/create a file when a string is given to add_destination' do
44
58
  logger.add_destination 'my_tmp_file'
45
- expect( File.exists?( 'my_tmp_file' ) ).to be_true
59
+ expect( File.exists?( 'my_tmp_file' ) ).to be_truthy
46
60
 
47
61
  io = logger.destinations.select {|d| d.respond_to? :path }.first
48
62
  expect( io.path ).to match /my_tmp_file/
@@ -65,9 +79,9 @@ module Beaker
65
79
  it 'colors strings if @color is set' do
66
80
  colorized_logger = Logger.new my_io, :color => true, :quiet => true
67
81
 
68
- my_io.should_receive( :print ).with "\e[00;30m"
69
- my_io.should_receive( :print )
70
- my_io.should_receive( :puts ).with 'my string'
82
+ expect( my_io ).to receive( :print ).with "\e[00;30m"
83
+ expect( my_io ).to receive( :print )
84
+ expect( my_io ).to receive( :puts ).with 'my string'
71
85
 
72
86
  colorized_logger.optionally_color "\e[00;30m", 'my string'
73
87
  end
@@ -79,14 +93,14 @@ module Beaker
79
93
  :color => true )
80
94
  }
81
95
 
82
- its( :is_debug? ) { should be_true }
83
- its( :is_trace? ) { should be_true }
84
- its( :is_warn? ) { should be_true }
96
+ its( :is_debug? ) { should be_truthy }
97
+ its( :is_trace? ) { should be_truthy }
98
+ its( :is_warn? ) { should be_truthy }
85
99
 
86
100
  context 'but print' do
87
101
  before do
88
- my_io.stub :puts
89
- my_io.should_receive( :print ).at_least :twice
102
+ allow( my_io ).to receive :puts
103
+ expect( my_io ).to receive( :print ).at_least :twice
90
104
  end
91
105
 
92
106
  it( 'warnings' ) { trace_logger.warn 'IMA WARNING!' }
@@ -105,15 +119,15 @@ module Beaker
105
119
  :color => true )
106
120
  }
107
121
 
108
- its( :is_trace? ) { should be_false }
109
- its( :is_debug? ) { should be_false }
110
- its( :is_verbose? ) { should be_true }
111
- its( :is_warn? ) { should be_true }
122
+ its( :is_trace? ) { should be_falsy }
123
+ its( :is_debug? ) { should be_falsy }
124
+ its( :is_verbose? ) { should be_truthy }
125
+ its( :is_warn? ) { should be_truthy }
112
126
 
113
127
  context 'but print' do
114
128
  before do
115
- my_io.stub :puts
116
- my_io.should_receive( :print ).at_least :twice
129
+ allow( my_io ).to receive :puts
130
+ expect( my_io ).to receive( :print ).at_least :twice
117
131
  end
118
132
 
119
133
  it( 'warnings' ) { verbose_logger.warn 'IMA WARNING!' }
@@ -131,14 +145,14 @@ module Beaker
131
145
  :color => true )
132
146
  }
133
147
 
134
- its( :is_trace? ) { should be_false }
135
- its( :is_debug? ) { should be_true }
136
- its( :is_warn? ) { should be_true }
148
+ its( :is_trace? ) { should be_falsy }
149
+ its( :is_debug? ) { should be_truthy }
150
+ its( :is_warn? ) { should be_truthy }
137
151
 
138
152
  context 'successfully print' do
139
153
  before do
140
- my_io.stub :puts
141
- my_io.should_receive( :print ).at_least :twice
154
+ allow( my_io ).to receive :puts
155
+ expect( my_io ).to receive( :print ).at_least :twice
142
156
  end
143
157
 
144
158
  it( 'warnings' ) { debug_logger.warn 'IMA WARNING!' }
@@ -156,14 +170,14 @@ module Beaker
156
170
  :color => true )
157
171
  }
158
172
 
159
- its( :is_debug? ) { should be_false }
160
- its( :is_trace? ) { should be_false }
173
+ its( :is_debug? ) { should be_falsy }
174
+ its( :is_trace? ) { should be_falsy }
161
175
 
162
176
 
163
177
  context 'skip' do
164
178
  before do
165
- my_io.should_not_receive :puts
166
- my_io.should_not_receive :print
179
+ expect( my_io ).to_not receive :puts
180
+ expect( my_io ).to_not receive :print
167
181
  end
168
182
 
169
183
  it( 'debugs' ) { info_logger.debug 'NOT DEBUGGING!' }
@@ -173,8 +187,8 @@ module Beaker
173
187
 
174
188
  context 'but print' do
175
189
  before do
176
- my_io.should_receive :puts
177
- my_io.should_receive( :print ).twice
190
+ expect( my_io ).to receive :puts
191
+ expect( my_io ).to receive( :print ).twice
178
192
  end
179
193
 
180
194
  it( 'successes' ) { info_logger.success 'SUCCESS!' }
@@ -6,14 +6,22 @@ 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", "--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"]}
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", "--collect-perf-data", "--parse-only", "--validate", "--timeout", "40"]}
10
+ let(:validate_true) {["--validate"]}
11
+ let(:validate_false) {["--no-validate"]}
12
+
10
13
 
11
14
  it "can correctly read command line input" do
12
15
  expect(parser.parse(test_opts)).to be === {:hosts_file=>"vcloud.cfg", :log_level=>"debug", :tests=>"test.rb", :help=>true}
13
16
  end
14
17
 
15
18
  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, :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"}
19
+ 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", :collect_perf_data=>true, :parse_only=>true, :validate=>true, :timeout=>"40"}
20
+ end
21
+
22
+ it "supports both validate options" do
23
+ expect(parser.parse(validate_true)).to be === {:validate=>true}
24
+ expect(parser.parse(validate_false)).to be === {:validate=>false}
17
25
  end
18
26
 
19
27
  it "can produce a usage description" do
@@ -4,8 +4,8 @@ module Beaker
4
4
  module Options
5
5
  describe HostsFileParser do
6
6
 
7
- let(:parser) {HostsFileParser}
8
- let(:filepath) {File.join(File.expand_path(File.dirname(__FILE__)), "data", "hosts.cfg")}
7
+ let(:parser) {HostsFileParser}
8
+ let(:filepath) {File.join(File.expand_path(File.dirname(__FILE__)), "data", "hosts.cfg")}
9
9
 
10
10
  it "can correctly read a host file" do
11
11
  FakeFS.deactivate!
@@ -30,6 +30,13 @@ module Beaker
30
30
  expect{parser.parse_hosts_file("not a valid path")}.to raise_error(ArgumentError)
31
31
  end
32
32
 
33
+ it "raises an error on bad yaml file" do
34
+ FakeFS.deactivate!
35
+ allow( YAML ).to receive(:load_file) { raise Psych::SyntaxError }
36
+ allow( File ).to receive(:exists?).and_return(true)
37
+ expect { parser.parse_hosts_file("not a valid path") }.to raise_error(ArgumentError)
38
+ end
39
+
33
40
  end
34
41
  end
35
42
  end
@@ -17,12 +17,12 @@ module Beaker
17
17
  end
18
18
 
19
19
  it "supports is_pe?, defaults to pe" do
20
- expect(options.is_pe?).to be_true
20
+ expect(options.is_pe?).to be_truthy
21
21
  end
22
22
 
23
23
  it "supports is_pe?, respects :type == foss" do
24
24
  options[:type] = 'foss'
25
- expect(options.is_pe?).to be_false
25
+ expect(options.is_pe?).to be_falsy
26
26
  end
27
27
 
28
28
  it "can delete by string of symbol key" do
@@ -50,7 +50,7 @@ module Beaker
50
50
  end
51
51
  end
52
52
 
53
- context 'testing path traversing', :use_fakefs => true do
53
+ context 'testing path traversing' do
54
54
 
55
55
  let(:test_dir) { 'tmp/tests' }
56
56
  let(:rb_test) { File.expand_path(test_dir + '/my_ruby_file.rb') }
@@ -76,7 +76,7 @@ module Beaker
76
76
  end
77
77
  end
78
78
 
79
- context 'combining split_arg and file_list maintain test file ordering', :use_fakefs => true do
79
+ context 'combining split_arg and file_list maintain test file ordering' do
80
80
  let(:test_dir) { 'tmp/tests' }
81
81
  let(:other_test_dir) {'tmp/tests2' }
82
82
 
@@ -4,7 +4,12 @@ module Beaker
4
4
  module Options
5
5
  describe PEVersionScraper do
6
6
  it "can pull version from local LATEST file" do
7
- expect(PEVersionScraper.load_pe_version(File.expand_path(File.dirname(__FILE__)), "data/LATEST")) === '3.0.0'
7
+ filename = 'LATEST'
8
+ latest = File.open(filename, 'w')
9
+ latest.write('3.7.1-rc0-8-g73f93cb')
10
+ latest.close
11
+ expect(PEVersionScraper.load_pe_version('.', filename)) === '3.0.0'
12
+ File.delete(filename)
8
13
  end
9
14
  it "raises error when file doesn't exist" do
10
15
  expect{PEVersionScraper.load_pe_version("not a valid path", "not a valid filename")}.to raise_error(ArgumentError)
@@ -30,8 +30,18 @@ module Beaker
30
30
  expect( munged[:type] ).to be == 'pe'
31
31
  end
32
32
  end
33
+ describe 'sets type to foss if...' do
34
+ it 'env var is set to "false"' do
35
+ munged = presets.format_found_env_vars( {:is_pe => 'true'} )
36
+ expect( munged[:type] ).to be == 'pe'
37
+ end
38
+ it 'env var is set to "no"' do
39
+ munged = presets.format_found_env_vars( {:is_pe => 'yes'} )
40
+ expect( munged[:type] ).to be == 'pe'
41
+ end
42
+ end
33
43
  it 'does not set type otherwise' do
34
- munged = presets.format_found_env_vars( {:is_pe => 'false'} )
44
+ munged = presets.format_found_env_vars( {:is_pe => nil} )
35
45
  expect( munged[:type] ).to be == nil
36
46
  end
37
47
  end
@@ -8,8 +8,8 @@ module Beaker
8
8
  let( :logger ) { double( 'logger' ) }
9
9
 
10
10
  before :each do
11
- logger.stub( :error ).and_return( true )
12
- logger.stub( :pretty_backtrace ).and_return( backtrace )
11
+ allow( logger ).to receive( :error ).and_return( true )
12
+ allow( logger ).to receive( :pretty_backtrace ).and_return( backtrace )
13
13
 
14
14
  end
15
15
 
@@ -17,14 +17,14 @@ module Beaker
17
17
 
18
18
  it "records the backtrace of the exception to the logger" do
19
19
  ex = Exception.new("ArgumentError")
20
- ex.stub( :backtrace ).and_return(backtrace)
20
+ allow( ex ).to receive( :backtrace ).and_return(backtrace)
21
21
  mesg = "I'm the extra message"
22
22
 
23
23
  backtrace.each_line do |line|
24
- logger.should_receive( :error ).with(line)
24
+ expect( logger ).to receive( :error ).with(line)
25
25
  end
26
26
 
27
- subject.should_receive( :raise ).once
27
+ expect( subject ).to receive( :raise ).once
28
28
 
29
29
  subject.report_and_raise(logger, ex, mesg)
30
30
 
@@ -62,7 +62,6 @@ module Beaker
62
62
  hosts
63
63
  end
64
64
  expect( myhosts ).to be === hosts[0]
65
-
66
65
  end
67
66
 
68
67
  it "can execute a block against hosts identified by a hostname" do
@@ -70,7 +69,6 @@ module Beaker
70
69
  hosts
71
70
  end
72
71
  expect( myhosts ).to be === hosts[0]
73
-
74
72
  end
75
73
 
76
74
  it "can execute a block against an array of hosts" do
@@ -78,7 +76,10 @@ module Beaker
78
76
  hosts
79
77
  end
80
78
  expect( myhosts ).to be === hosts
79
+ end
81
80
 
81
+ it "receives an ArgumentError on empty host" do
82
+ expect { host_handler.run_block_on( [], role0 ) }.to raise_error(ArgumentError)
82
83
  end
83
84
 
84
85
  end
@@ -6,10 +6,10 @@ module Beaker
6
6
 
7
7
  context 'repeat_for' do
8
8
  it "repeats a block for 5 seconds" do
9
- Time.stub( :now ).and_return( 0, 1, 2, 3, 4, 5, 6 )
9
+ allow( Time ).to receive( :now ).and_return( 0, 1, 2, 3, 4, 5, 6 )
10
10
 
11
11
  block = double( 'block' )
12
- block.should_receive( :exec ).exactly( 5 ).times.and_return( false )
12
+ expect( block ).to receive( :exec ).exactly( 5 ).times.and_return( false )
13
13
 
14
14
  subject.repeat_for( 5 ) do
15
15
  block.exec
@@ -17,10 +17,10 @@ module Beaker
17
17
  end
18
18
 
19
19
  it "should short circuit if the block is complete" do
20
- Time.stub( :now ).and_return( 0, 1, 2, 3, 4, 5 )
20
+ allow( Time ).to receive( :now ).and_return( 0, 1, 2, 3, 4, 5 )
21
21
 
22
22
  block = double( 'block' )
23
- block.should_receive( :exec ).once.and_return( true )
23
+ expect( block ).to receive( :exec ).once.and_return( true )
24
24
 
25
25
  subject.repeat_for( 5 ) do
26
26
  block.exec
@@ -34,13 +34,13 @@ module Beaker
34
34
  it "sleeps in fibonacci increasing intervals" do
35
35
 
36
36
  block = double( 'block' )
37
- block.should_receive( :exec ).exactly( 5 ).times.and_return( false )
38
- subject.stub( 'sleep' ).and_return( true )
39
- subject.should_receive( :sleep ).with( 1 ).exactly( 2 ).times
40
- subject.should_receive( :sleep ).with( 2 ).once
41
- subject.should_receive( :sleep ).with( 3 ).once
42
- subject.should_receive( :sleep ).with( 5 ).once
43
- subject.should_receive( :sleep ).with( 8 ).never
37
+ expect( block ).to receive( :exec ).exactly( 5 ).times.and_return( false )
38
+ allow( subject ).to receive( 'sleep' ).and_return( true )
39
+ expect( subject ).to receive( :sleep ).with( 1 ).exactly( 2 ).times
40
+ expect( subject ).to receive( :sleep ).with( 2 ).once
41
+ expect( subject ).to receive( :sleep ).with( 3 ).once
42
+ expect( subject ).to receive( :sleep ).with( 5 ).once
43
+ expect( subject ).to receive( :sleep ).with( 8 ).never
44
44
 
45
45
  subject.repeat_fibonacci_style_for( 5 ) do
46
46
  block.exec
@@ -51,13 +51,13 @@ module Beaker
51
51
  it "should short circuit if the block is complete" do
52
52
 
53
53
  block = double( 'block' )
54
- block.should_receive( :exec ).once.and_return( true )
55
- subject.stub( 'sleep' ).and_return( true )
56
- subject.should_receive( :sleep ).with( 1 ).once
57
- subject.should_receive( :sleep ).with( 2 ).never
58
- subject.should_receive( :sleep ).with( 3 ).never
59
- subject.should_receive( :sleep ).with( 5 ).never
60
- subject.should_receive( :sleep ).with( 8 ).never
54
+ expect( block ).to receive( :exec ).once.and_return( true )
55
+ allow( subject ).to receive( 'sleep' ).and_return( true )
56
+ expect( subject ).to receive( :sleep ).with( 1 ).once
57
+ expect( subject ).to receive( :sleep ).with( 2 ).never
58
+ expect( subject ).to receive( :sleep ).with( 3 ).never
59
+ expect( subject ).to receive( :sleep ).with( 5 ).never
60
+ expect( subject ).to receive( :sleep ).with( 8 ).never
61
61
 
62
62
  subject.repeat_fibonacci_style_for( 5 ) do
63
63
  block.exec