From 7707e530af796737f21744f768f7da2f822c0e40 Mon Sep 17 00:00:00 2001 From: Gosuke Miyashita Date: Sat, 2 Aug 2014 20:16:44 +0900 Subject: [PATCH] Fix according to serverspec/specinfra#163 --- Rakefile | 6 +- lib/serverspec/setup.rb | 21 +++--- spec/spec_helper.rb | 2 +- spec/type/windows/command_spec.rb | 3 +- spec/type/windows/feature_spec.rb | 2 +- spec/type/windows/file_spec.rb | 2 +- spec/type/windows/group_spec.rb | 2 +- spec/type/windows/host_spec.rb | 2 +- spec/type/windows/hot_fix_spec.rb | 2 +- spec/type/windows/iis_app_pool_spec.rb | 2 +- spec/type/windows/iis_webisite_spec.rb | 2 +- spec/type/windows/package_spec.rb | 2 +- spec/type/windows/port_spec.rb | 2 +- spec/type/windows/registry_key_spec.rb | 2 +- spec/type/windows/scheduled_task_spec.rb | 2 +- spec/type/windows/service_spec.rb | 2 +- spec/type/windows/user_spec.rb | 2 +- spec/unit/command_spec.rb | 81 ------------------------ 18 files changed, 25 insertions(+), 114 deletions(-) delete mode 100644 spec/unit/command_spec.rb diff --git a/Rakefile b/Rakefile index 031a930c..5664a44d 100644 --- a/Rakefile +++ b/Rakefile @@ -9,7 +9,7 @@ if defined?(RSpec) task :spec => 'spec:all' namespace :spec do - task :all => [ 'spec:type:all', 'spec:helper', 'spec:unit' ] + task :all => [ 'spec:type:all', 'spec:helper' ] namespace :type do oses = Dir.glob('spec/type/*').map {|d| File.basename(d)} @@ -26,9 +26,5 @@ if defined?(RSpec) RSpec::Core::RakeTask.new(:helper) do |t| t.pattern = "spec/helper/*_spec.rb" end - - RSpec::Core::RakeTask.new(:unit) do |t| - t.pattern = "spec/unit/*_spec.rb" - end end end diff --git a/lib/serverspec/setup.rb b/lib/serverspec/setup.rb index a5215b98..c23d3600 100644 --- a/lib/serverspec/setup.rb +++ b/lib/serverspec/setup.rb @@ -13,7 +13,7 @@ def self.run ask_windows_backend end - if @backend_type == 'Ssh' + if @backend_type == 'ssh' print 'Vagrant instance y/n: ' @vagrant = $stdin.gets.chomp if @vagrant =~ (/(true|t|yes|y|1)$/i) @@ -72,7 +72,7 @@ def self.ask_unix_backend num = $stdin.gets.to_i - 1 puts - @backend_type = ['Ssh', 'Exec'][num] || 'Exec' + @backend_type = ['ssh', 'exec'][num] || 'exec' end def self.ask_windows_backend @@ -88,7 +88,7 @@ def self.ask_windows_backend num = $stdin.gets.to_i - 1 puts - @backend_type = ['WinRM', 'Cmd'][num] || 'Exec' + @backend_type = ['winrm', 'cmd'][num] || 'exec' end def self.safe_create_spec @@ -241,22 +241,19 @@ def self.auto_vagrant_configuration def self.spec_helper_template template = <<-'EOF' require 'serverspec' -<% if @backend_type == 'Ssh' -%> +<% if @backend_type == 'ssh' -%> require 'net/ssh' <% end -%> <%- if @vagrant -%> require 'tempfile' <% end -%> -<% if @backend_type == 'WinRM' -%> +<% if @backend_type == 'winrm' -%> require 'winrm' <% end -%> -include Specinfra::Helper::<%= @backend_type %> -<% if @os_type != 'UN*X' -%> -include Specinfra::Helper::Windows -<% end -%> +set :backend, :<%= @backend_type %> -<% if @os_type == 'UN*X' && @backend_type == 'Ssh' -%> +<% if @os_type == 'UN*X' && @backend_type == 'ssh' -%> if ENV['ASK_SUDO_PASSWORD'] begin require 'highline/import' @@ -268,7 +265,7 @@ def self.spec_helper_template set :sudo_password, ENV['SUDO_PASSWORD'] end -<%- if @backend_type == 'Ssh' -%> +<%- if @backend_type == 'ssh' -%> host = ENV['TARGET_HOST'] <%- if @vagrant -%> @@ -298,7 +295,7 @@ def self.spec_helper_template # Set PATH # set :path, '/sbin:/usr/local/sbin:$PATH' -<% if @backend_type == 'WinRM'-%> +<% if @backend_type == 'winrm'-%> user = pass = endpoint = "http://:5985/wsman" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a57fbe99..410609e8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,7 +2,7 @@ require 'pathname' require 'rspec/mocks/standalone' -include Specinfra::Helper::Exec +set :backend, :exec PROJECT_ROOT = (Pathname.new(File.dirname(__FILE__)) + '..').expand_path diff --git a/spec/type/windows/command_spec.rb b/spec/type/windows/command_spec.rb index f49349cc..e86f065a 100644 --- a/spec/type/windows/command_spec.rb +++ b/spec/type/windows/command_spec.rb @@ -1,7 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd - +set :backend, :cmd set :os, :family => 'windows' describe command('test_cmd /test/path/file') do diff --git a/spec/type/windows/feature_spec.rb b/spec/type/windows/feature_spec.rb index 5fece7eb..a7352ef2 100644 --- a/spec/type/windows/feature_spec.rb +++ b/spec/type/windows/feature_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/file_spec.rb b/spec/type/windows/file_spec.rb index b8e96f21..bbb41cb0 100644 --- a/spec/type/windows/file_spec.rb +++ b/spec/type/windows/file_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/group_spec.rb b/spec/type/windows/group_spec.rb index 9b81c336..fdb77400 100644 --- a/spec/type/windows/group_spec.rb +++ b/spec/type/windows/group_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/host_spec.rb b/spec/type/windows/host_spec.rb index c5764efb..dce41f75 100644 --- a/spec/type/windows/host_spec.rb +++ b/spec/type/windows/host_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' describe host('127.0.0.1') do diff --git a/spec/type/windows/hot_fix_spec.rb b/spec/type/windows/hot_fix_spec.rb index 296992a8..4fffe184 100644 --- a/spec/type/windows/hot_fix_spec.rb +++ b/spec/type/windows/hot_fix_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/iis_app_pool_spec.rb b/spec/type/windows/iis_app_pool_spec.rb index 07076a4b..81eff86f 100644 --- a/spec/type/windows/iis_app_pool_spec.rb +++ b/spec/type/windows/iis_app_pool_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/iis_webisite_spec.rb b/spec/type/windows/iis_webisite_spec.rb index 0534a8a9..a1080fe8 100644 --- a/spec/type/windows/iis_webisite_spec.rb +++ b/spec/type/windows/iis_webisite_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/package_spec.rb b/spec/type/windows/package_spec.rb index e7e41b67..4d9701d4 100644 --- a/spec/type/windows/package_spec.rb +++ b/spec/type/windows/package_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/port_spec.rb b/spec/type/windows/port_spec.rb index d86cfe10..b2c35105 100644 --- a/spec/type/windows/port_spec.rb +++ b/spec/type/windows/port_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/registry_key_spec.rb b/spec/type/windows/registry_key_spec.rb index 20e6c5cd..a58f323c 100644 --- a/spec/type/windows/registry_key_spec.rb +++ b/spec/type/windows/registry_key_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' describe windows_registry_key('PATH/TO/THE_KEY') do diff --git a/spec/type/windows/scheduled_task_spec.rb b/spec/type/windows/scheduled_task_spec.rb index 104ee8d8..ba8fc3a4 100644 --- a/spec/type/windows/scheduled_task_spec.rb +++ b/spec/type/windows/scheduled_task_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/service_spec.rb b/spec/type/windows/service_spec.rb index ed8db25a..74703f1a 100644 --- a/spec/type/windows/service_spec.rb +++ b/spec/type/windows/service_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/type/windows/user_spec.rb b/spec/type/windows/user_spec.rb index 545bbedd..57a2a278 100644 --- a/spec/type/windows/user_spec.rb +++ b/spec/type/windows/user_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -include Specinfra::Helper::Cmd +set :backend, :cmd set :os, :family => 'windows' diff --git a/spec/unit/command_spec.rb b/spec/unit/command_spec.rb deleted file mode 100644 index 79ae617f..00000000 --- a/spec/unit/command_spec.rb +++ /dev/null @@ -1,81 +0,0 @@ -require 'spec_helper' - -describe Serverspec::Type::Command do - subject { command('echo banana') } - - before :each do - allow(subject.backend).to receive(:run_command).and_return( - CommandResult.new({ - :stdout => "banana\n", - :stderr => "split\n", - :exit_status => "42", # Command should convert this to an integer - }) - ) - end - - it 'has stdout' do - expect(subject.stdout).to be == "banana\n" - end - - it 'has stderr' do - expect(subject.stderr).to be == "split\n" - end - - it 'has exit_status' do - expect(subject.exit_status).to be == 42 - end - - it 'does not conflate stdout and stderr' do - expect(subject.stdout).to eq("banana\n") - expect(subject.stderr).to eq("split\n") - end - - it 'runs the command lazily' do - expect(subject.backend).to receive(:run_command).exactly(0).times - - # Not sending any messages to the subject. - end - - it 'does not run the command more than once' do - expect(subject.backend).to receive(:run_command).once - - # We can send all these messages, but the command is invoked only once. - subject.stdout - subject.stderr - subject.exit_status - subject.return_stdout? 'foo' - subject.return_stderr? 'foo' - subject.return_exit_status? 0 - end - - describe '#return_stdout?' do - it 'matches against a string, stripping whitespace' do - expect(subject.return_stdout? 'banana').to be_truthy - expect(subject.return_stdout? 'pancake').to be_falsey - end - - it 'matches against a regex' do - expect(subject.return_stdout? /anan/).to be_truthy - expect(subject.return_stdout? /^anan/).to be_falsey - end - end - - describe '#return_stderr?' do - it 'matches against a string, stripping whitespace' do - expect(subject.return_stderr? 'split').to be_truthy - expect(subject.return_stderr? 'pancake').to be_falsey - end - - it 'matches against a regex' do - expect(subject.return_stderr? /pli/).to be_truthy - expect(subject.return_stderr? /^pli/).to be_falsey - end - end - - describe '#return_stderr?' do - it 'matches against an integer' do - expect(subject.return_exit_status? 42).to be_truthy - expect(subject.return_exit_status? 43).to be_falsey - end - end -end