beaker 3.7.0 → 3.8.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmUyMTFlZTE2NmY5N2U0NTEzNzc1ZDVmNjBjYzY1OWI5NWRmOTc5Yg==
4
+ N2JkMGY5N2Y2NGU1YWU2NmZhZTJhZjdkNDkyMGZkODk2N2ExMGE2MA==
5
5
  data.tar.gz: !binary |-
6
- NjllMDQyODRjZjM2YTZiM2ZiMmM5ZTc4NWJkZTliNjliMGI4ZmU0Mw==
6
+ YzY5ZGQ4NjQ4YzNlOWE0NDk5ZDRkMWMwMWU0ZGE0MzgwODYxZDFiZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGNiNTg1MWQzZTIwNmNhMGQwNmNmMzlkNWRlNjU5OTRlMzBmMmYzMGRkMDkz
10
- NDMzZTRmNzk1ZTdhMmVhZTg5ODIwOTg4NmMwZTJlZDUyOTMxNDcwZmE3MjJi
11
- YWU1NzVhMjRlZDA3ZTcwYTdkMDJhYTBmM2UzNGI5NjBjODY3ZjM=
9
+ MDdmMjA2ZWFlZTkyMGI2YjMwZTIzM2ZhNGQwZWZiMzEwMGU0OGZkMDliNTJi
10
+ MTYyNGM0OGMxYjdkNDBkOTdmZmI4NWY0MzdhYTJkMDFlNzFlMDhlMDdkMDc0
11
+ NjczMjkyM2U2MzFhNTQ5NjdmMjc5M2NiMmE3MTBiMDc0OWM0YTM=
12
12
  data.tar.gz: !binary |-
13
- OGVjNmEzMjQ0OWYwM2M0NDk2NWEzY2Q4N2ZhMGUxNmYxOGNhNGVjMmYyYTdj
14
- Nzg4ZGFjZmRiMTIzYTZlYjVlZmY2ZTdkNTU4NjM2Yjk3Zjc4OTQ0ZTc0YTdl
15
- NWUwYjc0NTZhNTg4NTdkZTMyNmQ4ZmJlMThmODFhNmIwYWQ3OWM=
13
+ ZjgwMTliODVjYjFmYjk3M2MzMWFkYzhmMDRmYmFlMGExNWE3MDMwMTM3MmYy
14
+ MDQ5ZTcwYmY1ZWE2NzhkNjEzZDUxOGEzMTMzNjczYjIwNmY0YjM5ZDkyZDE2
15
+ ZjQ5N2VhN2ZjMmVkMGNjOWJiNTUxNmM5YjA4MzUzY2UzMDFmNTQ=
@@ -1,7 +1,9 @@
1
1
  # the version is required on windows
2
2
  # all versions are required for osx
3
3
  install_puppet({
4
- :version => '3.8.7',
5
- :facter_version => '2.1.0',
6
- :hiera_version => '1.3.4',
4
+ :version => ENV['BEAKER_PUPPET_VERSION'] || '4.8.0',
5
+ :puppet_agent_version => ENV['BEAKER_PUPPET_AGENT_VERSION'] || '1.8.0'
7
6
  })
7
+
8
+ on(master, puppet('resource user puppet ensure=present'))
9
+ on(master, puppet('resource group puppet ensure=present'))
@@ -1,30 +1,26 @@
1
- test_name 'with_puppet_running_on' do
2
-
3
- with_puppet_running_on(master, {}) do
4
- puppet_service = master['puppetservice']
5
- on(master, puppet("resource service #{puppet_service}")).stdout do |result|
6
- assert_match(/running/,result,'did not find puppet service/master running')
1
+ test_name 'skip_test in with_puppet_running_on' do
2
+ assert_raises SkipTest do
3
+ with_puppet_running_on(master, {}) do
4
+ skip_test 'skip rest'
5
+ assert(false)
7
6
  end
8
7
  end
9
-
10
8
  end
11
9
 
12
- test_name 'skip_test in with_puppet_running_on' do
13
-
14
- with_puppet_running_on(master, {}) do
15
- skip_test 'skip rest'
16
- assert(false)
10
+ test_name 'pending_test in with_puppet_running_on' do
11
+ assert_raises PendingTest do
12
+ with_puppet_running_on(master, {}) do
13
+ pending_test 'pending appendix prepended'
14
+ assert(false)
15
+ end
17
16
  end
18
-
19
17
  end
20
18
 
21
- test_name 'pending_test in with_puppet_running_on' do
22
-
23
- with_puppet_running_on(master, {}) do
24
- pending_test 'pending appendix prepended'
25
- assert(false)
19
+ test_name 'fail_test in with_puppet_running_on' do
20
+ assert_raises FailTest do
21
+ with_puppet_running_on(master, {}) do
22
+ fail_test 'fail_test message'
23
+ assert(false)
24
+ end
26
25
  end
27
-
28
26
  end
29
-
30
- # TODO: no idea how to test fail_test in here
data/beaker.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.add_development_dependency 'pry', '~> 0.10'
29
29
 
30
30
  # Documentation dependencies
31
- s.add_development_dependency 'yard'
31
+ s.add_development_dependency 'yard', '< 0.9.6'
32
32
 
33
33
  # Run time dependencies
34
34
  s.add_runtime_dependency 'minitest', '~> 5.4'
@@ -46,6 +46,7 @@ Gem::Specification.new do |s|
46
46
  s.add_runtime_dependency 'rsync', '~> 1.0.9'
47
47
  s.add_runtime_dependency 'open_uri_redirections', '~> 0.2.1'
48
48
  s.add_runtime_dependency 'in-parallel', '~> 0.1'
49
+ s.add_runtime_dependency 'thor', '0.19.1'
49
50
 
50
51
  # Run time dependencies that are Beaker libraries
51
52
  s.add_runtime_dependency 'stringify-hash', '~> 0.0'
data/bin/beaker CHANGED
@@ -3,7 +3,11 @@
3
3
  require 'rubygems' unless defined?(Gem)
4
4
  require 'beaker'
5
5
 
6
- Beaker::CLI.new.execute!
7
- puts "Beaker completed successfully, thanks."
6
+ if Beaker::Subcommands::SubcommandUtil.execute_subcommand?(ARGV[0])
7
+ Beaker::Subcommand.start(ARGV)
8
+ else
9
+ Beaker::CLI.new.execute!
10
+ puts "Beaker completed successfully, thanks."
11
+ end
8
12
 
9
13
  exit 0
data/lib/beaker.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'rubygems' unless defined?(Gem)
2
2
  module Beaker
3
3
 
4
- %w( version platform test_suite result command options network_manager cli perf logger_junit ).each do |lib|
4
+ %w( version platform test_suite result command options network_manager cli perf logger_junit subcommand ).each do |lib|
5
5
  begin
6
6
  require "beaker/#{lib}"
7
7
  rescue LoadError
data/lib/beaker/cli.rb CHANGED
@@ -27,19 +27,16 @@ module Beaker
27
27
  @execute = false
28
28
  return
29
29
  end
30
+
30
31
  if @options[:beaker_version_print]
31
32
  @logger.notify(beaker_version_string)
32
33
  @execute = false
33
34
  return
34
35
  end
35
36
 
36
- if Beaker::Shared::SubcommandsUtil::write_config?
37
- @options.dump_to_file(Beaker::Shared::SubcommandsUtil::CONFIG_PATH)
38
- else
39
- @logger.info("Beaker!")
40
- @logger.info(beaker_version_string)
41
- @logger.info(@options.dump)
42
- end
37
+ @logger.info("Beaker!")
38
+ @logger.info(beaker_version_string)
39
+ @logger.info(@options.dump)
43
40
 
44
41
  if @options[:parse_only]
45
42
  @execute = false
@@ -336,7 +336,16 @@ module Beaker
336
336
  host.exec(Command.new('cp -r .ssh /cygdrive/c/Users/Administrator/.'))
337
337
  host.exec(Command.new('chown -R Administrator /cygdrive/c/Users/Administrator/.ssh'))
338
338
  elsif host['platform'] =~ /windows/ and not host.is_cygwin?
339
- host.exec(Command.new("if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e)"))
339
+ # from https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true:
340
+ # /i : If Source is a directory or contains wildcards and Destination
341
+ # does not exist, xcopy assumes destination specifies a directory
342
+ # name and creates a new directory. Then, xcopy copies all specified
343
+ # files into the new directory. By default, xcopy prompts you to
344
+ # specify whether Destination is a file or a directory.
345
+ #
346
+ # /y : Suppresses prompting to confirm that you want to overwrite an
347
+ # existing destination file.
348
+ host.exec(Command.new("if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e /y /i)"))
340
349
  elsif host['platform'] =~ /osx/
341
350
  host.exec(Command.new('sudo cp -r .ssh /var/root/.'), {:pty => true})
342
351
  elsif host['platform'] =~ /freebsd/
data/lib/beaker/shared.rb CHANGED
@@ -1,4 +1,4 @@
1
- [ 'repetition', 'error_handler', 'host_manager', 'timed', 'semvar', 'options_resolver', 'subcommands_util' ].each do |lib|
1
+ [ 'repetition', 'error_handler', 'host_manager', 'timed', 'semvar', 'options_resolver'].each do |lib|
2
2
  require "beaker/shared/#{lib}"
3
3
  end
4
4
  module Beaker
@@ -9,7 +9,6 @@ module Beaker
9
9
  include Beaker::Shared::Timed
10
10
  include Beaker::Shared::Semvar
11
11
  include Beaker::Shared::OptionsResolver
12
- include Beaker::Shared::SubcommandsUtil
13
12
  end
14
13
  end
15
14
  include Beaker::Shared
@@ -0,0 +1,20 @@
1
+ require "thor"
2
+ require "fileutils"
3
+ require "beaker/subcommands/subcommand_util"
4
+
5
+ module Beaker
6
+ class Subcommand < Thor
7
+ SubcommandUtil = Beaker::Subcommands::SubcommandUtil
8
+
9
+ desc "init", "Initialises the beaker test environment configuration"
10
+ option :hypervisor, :type => :string, :required => true
11
+ long_desc <<-LONGDESC
12
+ Initialises a beaker environment configuration
13
+ LONGDESC
14
+ def init()
15
+ SubcommandUtil.verify_init_args(options)
16
+ SubcommandUtil.require_tasks()
17
+ SubcommandUtil.init_hypervisor(options)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,114 @@
1
+ require 'rake'
2
+
3
+ module Beaker
4
+ module Subcommands
5
+ # Methods used in execution of Subcommands
6
+ # - should we execute a subcommand?
7
+ # - reset ARGV
8
+ # - execute Beaker
9
+ # - update a rakefile to require beaker quickstart tasks
10
+ # - initialise a rake application
11
+ # - execute a rake task
12
+ # - execute the vagrant quickstart task
13
+ # - execute the vmpooler quickstart task
14
+ # - exit with a specific message
15
+ # - verify that the init subcommand has the correct arguments
16
+ # - execute the quick start task for the specified hypervisor
17
+ module SubcommandUtil
18
+ BEAKER_REQUIRE = "require 'beaker/tasks/quick_start'"
19
+ HYPERVISORS = ["vagrant", "vmpooler"]
20
+
21
+ # Check if the first argument to the beaker execution is a subcommand
22
+ # @return [Boolean] true if argv[0] is "help" or a method defined in the Subcommands class, false otherwise
23
+ def self.execute_subcommand?(arg0)
24
+ return false if arg0.nil?
25
+ (Beaker::Subcommand.instance_methods(false) << :help).include? arg0.to_sym
26
+ end
27
+
28
+ # Reset ARGV to contain the arguments determined by a specific subcommand
29
+ # @param [Array<String>] args the arguments determined by a specific subcommand
30
+ def self.reset_argv(args)
31
+ ARGV.clear
32
+ args.each do |arg|
33
+ ARGV << arg
34
+ end
35
+ end
36
+
37
+ # Update ARGV and call Beaker
38
+ # @param [Array<String>] args the arguments determined by a specific subcommand
39
+ def self.execute_beaker(*args)
40
+ reset_argv(args)
41
+ Beaker::CLI.new.execute!
42
+ end
43
+
44
+ # Determines what Rakefile to use
45
+ # @return [String] the name of the rakefile to use
46
+ def self.determine_rake_file()
47
+ rake_app.find_rakefile_location() ? rake_app.find_rakefile_location()[0] : "Rakefile"
48
+ end
49
+
50
+ # Check for the presence of a Rakefile containing the require of the
51
+ # quick start tasks
52
+ def self.require_tasks()
53
+ rake_file = determine_rake_file()
54
+ unless File.readlines(rake_file).grep(/#{BEAKER_REQUIRE}/).any?
55
+ File.open(rake_file, "a+") { |f| f.puts(BEAKER_REQUIRE) }
56
+ end
57
+ end
58
+
59
+ # Initialises a rake application
60
+ # @return [Object] a rake application
61
+ def self.rake_app()
62
+ unless @rake_app
63
+ ARGV.clear
64
+ @rake_app = Rake.application
65
+ @rake_app.init
66
+ end
67
+ @rake_app
68
+ end
69
+
70
+ # Clear ARGV and execute a Rake task
71
+ # @param [String] task the rake task to execute
72
+ def self.execute_rake_task(task)
73
+ rake_app.load_rakefile()
74
+ rake_app.invoke_task(task)
75
+ end
76
+
77
+ # Execute the quick start task for vagrant
78
+ def self.init_vagrant()
79
+ execute_rake_task("beaker_quickstart:gen_hosts[vagrant]")
80
+ end
81
+
82
+ # Execute the quick start task for vmpooler
83
+ def self.init_vmpooler()
84
+ execute_rake_task("beaker_quickstart:gen_hosts[vmpooler]")
85
+ end
86
+
87
+ # Print a message to the console and exit with 0
88
+ # @param [String] msg the message to print
89
+ def self.exit_with(msg)
90
+ puts msg
91
+ exit(0)
92
+ end
93
+
94
+ # Verify that a valid hypervisor has been specified
95
+ # @param [Array<Object>] options the options we want to query
96
+ def self.verify_init_args(options)
97
+ unless HYPERVISORS.include?(options[:hypervisor])
98
+ exit_with("Invalid hypervisor. Currently supported hypervisors are: #{HYPERVISORS.join(', ')}")
99
+ end
100
+ end
101
+
102
+ # Call the quick start task for the specified hypervisor
103
+ # @param [Array<Object>] options the options we want to query
104
+ def self.init_hypervisor(options)
105
+ case options[:hypervisor]
106
+ when "vagrant"
107
+ init_vagrant
108
+ when "vmpooler"
109
+ init_vmpooler
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '3.7.0'
3
+ STRING = '3.8.0'
4
4
  end
5
5
  end
@@ -498,6 +498,18 @@ describe Beaker do
498
498
 
499
499
  end
500
500
 
501
+ context "copy_ssh_to_root" do
502
+ subject { dummy_class.new }
503
+
504
+ it "can copy ssh to root in windows hosts with no cygwin" do
505
+ host = make_host( 'testhost', { :platform => 'windows', :is_cygwin => false })
506
+ expect( Beaker::Command ).to receive( :new ).with( "if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e /y /i)" ).once
507
+
508
+ subject.copy_ssh_to_root(host, options)
509
+ end
510
+
511
+ end
512
+
501
513
  context "package_proxy" do
502
514
 
503
515
  subject { dummy_class.new }
@@ -0,0 +1,203 @@
1
+ require 'spec_helper'
2
+
3
+ module Beaker
4
+ module Subcommands
5
+ describe SubcommandUtil do
6
+
7
+ let(:cli) {
8
+ double("cli")
9
+ }
10
+
11
+ let(:rake) {
12
+ double("rake")
13
+ }
14
+
15
+ let(:file) {
16
+ double("file")
17
+ }
18
+
19
+ describe 'reset_argv' do
20
+ it "resets argv" do
21
+ args = ["test1", "test2"]
22
+ expect(ARGV).to receive(:clear).exactly(1).times
23
+ subject.reset_argv(args)
24
+ expect(ARGV[0]).to eq(args[0])
25
+ expect(ARGV[1]).to eq(args[1])
26
+ end
27
+ end
28
+
29
+ describe 'execute_subcommand' do
30
+ it "determines if we should execute the init subcommand" do
31
+ expect(subject.execute_subcommand?("init")).to be == true
32
+ end
33
+ it "determines if we should execute the help subcommand" do
34
+ expect(subject.execute_subcommand?("help")).to be == true
35
+ end
36
+ it "determines that a subcommand should not be executed" do
37
+ expect(subject.execute_subcommand?("notasubcommand")).to be == false
38
+ end
39
+ end
40
+
41
+ describe 'execute_beaker' do
42
+ it "executes beaker with arguments" do
43
+ allow(cli).to receive(:execute!).and_return(true)
44
+ allow(Beaker::CLI).to receive(:new).and_return(cli)
45
+ expect(subject).to receive(:reset_argv).exactly(1).times
46
+ expect(cli).to receive(:execute!).exactly(1).times
47
+ subject.execute_beaker(['args'])
48
+ end
49
+ end
50
+
51
+ describe 'exit_with' do
52
+ it "the exit value should be false" do
53
+ expect(STDOUT).to receive(:puts).with("exiting").exactly(1).times
54
+ begin
55
+ subject.exit_with("exiting")
56
+ rescue SystemExit=>e
57
+ expect(e.status).to eq(0)
58
+ end
59
+ end
60
+ end
61
+
62
+ describe 'init_vmpooler' do
63
+ it "executes the vmpooler quick task" do
64
+ expect(subject).to receive(:execute_rake_task).with("beaker_quickstart:gen_hosts[vmpooler]").exactly(1).times
65
+ subject.init_vmpooler
66
+ end
67
+ end
68
+
69
+ describe 'init_vagrant' do
70
+ it "executes the vmpooler quick task" do
71
+ expect(subject).to receive(:execute_rake_task).with("beaker_quickstart:gen_hosts[vagrant]").exactly(1).times
72
+ subject.init_vagrant
73
+ end
74
+ end
75
+
76
+ describe 'init_hypervisor' do
77
+ it "calls init_vagrant" do
78
+ options = {:hypervisor => "vagrant"}
79
+ expect(subject).to receive(:init_vagrant).with(no_args).exactly(1).times
80
+ expect(subject).to receive(:init_vmpooler).with(no_args).exactly(0).times
81
+ subject.init_hypervisor(options)
82
+ end
83
+
84
+ it "calls init_vmpooler" do
85
+ options = {:hypervisor => "vmpooler"}
86
+ expect(subject).to receive(:init_vagrant).with(no_args).exactly(0).times
87
+ expect(subject).to receive(:init_vmpooler).with(no_args).exactly(1).times
88
+ subject.init_hypervisor(options)
89
+ end
90
+
91
+ it "fails to call init for a hypervisor" do
92
+ options = {:hypervisor => "invalid"}
93
+ expect(subject).to receive(:init_vagrant).with(no_args).exactly(0).times
94
+ expect(subject).to receive(:init_vmpooler).with(no_args).exactly(0).times
95
+ subject.init_hypervisor(options)
96
+ end
97
+ end
98
+
99
+ describe 'execute_rake_task' do
100
+
101
+ it "executes the rake task" do
102
+ allow(Rake).to receive(:application).and_return(rake)
103
+ expect(ARGV).to receive(:clear).exactly(1).times
104
+ expect(rake).to receive(:init).and_return(true).exactly(1).times
105
+ expect(rake).to receive(:load_rakefile).and_return(true).exactly(1).times
106
+ expect(rake).to receive(:invoke_task).with("mytask").exactly(1).times
107
+ subject.execute_rake_task("mytask")
108
+ end
109
+ end
110
+
111
+ describe 'verify_init_args' do
112
+ it "verfy the init args are valid for a vagrant run" do
113
+ options = {:hypervisor => "vagrant"}
114
+ expect(subject).to receive(:exit_with).exactly(0).times
115
+ subject.verify_init_args(options)
116
+ end
117
+
118
+ it "verfy the init args are valid for a vmpooler run" do
119
+ options = {:hypervisor => "vmpooler"}
120
+ expect(subject).to receive(:exit_with).exactly(0).times
121
+ subject.verify_init_args(options)
122
+ end
123
+
124
+ it "verify the init args are invalid for an init run" do
125
+ options = {}
126
+ expect(STDOUT).to receive(:puts).with("Invalid hypervisor. Currently supported hypervisors are: #{Beaker::Subcommands::SubcommandUtil::HYPERVISORS.join(', ')}").exactly(1).times
127
+ begin
128
+ subject.verify_init_args(options)
129
+ rescue SystemExit=>e
130
+ expect(e.status).to eq(0)
131
+ end
132
+ end
133
+
134
+ it "verify the init args are invalid for a vmpooler run" do
135
+ options = {:hypervisor => "thisshouldfail"}
136
+ expect(STDOUT).to receive(:puts).with("Invalid hypervisor. Currently supported hypervisors are: #{Beaker::Subcommands::SubcommandUtil::HYPERVISORS.join(', ')}").exactly(1).times
137
+ begin
138
+ subject.verify_init_args(options)
139
+ rescue SystemExit=>e
140
+ expect(e.status).to eq(0)
141
+ end
142
+ end
143
+ end
144
+
145
+ describe "determine_rake_file" do
146
+
147
+ it "uses Rakefile if no rakefile exists" do
148
+ allow(subject).to receive(:rake_app).and_return(rake)
149
+ allow(rake).to receive(:find_rakefile_location).and_return(nil)
150
+ expect subject.determine_rake_file == "Rakefile"
151
+ end
152
+
153
+ it "uses Rakefile if Rakefile exists" do
154
+ allow(subject).to receive(:rake_app).and_return(rake)
155
+ allow(rake).to receive(:find_rakefile_location).and_return("Rakefile")
156
+ expect subject.determine_rake_file == "Rakefile"
157
+ end
158
+
159
+ it "uses rakefile if rakefile exists" do
160
+ allow(subject).to receive(:rake_app).and_return(rake)
161
+ allow(rake).to receive(:find_rakefile_location).and_return("rakefile")
162
+ expect subject.determine_rake_file == "rakefile"
163
+ end
164
+
165
+ it "uses Rakefile.rb if Rakefile.rb exists" do
166
+ allow(subject).to receive(:rake_app).and_return(rake)
167
+ allow(rake).to receive(:find_rakefile_location).and_return("Rakefile.rb")
168
+ expect subject.determine_rake_file == "Rakefile.rb"
169
+ end
170
+
171
+ it "uses rakefile.rb if rakefile.rb exists" do
172
+ allow(subject).to receive(:rake_app).and_return(rake)
173
+ allow(rake).to receive(:find_rakefile_location).and_return("rakefile.rb")
174
+ expect subject.determine_rake_file == "rakefile.rb"
175
+ end
176
+ end
177
+
178
+ describe "require_tasks" do
179
+ it "appends the require if it isn't contained in the Rakefile" do
180
+ allow(subject).to receive(:determine_rake_file).and_return("Rakefile")
181
+ allow(File).to receive(:readlines).with("Rakefile").and_return([""])
182
+ allow(File).to receive(:open).with("Rakefile", "a+").and_yield(file)
183
+ allow(File).to receive(:puts).with("require 'beaker/tasks/quick_start'").and_return(true)
184
+ expect(File).to receive(:open).with("Rakefile", "a+").and_yield(file).exactly(1).times
185
+ expect(file).to receive(:puts).with("require 'beaker/tasks/quick_start'").exactly(1).times
186
+ subject.require_tasks
187
+ end
188
+
189
+ it "does't append the require if it is contained in the Rakefile" do
190
+ allow(subject).to receive(:determine_rake_file).and_return("Rakefile")
191
+ allow(File).to receive(:readlines).with("Rakefile").and_return(["require 'beaker/tasks/quick_start'"])
192
+ allow(File).to receive(:open).with("Rakefile", "a+").and_yield(file)
193
+ allow(File).to receive(:puts).with("require 'beaker/tasks/quick_start'").and_return(true)
194
+ expect(File).to receive(:open).with("Rakefile", "a+").and_yield(file).exactly(0).times
195
+ expect(file).to receive(:puts).with("require 'beaker/tasks/quick_start'").exactly(0).times
196
+ subject.require_tasks
197
+ end
198
+
199
+ end
200
+
201
+ end
202
+ end
203
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-28 00:00:00.000000000 Z
11
+ date: 2017-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: yard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - <
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.9.6
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - <
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.9.6
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: minitest
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +234,20 @@ dependencies:
234
234
  - - ~>
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0.1'
237
+ - !ruby/object:Gem::Dependency
238
+ name: thor
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '='
242
+ - !ruby/object:Gem::Version
243
+ version: 0.19.1
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '='
249
+ - !ruby/object:Gem::Version
250
+ version: 0.19.1
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: stringify-hash
239
253
  requirement: !ruby/object:Gem::Requirement
@@ -675,9 +689,10 @@ files:
675
689
  - lib/beaker/shared/options_resolver.rb
676
690
  - lib/beaker/shared/repetition.rb
677
691
  - lib/beaker/shared/semvar.rb
678
- - lib/beaker/shared/subcommands_util.rb
679
692
  - lib/beaker/shared/timed.rb
680
693
  - lib/beaker/ssh_connection.rb
694
+ - lib/beaker/subcommand.rb
695
+ - lib/beaker/subcommands/subcommand_util.rb
681
696
  - lib/beaker/tasks/quick_start.rb
682
697
  - lib/beaker/tasks/rake_task.rb
683
698
  - lib/beaker/tasks/test.rb
@@ -763,8 +778,8 @@ files:
763
778
  - spec/beaker/shared/options_resolver_spec.rb
764
779
  - spec/beaker/shared/repetition_spec.rb
765
780
  - spec/beaker/shared/semvar_spec.rb
766
- - spec/beaker/shared/subcommands_util_spec.rb
767
781
  - spec/beaker/ssh_connection_spec.rb
782
+ - spec/beaker/subcommand/subcommand_util_spec.rb
768
783
  - spec/beaker/test_case_spec.rb
769
784
  - spec/beaker/test_suite_spec.rb
770
785
  - spec/helpers.rb
@@ -1,37 +0,0 @@
1
- module Beaker
2
- module Shared
3
- # Methods used in execution of Subcommands
4
- # - should we write the config?
5
- # - reset ARGV
6
- # - execute Beaker
7
- module SubcommandsUtil
8
- CONFIG_PATH = ".beaker/config"
9
-
10
- @@write_config = false
11
-
12
- def self.write_config=( val )
13
- @@write_config = val
14
- end
15
-
16
- def self.write_config?
17
- @@write_config
18
- end
19
-
20
- # Reset ARGV to contain the arguments determined by a specific subcommand
21
- # @param [Array<String>] args the arguments determined by a specific subcommand
22
- def reset_argv(args)
23
- ARGV.clear
24
- args.each do |arg|
25
- ARGV << arg
26
- end
27
- end
28
-
29
- # Update ARGV and call Beaker
30
- # @param [Array<String>] args the arguments determined by a specific subcommand
31
- def execute_beaker(*args)
32
- reset_argv(args)
33
- Beaker::CLI.new.execute!
34
- end
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Beaker
4
- module Shared
5
- describe SubcommandsUtil do
6
-
7
- let(:cli) {
8
- double("cli")
9
- }
10
-
11
- describe 'reset_argv' do
12
- it "resets argv" do
13
- args = ["test1", "test2"]
14
- expect(ARGV).to receive(:clear).exactly(1).times
15
- subject.reset_argv(args)
16
- expect(ARGV[0]).to eq(args[0])
17
- expect(ARGV[1]).to eq(args[1])
18
- end
19
- end
20
-
21
- describe 'execute_beaker' do
22
- it "executes beaker with arguments" do
23
- allow(cli).to receive(:execute!).and_return(true)
24
- allow(Beaker::CLI).to receive(:new).and_return(cli)
25
- expect(subject).to receive(:reset_argv).exactly(1).times
26
- expect(cli).to receive(:execute!).exactly(1).times
27
- subject.execute_beaker(['args'])
28
- end
29
- end
30
-
31
- end
32
- end
33
- end