chef 15.10.12 → 15.11.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -3
  3. data/Rakefile +1 -1
  4. data/lib/chef/application/apply.rb +1 -1
  5. data/lib/chef/application/exit_code.rb +2 -2
  6. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  7. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  8. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  9. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  10. data/lib/chef/cookbook_version.rb +4 -4
  11. data/lib/chef/deprecated.rb +1 -1
  12. data/lib/chef/dsl/platform_introspection.rb +1 -1
  13. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  14. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  15. data/lib/chef/knife.rb +26 -20
  16. data/lib/chef/knife/bootstrap.rb +22 -21
  17. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +12 -8
  18. data/lib/chef/knife/bootstrap/client_builder.rb +23 -19
  19. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  20. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  21. data/lib/chef/knife/cookbook_site_show.rb +1 -1
  22. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  23. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  24. data/lib/chef/knife/ssh.rb +1 -1
  25. data/lib/chef/mixin/create_path.rb +8 -8
  26. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  27. data/lib/chef/provider/package/chocolatey.rb +3 -2
  28. data/lib/chef/provider/service/simple.rb +3 -3
  29. data/lib/chef/provider/windows_task.rb +1 -1
  30. data/lib/chef/resource/build_essential.rb +1 -1
  31. data/lib/chef/resource/launchd.rb +4 -4
  32. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  33. data/lib/chef/resource/windows_firewall_rule.rb +8 -4
  34. data/lib/chef/resource/windows_share.rb +4 -4
  35. data/lib/chef/resource/windows_task.rb +13 -13
  36. data/lib/chef/resource_inspector.rb +4 -3
  37. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  38. data/lib/chef/version.rb +1 -1
  39. data/lib/chef/win32/api/command_line_helper.rb +89 -0
  40. data/lib/chef/win32/api/file.rb +18 -18
  41. data/lib/chef/win32/file.rb +1 -1
  42. data/lib/chef/win32/process.rb +2 -2
  43. data/spec/functional/resource/chocolatey_package_spec.rb +29 -0
  44. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  45. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  46. data/spec/spec_helper.rb +0 -11
  47. data/spec/support/shared/functional/file_resource.rb +1 -1
  48. data/spec/unit/knife/bootstrap_spec.rb +10 -13
  49. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +6 -0
  50. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  51. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  52. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  53. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  54. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  55. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  56. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  57. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  58. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  59. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  60. data/spec/unit/provider/git_spec.rb +3 -3
  61. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  62. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  63. data/spec/unit/provider/package/msu_spec.rb +3 -3
  64. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  65. data/spec/unit/provider_resolver_spec.rb +9 -9
  66. data/spec/unit/run_context_spec.rb +1 -1
  67. metadata +7 -6
@@ -461,22 +461,22 @@ BOOL WINAPI DeviceIoControl(
461
461
  =end
462
462
  safe_attach_function :DeviceIoControl, %i{HANDLE DWORD LPVOID DWORD LPVOID DWORD LPDWORD pointer}, :BOOL
463
463
 
464
- # BOOL WINAPI DeleteVolumeMountPoint(
465
- # _In_ LPCTSTR lpszVolumeMountPoint
466
- # );
464
+ # BOOL WINAPI DeleteVolumeMountPoint(
465
+ # _In_ LPCTSTR lpszVolumeMountPoint
466
+ # );
467
467
  safe_attach_function :DeleteVolumeMountPointW, [:LPCTSTR], :BOOL
468
468
 
469
- # BOOL WINAPI SetVolumeMountPoint(
470
- # _In_ LPCTSTR lpszVolumeMountPoint,
471
- # _In_ LPCTSTR lpszVolumeName
472
- # );
469
+ # BOOL WINAPI SetVolumeMountPoint(
470
+ # _In_ LPCTSTR lpszVolumeMountPoint,
471
+ # _In_ LPCTSTR lpszVolumeName
472
+ # );
473
473
  safe_attach_function :SetVolumeMountPointW, %i{LPCTSTR LPCTSTR}, :BOOL
474
474
 
475
- # BOOL WINAPI GetVolumeNameForVolumeMountPoint(
476
- # _In_ LPCTSTR lpszVolumeMountPoint,
477
- # _Out_ LPTSTR lpszVolumeName,
478
- # _In_ DWORD cchBufferLength
479
- # );
475
+ # BOOL WINAPI GetVolumeNameForVolumeMountPoint(
476
+ # _In_ LPCTSTR lpszVolumeMountPoint,
477
+ # _Out_ LPTSTR lpszVolumeName,
478
+ # _In_ DWORD cchBufferLength
479
+ # );
480
480
  safe_attach_function :GetVolumeNameForVolumeMountPointW, %i{LPCTSTR LPTSTR DWORD}, :BOOL
481
481
 
482
482
  =begin
@@ -538,12 +538,12 @@ BOOL WINAPI VerQueryValue(
538
538
  # ensures the handle is closed on exit of the block
539
539
  # FIXME: yard with @yield
540
540
  def file_search_handle(path)
541
- # Workaround for CHEF-4419:
542
- # Make sure paths starting with "/" has a drive letter
543
- # assigned from the current working diretory.
544
- # Note: With CHEF-4427 this issue will be fixed with a
545
- # broader fix to map all the paths starting with "/" to
546
- # SYSTEM_DRIVE on windows.
541
+ # Workaround for CHEF-4419:
542
+ # Make sure paths starting with "/" has a drive letter
543
+ # assigned from the current working diretory.
544
+ # Note: With CHEF-4427 this issue will be fixed with a
545
+ # broader fix to map all the paths starting with "/" to
546
+ # SYSTEM_DRIVE on windows.
547
547
  path = ::File.expand_path(path) if path.start_with? "/"
548
548
  path = canonical_encode_path(path)
549
549
  find_data = WIN32_FIND_DATA.new
@@ -171,7 +171,7 @@ class Chef
171
171
  rescue Chef::Exceptions::Win32APIFunctionNotImplemented => e
172
172
  raise e
173
173
  rescue Exception
174
- # things are ok.
174
+ # things are ok.
175
175
  end
176
176
 
177
177
  def self.file_access_check(path, desired_access)
@@ -82,8 +82,8 @@ class Chef
82
82
  (call_succeeded != 0) && (is_64_bit_process_result.get_int(0) != 0)
83
83
  end
84
84
 
85
- # Must have PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION rights,
86
- # AND the PROCESS_VM_READ right
85
+ # Must have PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION rights,
86
+ # AND the PROCESS_VM_READ right
87
87
  def self.get_process_memory_info(handle)
88
88
  memory_info = PROCESS_MEMORY_COUNTERS.new
89
89
  unless GetProcessMemoryInfo(handle.handle, memory_info, memory_info.size)
@@ -32,6 +32,11 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
32
32
  new_resource
33
33
  end
34
34
 
35
+ let(:provider) do
36
+ provider = subject.provider_for_action(subject.action)
37
+ provider
38
+ end
39
+
35
40
  context "installing a package" do
36
41
  after { remove_package }
37
42
 
@@ -88,6 +93,30 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
88
93
  expect(package_list.call).to eq("#{package_name}|2.0")
89
94
  end
90
95
 
96
+ context "when multiple options passed as string" do
97
+ before do
98
+ subject.options "--force --confirm"
99
+ subject.source nil
100
+ end
101
+
102
+ it "splits a string into an array of options" do
103
+ expect(provider.send(:cmd_args)).to eq(["--force", "--confirm"])
104
+ end
105
+
106
+ it "calls command_line_to_argv_w_helper method" do
107
+ expect(provider).to receive(:command_line_to_argv_w_helper).with(subject.options).and_return(["--force", "--confirm"])
108
+ provider.send(:cmd_args)
109
+ end
110
+ end
111
+
112
+ context "when multiple options passed as array" do
113
+ it "Does not call command_line_to_argv_w_helper method" do
114
+ subject.options [ "--force", "--confirm" ]
115
+ expect(provider).not_to receive(:command_line_to_argv_w_helper)
116
+ provider.send(:cmd_args)
117
+ end
118
+ end
119
+
91
120
  it "installs with multiple options as an array" do
92
121
  subject.options [ "--force", "--confirm" ]
93
122
  subject.run_action(:install)
@@ -29,7 +29,7 @@ describe "Chef::Resource::User with Chef::Provider::User::Dscl provider", metada
29
29
  def clean_user
30
30
  shell_out!("/usr/bin/dscl . -delete '/Users/#{username}'")
31
31
  rescue Mixlib::ShellOut::ShellCommandFailed
32
- # Raised when the user is already cleaned
32
+ # Raised when the user is already cleaned
33
33
  end
34
34
 
35
35
  def user_should_exist
@@ -29,7 +29,7 @@ describe "Chef::Resource::User with Chef::Provider::User::MacUser provider", met
29
29
  def clean_user
30
30
  shell_out!("/usr/bin/dscl . -delete '/Users/#{username}'")
31
31
  rescue Mixlib::ShellOut::ShellCommandFailed
32
- # Raised when the user is already cleaned
32
+ # Raised when the user is already cleaned
33
33
  end
34
34
 
35
35
  def ensure_file_cache_path_exists
@@ -34,17 +34,6 @@ require "rspec/mocks"
34
34
 
35
35
  require "webmock/rspec"
36
36
 
37
- if ENV["COVERAGE"]
38
- require "simplecov"
39
- SimpleCov.start do
40
- add_filter "/spec/"
41
- add_group "Remote File", "remote_file"
42
- add_group "Resources", "/resource/"
43
- add_group "Providers", "/provider/"
44
- add_group "Knife", "knife"
45
- end
46
- end
47
-
48
37
  require "chef"
49
38
  require "chef/knife"
50
39
 
@@ -370,7 +370,7 @@ shared_examples_for "a configured file resource" do
370
370
  Chef::Config[:ssl_verify_mode] = :verify_none
371
371
  end
372
372
 
373
- # note the stripping of the drive letter from the tmpdir on windows
373
+ # note the stripping of the drive letter from the tmpdir on windows
374
374
  let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, test_file_dir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
375
375
 
376
376
  # Most tests update the resource, but a few do not. We need to test that the
@@ -854,6 +854,7 @@ describe Chef::Knife::Bootstrap do
854
854
  context "and no CLI options have been given" do
855
855
  before do
856
856
  knife.config = {}
857
+ knife.merge_configs
857
858
  end
858
859
  let(:expected_result) do
859
860
  {
@@ -905,6 +906,7 @@ describe Chef::Knife::Bootstrap do
905
906
  knife.config[:connection_port] = 12
906
907
  knife.config[:winrm_port] = "13" # indirectly verify we're not looking for the wrong CLI flag
907
908
  knife.config[:connection_password] = "lobster"
909
+ knife.merge_configs
908
910
  end
909
911
 
910
912
  it "generates a config hash using the CLI options when available and falling back to Chef::Config values" do
@@ -1004,6 +1006,7 @@ describe Chef::Knife::Bootstrap do
1004
1006
  context "and no CLI options have been given" do
1005
1007
  before do
1006
1008
  knife.config = {}
1009
+ knife.merge_configs
1007
1010
  end
1008
1011
  let(:expected_result) do
1009
1012
  {
@@ -1018,7 +1021,7 @@ describe Chef::Knife::Bootstrap do
1018
1021
  keys_only: true,
1019
1022
  key_files: ["/identity.pem", "/gateway.pem"],
1020
1023
  sudo: false,
1021
- verify_host_key: nil,
1024
+ verify_host_key: false,
1022
1025
  port: 9999,
1023
1026
  non_interactive: true,
1024
1027
  }
@@ -1056,6 +1059,7 @@ describe Chef::Knife::Bootstrap do
1056
1059
  knife.config[:use_sudo] = true
1057
1060
  knife.config[:use_sudo_pasword] = true
1058
1061
  knife.config[:ssh_forward_agent] = true
1062
+ knife.merge_configs
1059
1063
  end
1060
1064
 
1061
1065
  let(:expected_result) do
@@ -1072,7 +1076,7 @@ describe Chef::Knife::Bootstrap do
1072
1076
  keys_only: false, # implied false from config password present
1073
1077
  key_files: ["/identity.pem", "/gateway.pem"], # Config
1074
1078
  sudo: true, # ccli
1075
- verify_host_key: nil, # Config
1079
+ verify_host_key: false, # Config
1076
1080
  port: 12, # cli
1077
1081
  non_interactive: true,
1078
1082
  }
@@ -1940,22 +1944,15 @@ describe Chef::Knife::Bootstrap do
1940
1944
  Chef::Config[:knife][:test_key_a] = "a from Chef::Config"
1941
1945
  Chef::Config[:knife][:test_key_c] = "c from Chef::Config"
1942
1946
  Chef::Config[:knife][:alt_test_key_c] = "alt c from Chef::Config"
1947
+ knife.merge_configs
1943
1948
  end
1944
1949
 
1945
- it "returns CLI value when key is only provided by the CLI" do
1946
- expect(knife.config_value(:test_key_b)).to eq "b from cli"
1947
- end
1948
-
1949
- it "returns CLI value when key is provided by CLI and Chef::Config" do
1950
- expect(knife.config_value(:test_key_a)).to eq "a from cli"
1951
- end
1952
-
1953
- it "returns Chef::Config value whent he key is only provided by Chef::Config" do
1954
- expect(knife.config_value(:test_key_c)).to eq "c from Chef::Config"
1950
+ it "returns the Chef::Config value from the cli when the CLI key is set" do
1951
+ expect(knife.config_value(:test_key_a, :alt_test_key_c)).to eq "a from cli"
1955
1952
  end
1956
1953
 
1957
1954
  it "returns the Chef::Config value from the alternative key when the CLI key is not set" do
1958
- expect(knife.config_value(:test_key_c, :alt_test_key_c)).to eq "alt c from Chef::Config"
1955
+ expect(knife.config_value(:test_key_d, :alt_test_key_c)).to eq "alt c from Chef::Config"
1959
1956
  end
1960
1957
 
1961
1958
  it "returns the default value when the key is not provided by CLI or Chef::Config" do
@@ -184,6 +184,12 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
184
184
  end
185
185
  end
186
186
 
187
+ describe "#start_chef" do
188
+ it "returns the expected string" do
189
+ expect(bootstrap_context.start_chef).to match(%r{SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\/opscode\/chef\\bin;C:\/opscode\/chef\\embedded\\bin\;%PATH%\"\n})
190
+ end
191
+ end
192
+
187
193
  describe "msi_url" do
188
194
  context "when msi_url config option is not set" do
189
195
  let(:config) { { channel: "stable" } }
@@ -21,8 +21,8 @@ require "spec_helper"
21
21
 
22
22
  describe Chef::Knife::RoleEnvRunListAdd do
23
23
  before(:each) do
24
- # Chef::Config[:role_name] = "websimian"
25
- # Chef::Config[:env_name] = "QA"
24
+ # Chef::Config[:role_name] = "websimian"
25
+ # Chef::Config[:env_name] = "QA"
26
26
  @knife = Chef::Knife::RoleEnvRunListAdd.new
27
27
  @knife.config = {
28
28
  after: nil,
@@ -36,10 +36,10 @@ describe Chef::Knife::RoleEnvRunListAdd do
36
36
 
37
37
  describe "run" do
38
38
 
39
- # it "should display all the things" do
40
- # @knife.run
41
- # @role.to_json.should == 'show all the things'
42
- # end
39
+ # it "should display all the things" do
40
+ # @knife.run
41
+ # @role.to_json.should == 'show all the things'
42
+ # end
43
43
 
44
44
  it "should have an empty default run list" do
45
45
  @knife.run
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListClear do
44
44
 
45
45
  describe "run" do
46
46
 
47
- # it "should display all the things" do
48
- # @knife.run
49
- # @role.to_json.should == 'show all the things'
50
- # end
47
+ # it "should display all the things" do
48
+ # @knife.run
49
+ # @role.to_json.should == 'show all the things'
50
+ # end
51
51
 
52
52
  it "should load the node" do
53
53
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListRemove do
44
44
 
45
45
  describe "run" do
46
46
 
47
- # it "should display all the things" do
48
- # @knife.run
49
- # @role.to_json.should == 'show all the things'
50
- # end
47
+ # it "should display all the things" do
48
+ # @knife.run
49
+ # @role.to_json.should == 'show all the things'
50
+ # end
51
51
 
52
52
  it "should load the node" do
53
53
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListReplace do
44
44
 
45
45
  describe "run" do
46
46
 
47
- # it "should display all the things" do
48
- # @knife.run
49
- # @role.to_json.should == 'show all the things'
50
- # end
47
+ # it "should display all the things" do
48
+ # @knife.run
49
+ # @role.to_json.should == 'show all the things'
50
+ # end
51
51
 
52
52
  it "should load the node" do
53
53
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListSet do
44
44
 
45
45
  describe "run" do
46
46
 
47
- # it "should display all the things" do
48
- # @knife.run
49
- # @role.to_json.should == 'show all the things'
50
- # end
47
+ # it "should display all the things" do
48
+ # @knife.run
49
+ # @role.to_json.should == 'show all the things'
50
+ # end
51
51
 
52
52
  it "should load the node" do
53
53
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -21,8 +21,8 @@ require "spec_helper"
21
21
 
22
22
  describe Chef::Knife::RoleRunListAdd do
23
23
  before(:each) do
24
- # Chef::Config[:role_name] = "websimian"
25
- # Chef::Config[:env_name] = "QA"
24
+ # Chef::Config[:role_name] = "websimian"
25
+ # Chef::Config[:env_name] = "QA"
26
26
  @knife = Chef::Knife::RoleRunListAdd.new
27
27
  @knife.config = {
28
28
  after: nil,
@@ -36,10 +36,10 @@ describe Chef::Knife::RoleRunListAdd do
36
36
 
37
37
  describe "run" do
38
38
 
39
- # it "should display all the things" do
40
- # @knife.run
41
- # @role.to_json.should == 'show all the things'
42
- # end
39
+ # it "should display all the things" do
40
+ # @knife.run
41
+ # @role.to_json.should == 'show all the things'
42
+ # end
43
43
 
44
44
  it "should have a run list with the monkey role" do
45
45
  @knife.run
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListClear do
43
43
 
44
44
  describe "run" do
45
45
 
46
- # it "should display all the things" do
47
- # @knife.run
48
- # @role.to_json.should == 'show all the things'
49
- # end
46
+ # it "should display all the things" do
47
+ # @knife.run
48
+ # @role.to_json.should == 'show all the things'
49
+ # end
50
50
 
51
51
  it "should load the node" do
52
52
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListRemove do
43
43
 
44
44
  describe "run" do
45
45
 
46
- # it "should display all the things" do
47
- # @knife.run
48
- # @role.to_json.should == 'show all the things'
49
- # end
46
+ # it "should display all the things" do
47
+ # @knife.run
48
+ # @role.to_json.should == 'show all the things'
49
+ # end
50
50
 
51
51
  it "should load the node" do
52
52
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListReplace do
43
43
 
44
44
  describe "run" do
45
45
 
46
- # it "should display all the things" do
47
- # @knife.run
48
- # @role.to_json.should == 'show all the things'
49
- # end
46
+ # it "should display all the things" do
47
+ # @knife.run
48
+ # @role.to_json.should == 'show all the things'
49
+ # end
50
50
 
51
51
  it "should load the node" do
52
52
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListSet do
43
43
 
44
44
  describe "run" do
45
45
 
46
- # it "should display all the things" do
47
- # @knife.run
48
- # @role.to_json.should == 'show all the things'
49
- # end
46
+ # it "should display all the things" do
47
+ # @knife.run
48
+ # @role.to_json.should == 'show all the things'
49
+ # end
50
50
 
51
51
  it "should load the node" do
52
52
  expect(Chef::Role).to receive(:load).with("will").and_return(@role)
@@ -638,7 +638,7 @@ describe Chef::Provider::Git do
638
638
  expect(@provider).to receive(:enable_submodules)
639
639
  expect(@provider).to receive(:add_remotes)
640
640
  @provider.run_action(:checkout)
641
- # @resource.should be_updated
641
+ # @resource.should be_updated
642
642
  end
643
643
 
644
644
  it "should not checkout if the destination exists or is a non empty directory" do
@@ -676,7 +676,7 @@ describe Chef::Provider::Git do
676
676
  expect(@provider).to receive(:enable_submodules)
677
677
  expect(@provider).to receive(:add_remotes)
678
678
  @provider.run_action(:sync)
679
- # @resource.should be_updated
679
+ # @resource.should be_updated
680
680
  end
681
681
 
682
682
  it "does not fetch any updates if the remote revision matches the current revision" do
@@ -696,7 +696,7 @@ describe Chef::Provider::Git do
696
696
  expect(@provider).to receive(:action_checkout)
697
697
  expect(@provider).not_to receive(:shell_out!)
698
698
  @provider.run_action(:sync)
699
- # @resource.should be_updated
699
+ # @resource.should be_updated
700
700
  end
701
701
 
702
702
  it "clones the repo instead of fetching updates if the deploy directory is empty" do