chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-x86-mingw32
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.
- data/CONTRIBUTING.md +9 -0
- data/README.md +1 -1
- data/Rakefile +12 -0
- data/bin/chef-service-manager +1 -1
- data/bin/chef-windows-service +35 -0
- data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
- data/distro/common/html/ctl_chef_client.html +3 -7
- data/distro/common/html/ctl_chef_server.html +609 -41
- data/distro/common/html/ctl_chef_shell.html +2 -2
- data/distro/common/html/ctl_chef_solo.html +1 -1
- data/distro/common/html/index.html +13 -13
- data/distro/common/html/knife.html +10 -10
- data/distro/common/html/knife_bootstrap.html +8 -8
- data/distro/common/html/knife_client.html +12 -12
- data/distro/common/html/knife_common_options.html +7 -7
- data/distro/common/html/knife_configure.html +3 -3
- data/distro/common/html/knife_cookbook.html +19 -19
- data/distro/common/html/knife_cookbook_site.html +28 -28
- data/distro/common/html/knife_data_bag.html +28 -13
- data/distro/common/html/knife_delete.html +2 -2
- data/distro/common/html/knife_deps.html +3 -3
- data/distro/common/html/knife_diff.html +4 -4
- data/distro/common/html/knife_download.html +3 -3
- data/distro/common/html/knife_edit.html +2 -2
- data/distro/common/html/knife_environment.html +14 -14
- data/distro/common/html/knife_exec.html +11 -11
- data/distro/common/html/knife_index_rebuild.html +2 -2
- data/distro/common/html/knife_list.html +3 -3
- data/distro/common/html/knife_node.html +23 -23
- data/distro/common/html/knife_raw.html +4 -4
- data/distro/common/html/knife_recipe_list.html +3 -3
- data/distro/common/html/knife_role.html +11 -11
- data/distro/common/html/knife_search.html +4 -4
- data/distro/common/html/knife_serve.html +3 -3
- data/distro/common/html/knife_show.html +3 -3
- data/distro/common/html/knife_ssh.html +7 -7
- data/distro/common/html/knife_ssl_check.html +7 -7
- data/distro/common/html/knife_ssl_fetch.html +9 -9
- data/distro/common/html/knife_status.html +3 -3
- data/distro/common/html/knife_tag.html +9 -9
- data/distro/common/html/knife_upload.html +3 -3
- data/distro/common/html/knife_user.html +9 -9
- data/distro/common/html/knife_using.html +11 -11
- data/distro/common/html/knife_xargs.html +14 -5
- data/distro/common/html/search.html +2 -2
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +2 -2
- data/distro/common/man/man1/knife-bootstrap.1 +7 -7
- data/distro/common/man/man1/knife-client.1 +10 -10
- data/distro/common/man/man1/knife-configure.1 +5 -5
- data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
- data/distro/common/man/man1/knife-cookbook.1 +12 -12
- data/distro/common/man/man1/knife-data-bag.1 +34 -10
- data/distro/common/man/man1/knife-delete.1 +5 -5
- data/distro/common/man/man1/knife-deps.1 +5 -5
- data/distro/common/man/man1/knife-diff.1 +7 -7
- data/distro/common/man/man1/knife-download.1 +5 -5
- data/distro/common/man/man1/knife-edit.1 +5 -5
- data/distro/common/man/man1/knife-environment.1 +11 -11
- data/distro/common/man/man1/knife-exec.1 +11 -11
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +5 -5
- data/distro/common/man/man1/knife-node.1 +16 -16
- data/distro/common/man/man1/knife-raw.1 +6 -6
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +7 -7
- data/distro/common/man/man1/knife-search.1 +6 -6
- data/distro/common/man/man1/knife-serve.1 +6 -6
- data/distro/common/man/man1/knife-show.1 +5 -5
- data/distro/common/man/man1/knife-ssh.1 +9 -9
- data/distro/common/man/man1/knife-ssl-check.1 +7 -7
- data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
- data/distro/common/man/man1/knife-status.1 +5 -5
- data/distro/common/man/man1/knife-tag.1 +8 -8
- data/distro/common/man/man1/knife-upload.1 +5 -5
- data/distro/common/man/man1/knife-user.1 +8 -8
- data/distro/common/man/man1/knife-xargs.1 +36 -10
- data/distro/common/man/man1/knife.1 +14 -14
- data/distro/common/man/man8/chef-client.8 +3 -10
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/ext/win32-eventlog/Rakefile +50 -0
- data/ext/win32-eventlog/chef-log.man +26 -0
- data/lib/chef/application.rb +313 -241
- data/lib/chef/application/apply.rb +10 -8
- data/lib/chef/application/client.rb +58 -33
- data/lib/chef/application/solo.rb +33 -12
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
- data/lib/chef/client.rb +18 -48
- data/lib/chef/config.rb +43 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
- data/lib/chef/cookbook/metadata.rb +81 -38
- data/lib/chef/cookbook/syntax_check.rb +18 -52
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_version.rb +58 -39
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/deprecation/provider/file.rb +2 -1
- data/lib/chef/dsl/data_query.rb +2 -29
- data/lib/chef/dsl/recipe.rb +8 -22
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
- data/lib/chef/event_loggers/base.rb +62 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
- data/lib/chef/exceptions.rb +18 -1
- data/lib/chef/file_cache.rb +3 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
- data/lib/chef/http.rb +20 -13
- data/lib/chef/http/ssl_policies.rb +2 -1
- data/lib/chef/json_compat.rb +9 -3
- data/lib/chef/knife.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +12 -18
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +43 -8
- data/lib/chef/knife/core/bootstrap_context.rb +6 -11
- data/lib/chef/knife/core/object_loader.rb +5 -5
- data/lib/chef/knife/core/status_presenter.rb +156 -0
- data/lib/chef/knife/core/subcommand_loader.rb +6 -5
- data/lib/chef/knife/core/ui.rb +4 -4
- data/lib/chef/knife/data_bag_create.rb +7 -32
- data/lib/chef/knife/data_bag_edit.rb +24 -43
- data/lib/chef/knife/data_bag_from_file.rb +6 -31
- data/lib/chef/knife/data_bag_secret_options.rb +142 -0
- data/lib/chef/knife/data_bag_show.rb +19 -33
- data/lib/chef/knife/node_from_file.rb +9 -8
- data/lib/chef/knife/ssh.rb +0 -7
- data/lib/chef/knife/ssl_check.rb +70 -6
- data/lib/chef/knife/status.rb +11 -58
- data/lib/chef/mixin/command/unix.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +54 -0
- data/lib/chef/mixin/descendants_tracker.rb +82 -0
- data/lib/chef/mixin/homebrew_user.rb +68 -0
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
- data/lib/chef/mixin/windows_env_helper.rb +56 -0
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node_map.rb +146 -0
- data/lib/chef/platform/provider_mapping.rb +11 -39
- data/lib/chef/platform/provider_priority_map.rb +80 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/platform/service_helpers.rb +113 -0
- data/lib/chef/provider.rb +24 -0
- data/lib/chef/provider/breakpoint.rb +2 -0
- data/lib/chef/provider/cookbook_file.rb +2 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +13 -9
- data/lib/chef/provider/deploy.rb +3 -2
- data/lib/chef/provider/deploy/revision.rb +4 -2
- data/lib/chef/provider/deploy/timestamped.rb +2 -0
- data/lib/chef/provider/directory.rb +2 -0
- data/lib/chef/provider/dsc_script.rb +179 -0
- data/lib/chef/provider/env.rb +25 -10
- data/lib/chef/provider/env/windows.rb +9 -16
- data/lib/chef/provider/erl_call.rb +2 -0
- data/lib/chef/provider/execute.rb +5 -2
- data/lib/chef/provider/file.rb +2 -0
- data/lib/chef/provider/git.rb +51 -23
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/pw.rb +9 -13
- data/lib/chef/provider/http_request.rb +2 -0
- data/lib/chef/provider/link.rb +3 -0
- data/lib/chef/provider/log.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +11 -9
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/package/aix.rb +2 -0
- data/lib/chef/provider/package/apt.rb +2 -0
- data/lib/chef/provider/package/dpkg.rb +2 -0
- data/lib/chef/provider/package/easy_install.rb +2 -0
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/freebsd/port.rb +1 -9
- data/lib/chef/provider/package/homebrew.rb +127 -0
- data/lib/chef/provider/package/ips.rb +2 -0
- data/lib/chef/provider/package/macports.rb +3 -0
- data/lib/chef/provider/package/pacman.rb +5 -4
- data/lib/chef/provider/package/paludis.rb +4 -2
- data/lib/chef/provider/package/portage.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -0
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/windows.rb +5 -2
- data/lib/chef/provider/package/yum.rb +2 -0
- data/lib/chef/provider/powershell_script.rb +3 -1
- data/lib/chef/provider/remote_directory.rb +25 -10
- data/lib/chef/provider/route.rb +2 -0
- data/lib/chef/provider/ruby_block.rb +2 -0
- data/lib/chef/provider/script.rb +6 -0
- data/lib/chef/provider/service/aix.rb +128 -0
- data/lib/chef/provider/service/aixinit.rb +117 -0
- data/lib/chef/provider/service/arch.rb +6 -0
- data/lib/chef/provider/service/debian.rb +35 -29
- data/lib/chef/provider/service/freebsd.rb +7 -1
- data/lib/chef/provider/service/gentoo.rb +5 -1
- data/lib/chef/provider/service/init.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +15 -8
- data/lib/chef/provider/service/invokercd.rb +6 -0
- data/lib/chef/provider/service/macosx.rb +4 -1
- data/lib/chef/provider/service/redhat.rb +9 -3
- data/lib/chef/provider/service/simple.rb +2 -0
- data/lib/chef/provider/service/solaris.rb +2 -0
- data/lib/chef/provider/service/systemd.rb +7 -0
- data/lib/chef/provider/service/upstart.rb +7 -0
- data/lib/chef/provider/service/windows.rb +5 -0
- data/lib/chef/provider/subversion.rb +2 -0
- data/lib/chef/provider/template.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +3 -2
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
- data/lib/chef/provider_resolver.rb +103 -0
- data/lib/chef/providers.rb +6 -2
- data/lib/chef/recipe.rb +2 -0
- data/lib/chef/resource.rb +69 -78
- data/lib/chef/resource/apt_package.rb +3 -1
- data/lib/chef/resource/bash.rb +1 -0
- data/lib/chef/resource/bff_package.rb +0 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +1 -2
- data/lib/chef/resource/conditional.rb +26 -6
- data/lib/chef/resource/cookbook_file.rb +2 -3
- data/lib/chef/resource/csh.rb +1 -0
- data/lib/chef/resource/deploy.rb +0 -1
- data/lib/chef/resource/deploy_revision.rb +6 -1
- data/lib/chef/resource/directory.rb +1 -2
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_script.rb +125 -0
- data/lib/chef/resource/easy_install_package.rb +2 -1
- data/lib/chef/resource/erl_call.rb +1 -0
- data/lib/chef/resource/execute.rb +26 -9
- data/lib/chef/resource/file.rb +1 -3
- data/lib/chef/resource/freebsd_package.rb +10 -23
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/git.rb +2 -1
- data/lib/chef/resource/homebrew_package.rb +46 -0
- data/lib/chef/resource/http_request.rb +1 -0
- data/lib/chef/resource/ips_package.rb +3 -1
- data/lib/chef/resource/link.rb +1 -2
- data/lib/chef/resource/log.rb +4 -0
- data/lib/chef/resource/lwrp_base.rb +24 -15
- data/lib/chef/resource/macports_package.rb +3 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -1
- data/lib/chef/resource/perl.rb +1 -0
- data/lib/chef/resource/powershell_script.rb +0 -2
- data/lib/chef/resource/python.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -2
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +2 -1
- data/lib/chef/resource/ruby.rb +1 -0
- data/lib/chef/resource/ruby_block.rb +3 -0
- data/lib/chef/resource/script.rb +2 -25
- data/lib/chef/resource/service.rb +0 -4
- data/lib/chef/resource/smartos_package.rb +3 -4
- data/lib/chef/resource/solaris_package.rb +7 -1
- data/lib/chef/resource/subversion.rb +0 -1
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/timestamped_deploy.rb +1 -2
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
- data/lib/chef/resource/windows_package.rb +3 -4
- data/lib/chef/resource/windows_script.rb +3 -0
- data/lib/chef/resource/windows_service.rb +2 -2
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource_collection.rb +50 -227
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
- data/lib/chef/resource_collection/resource_list.rb +89 -0
- data/lib/chef/resource_collection/resource_set.rb +170 -0
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +5 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +3 -2
- data/lib/chef/util/dsc/configuration_generator.rb +115 -0
- data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
- data/lib/chef/util/dsc/resource_info.rb +26 -0
- data/lib/chef/util/path_helper.rb +12 -0
- data/lib/chef/util/powershell/cmdlet.rb +136 -0
- data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/system.rb +9 -0
- data/lib/chef/win32/version.rb +2 -0
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/bootstrap/test-hints.erb +1 -1
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
- data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
- data/spec/data/lwrp/.DS_Store +0 -0
- data/spec/data/lwrp/providers/.DS_Store +0 -0
- data/spec/data/lwrp/providers/buck_passer.rb +9 -2
- data/spec/data/lwrp/resources/.DS_Store +0 -0
- data/spec/data/lwrp/resources/foo.rb +3 -2
- data/spec/data/lwrp_override/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
- data/spec/data/lwrp_override/resources/.DS_Store +0 -0
- data/spec/data/lwrp_override/resources/foo.rb +4 -3
- data/spec/functional/assets/chefinittest +34 -0
- data/spec/functional/assets/testchefsubsys +11 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +136 -0
- data/spec/functional/resource/aixinit_service_spec.rb +211 -0
- data/spec/functional/resource/base.rb +1 -0
- data/spec/functional/resource/batch_spec.rb +4 -11
- data/spec/functional/resource/cron_spec.rb +7 -1
- data/spec/functional/resource/dsc_script_spec.rb +382 -0
- data/spec/functional/resource/env_spec.rb +54 -0
- data/spec/functional/resource/execute_spec.rb +113 -0
- data/spec/functional/resource/file_spec.rb +2 -0
- data/spec/functional/resource/group_spec.rb +7 -4
- data/spec/functional/resource/powershell_spec.rb +198 -185
- data/spec/functional/resource/rpm_spec.rb +5 -4
- data/spec/functional/resource/user/dscl_spec.rb +2 -1
- data/spec/functional/util/path_helper_spec.rb +37 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
- data/spec/integration/client/client_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
- data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
- data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
- data/spec/integration/knife/chefignore_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/delete_spec.rb +1 -1
- data/spec/integration/knife/deps_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +1 -1
- data/spec/integration/knife/download_spec.rb +1 -1
- data/spec/integration/knife/list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +1 -1
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +1 -1
- data/spec/integration/knife/upload_spec.rb +4 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -0
- data/spec/support/chef_helpers.rb +1 -0
- data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
- data/spec/support/platform_helpers.rb +28 -0
- data/spec/support/shared/functional/file_resource.rb +6 -0
- data/spec/support/shared/functional/windows_script.rb +118 -0
- data/spec/support/shared/integration/integration_helper.rb +5 -2
- data/spec/support/shared/matchers/exit_with_code.rb +28 -0
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
- data/spec/support/shared/shared_examples.rb +14 -0
- data/spec/support/shared/unit/execute_resource.rb +0 -7
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +35 -2
- data/spec/tiny_server.rb +1 -2
- data/spec/unit/api_client_spec.rb +5 -1
- data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
- data/spec/unit/application/client_spec.rb +106 -13
- data/spec/unit/application/solo_spec.rb +25 -1
- data/spec/unit/client_spec.rb +1 -26
- data/spec/unit/config_fetcher_spec.rb +2 -1
- data/spec/unit/config_spec.rb +91 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
- data/spec/unit/cookbook/metadata_spec.rb +43 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
- data/spec/unit/cookbook_loader_spec.rb +4 -2
- data/spec/unit/cookbook_version_spec.rb +83 -2
- data/spec/unit/data_bag_item_spec.rb +5 -1
- data/spec/unit/data_bag_spec.rb +6 -1
- data/spec/unit/dsl/data_query_spec.rb +8 -110
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
- data/spec/unit/environment_spec.rb +6 -2
- data/spec/unit/exceptions_spec.rb +6 -0
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
- data/spec/unit/json_compat_spec.rb +12 -2
- data/spec/unit/knife/bootstrap_spec.rb +16 -63
- data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
- data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +28 -0
- data/spec/unit/knife/data_bag_create_spec.rb +63 -71
- data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
- data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
- data/spec/unit/knife/data_bag_show_spec.rb +74 -72
- data/spec/unit/knife/environment_from_file_spec.rb +3 -2
- data/spec/unit/knife/ssl_check_spec.rb +46 -1
- data/spec/unit/knife/status_spec.rb +1 -2
- data/spec/unit/knife_spec.rb +18 -1
- data/spec/unit/lwrp_spec.rb +29 -8
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
- data/spec/unit/node_map_spec.rb +155 -0
- data/spec/unit/node_spec.rb +11 -0
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/platform_spec.rb +23 -0
- data/spec/unit/provider/breakpoint_spec.rb +9 -9
- data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
- data/spec/unit/provider/cookbook_file_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +78 -60
- data/spec/unit/provider/cron_spec.rb +175 -175
- data/spec/unit/provider/deploy/revision_spec.rb +22 -21
- data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
- data/spec/unit/provider/deploy_spec.rb +231 -230
- data/spec/unit/provider/directory_spec.rb +55 -55
- data/spec/unit/provider/dsc_script_spec.rb +174 -0
- data/spec/unit/provider/env/windows_spec.rb +70 -34
- data/spec/unit/provider/env_spec.rb +95 -49
- data/spec/unit/provider/erl_call_spec.rb +9 -9
- data/spec/unit/provider/execute_spec.rb +43 -27
- data/spec/unit/provider/file/content_spec.rb +9 -9
- data/spec/unit/provider/file_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +221 -159
- data/spec/unit/provider/group/dscl_spec.rb +64 -63
- data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
- data/spec/unit/provider/group/groupadd_spec.rb +33 -33
- data/spec/unit/provider/group/groupmod_spec.rb +23 -23
- data/spec/unit/provider/group/pw_spec.rb +21 -21
- data/spec/unit/provider/group/usermod_spec.rb +20 -20
- data/spec/unit/provider/group/windows_spec.rb +15 -15
- data/spec/unit/provider/group_spec.rb +76 -76
- data/spec/unit/provider/http_request_spec.rb +30 -30
- data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
- data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
- data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
- data/spec/unit/provider/ifconfig_spec.rb +43 -43
- data/spec/unit/provider/link_spec.rb +60 -60
- data/spec/unit/provider/log_spec.rb +0 -4
- data/spec/unit/provider/mdadm_spec.rb +23 -23
- data/spec/unit/provider/mount/aix_spec.rb +17 -17
- data/spec/unit/provider/mount/mount_spec.rb +115 -119
- data/spec/unit/provider/mount/solaris_spec.rb +72 -72
- data/spec/unit/provider/mount/windows_spec.rb +24 -24
- data/spec/unit/provider/ohai_spec.rb +11 -11
- data/spec/unit/provider/package/aix_spec.rb +34 -34
- data/spec/unit/provider/package/apt_spec.rb +36 -36
- data/spec/unit/provider/package/dpkg_spec.rb +27 -27
- data/spec/unit/provider/package/easy_install_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
- data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
- data/spec/unit/provider/package/homebrew_spec.rb +266 -0
- data/spec/unit/provider/package/ips_spec.rb +34 -34
- data/spec/unit/provider/package/macports_spec.rb +49 -49
- data/spec/unit/provider/package/pacman_spec.rb +35 -39
- data/spec/unit/provider/package/paludis_spec.rb +20 -20
- data/spec/unit/provider/package/portage_spec.rb +38 -38
- data/spec/unit/provider/package/rpm_spec.rb +29 -29
- data/spec/unit/provider/package/rubygems_spec.rb +284 -270
- data/spec/unit/provider/package/smartos_spec.rb +15 -15
- data/spec/unit/provider/package/solaris_spec.rb +35 -35
- data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +6 -6
- data/spec/unit/provider/package/yum_spec.rb +416 -416
- data/spec/unit/provider/package/zypper_spec.rb +47 -47
- data/spec/unit/provider/package_spec.rb +107 -107
- data/spec/unit/provider/powershell_spec.rb +1 -1
- data/spec/unit/provider/registry_key_spec.rb +61 -61
- data/spec/unit/provider/remote_directory_spec.rb +36 -36
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
- data/spec/unit/provider/remote_file/content_spec.rb +45 -45
- data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
- data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
- data/spec/unit/provider/remote_file/http_spec.rb +44 -44
- data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
- data/spec/unit/provider/remote_file_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +63 -63
- data/spec/unit/provider/ruby_block_spec.rb +4 -4
- data/spec/unit/provider/script_spec.rb +12 -12
- data/spec/unit/provider/service/aix_service_spec.rb +181 -0
- data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
- data/spec/unit/provider/service/arch_service_spec.rb +48 -48
- data/spec/unit/provider/service/debian_service_spec.rb +40 -40
- data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
- data/spec/unit/provider/service/init_service_spec.rb +39 -39
- data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
- data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
- data/spec/unit/provider/service/macosx_spec.rb +49 -49
- data/spec/unit/provider/service/redhat_spec.rb +27 -27
- data/spec/unit/provider/service/simple_service_spec.rb +28 -28
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
- data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
- data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
- data/spec/unit/provider/service/windows_spec.rb +92 -92
- data/spec/unit/provider/service_spec.rb +40 -40
- data/spec/unit/provider/subversion_spec.rb +80 -80
- data/spec/unit/provider/template/content_spec.rb +9 -9
- data/spec/unit/provider/template_spec.rb +6 -6
- data/spec/unit/provider/user/dscl_spec.rb +170 -167
- data/spec/unit/provider/user/pw_spec.rb +48 -48
- data/spec/unit/provider/user/solaris_spec.rb +8 -8
- data/spec/unit/provider/user/useradd_spec.rb +1 -1
- data/spec/unit/provider/user/windows_spec.rb +26 -26
- data/spec/unit/provider/user_spec.rb +72 -72
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
- data/spec/unit/provider_resolver_spec.rb +387 -0
- data/spec/unit/recipe_spec.rb +33 -12
- data/spec/unit/resource/apt_package_spec.rb +10 -13
- data/spec/unit/resource/bash_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +11 -7
- data/spec/unit/resource/chef_gem_spec.rb +8 -15
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +35 -16
- data/spec/unit/resource/cookbook_file_spec.rb +13 -13
- data/spec/unit/resource/cron_spec.rb +37 -37
- data/spec/unit/resource/csh_spec.rb +4 -4
- data/spec/unit/resource/deploy_revision_spec.rb +13 -18
- data/spec/unit/resource/deploy_spec.rb +60 -55
- data/spec/unit/resource/directory_spec.rb +18 -18
- data/spec/unit/resource/dpkg_package_spec.rb +8 -14
- data/spec/unit/resource/dsc_script_spec.rb +98 -0
- data/spec/unit/resource/easy_install_package_spec.rb +9 -18
- data/spec/unit/resource/env_spec.rb +12 -12
- data/spec/unit/resource/erl_call_spec.rb +11 -11
- data/spec/unit/resource/execute_spec.rb +5 -0
- data/spec/unit/resource/file_spec.rb +29 -29
- data/spec/unit/resource/freebsd_package_spec.rb +11 -12
- data/spec/unit/resource/gem_package_spec.rb +8 -15
- data/spec/unit/resource/git_spec.rb +12 -8
- data/spec/unit/resource/group_spec.rb +27 -27
- data/spec/unit/resource/homebrew_package_spec.rb +50 -0
- data/spec/unit/resource/http_request_spec.rb +6 -6
- data/spec/unit/resource/ifconfig_spec.rb +8 -8
- data/spec/unit/resource/ips_package_spec.rb +10 -13
- data/spec/unit/resource/link_spec.rb +25 -25
- data/spec/unit/resource/log_spec.rb +9 -9
- data/spec/unit/resource/macports_package_spec.rb +8 -13
- data/spec/unit/resource/mdadm_spec.rb +18 -18
- data/spec/unit/resource/mount_spec.rb +45 -45
- data/spec/unit/resource/ohai_spec.rb +7 -7
- data/spec/unit/resource/package_spec.rb +12 -12
- data/spec/unit/resource/pacman_package_spec.rb +8 -14
- data/spec/unit/resource/perl_spec.rb +4 -4
- data/spec/unit/resource/portage_package_spec.rb +3 -3
- data/spec/unit/resource/powershell_spec.rb +7 -7
- data/spec/unit/resource/python_spec.rb +4 -4
- data/spec/unit/resource/registry_key_spec.rb +32 -32
- data/spec/unit/resource/remote_directory_spec.rb +17 -17
- data/spec/unit/resource/remote_file_spec.rb +41 -41
- data/spec/unit/resource/route_spec.rb +19 -19
- data/spec/unit/resource/rpm_package_spec.rb +9 -13
- data/spec/unit/resource/ruby_block_spec.rb +8 -8
- data/spec/unit/resource/ruby_spec.rb +4 -4
- data/spec/unit/resource/scm_spec.rb +40 -40
- data/spec/unit/resource/script_spec.rb +2 -2
- data/spec/unit/resource/service_spec.rb +37 -47
- data/spec/unit/resource/smartos_package_spec.rb +10 -15
- data/spec/unit/resource/solaris_package_spec.rb +13 -28
- data/spec/unit/resource/subversion_spec.rb +16 -12
- data/spec/unit/resource/template_spec.rb +35 -35
- data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
- data/spec/unit/resource/user_spec.rb +23 -23
- data/spec/unit/resource/windows_package_spec.rb +17 -10
- data/spec/unit/resource/windows_service_spec.rb +9 -6
- data/spec/unit/resource/yum_package_spec.rb +16 -21
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
- data/spec/unit/resource_collection_spec.rb +73 -92
- data/spec/unit/resource_definition_spec.rb +38 -40
- data/spec/unit/resource_reporter_spec.rb +3 -3
- data/spec/unit/resource_spec.rb +68 -33
- data/spec/unit/rest_spec.rb +83 -76
- data/spec/unit/role_spec.rb +5 -0
- data/spec/unit/run_list_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +245 -238
- data/spec/unit/shell/shell_ext_spec.rb +1 -1
- data/spec/unit/user_spec.rb +5 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
- data/spec/unit/util/path_helper_spec.rb +23 -1
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
- data/spec/unit/workstation_config_loader_spec.rb +1 -1
- metadata +303 -196
- checksums.yaml +0 -7
- data/distro/README +0 -2
- data/distro/arch/etc/conf.d/chef-client.conf +0 -5
- data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
- data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
- data/distro/arch/etc/conf.d/chef-server.conf +0 -10
- data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
- data/distro/arch/etc/rc.d/chef-client +0 -90
- data/distro/arch/etc/rc.d/chef-expander +0 -78
- data/distro/arch/etc/rc.d/chef-server +0 -78
- data/distro/arch/etc/rc.d/chef-server-webui +0 -78
- data/distro/arch/etc/rc.d/chef-solr +0 -78
- data/distro/debian/etc/default/chef-client +0 -4
- data/distro/debian/etc/default/chef-expander +0 -8
- data/distro/debian/etc/default/chef-server +0 -9
- data/distro/debian/etc/default/chef-server-webui +0 -9
- data/distro/debian/etc/default/chef-solr +0 -8
- data/distro/debian/etc/init.d/chef-client +0 -212
- data/distro/debian/etc/init.d/chef-expander +0 -176
- data/distro/debian/etc/init.d/chef-server +0 -122
- data/distro/debian/etc/init.d/chef-server-webui +0 -123
- data/distro/debian/etc/init.d/chef-solr +0 -176
- data/distro/debian/etc/init/chef-client.conf +0 -17
- data/distro/debian/etc/init/chef-expander.conf +0 -17
- data/distro/debian/etc/init/chef-server-webui.conf +0 -17
- data/distro/debian/etc/init/chef-server.conf +0 -17
- data/distro/debian/etc/init/chef-solr.conf +0 -17
- data/distro/redhat/etc/init.d/chef-client +0 -121
- data/distro/redhat/etc/init.d/chef-expander +0 -104
- data/distro/redhat/etc/init.d/chef-server +0 -112
- data/distro/redhat/etc/init.d/chef-server-webui +0 -112
- data/distro/redhat/etc/init.d/chef-solr +0 -104
- data/distro/redhat/etc/logrotate.d/chef-client +0 -8
- data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
- data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
- data/distro/redhat/etc/sysconfig/chef-client +0 -15
- data/distro/redhat/etc/sysconfig/chef-expander +0 -7
- data/distro/redhat/etc/sysconfig/chef-server +0 -14
- data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
- data/distro/redhat/etc/sysconfig/chef-solr +0 -8
- data/distro/windows/service_manager.rb +0 -20
- data/lib/chef/resource_platform_map.rb +0 -151
- data/spec/support/shared/matchers.rb +0 -17
- data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -53,27 +53,27 @@ describe Chef::Provider::File::Content do
|
|
53
53
|
describe "when the resource has a content attribute set" do
|
54
54
|
|
55
55
|
before do
|
56
|
-
new_resource.
|
56
|
+
allow(new_resource).to receive(:content).and_return("Do do do do, do do do do, do do do do, do do do do")
|
57
57
|
end
|
58
58
|
|
59
59
|
it "returns a tempfile" do
|
60
|
-
content.tempfile.
|
60
|
+
expect(content.tempfile).to be_a_kind_of(Tempfile)
|
61
61
|
end
|
62
62
|
|
63
63
|
it "the tempfile contents should match the resource contents" do
|
64
|
-
IO.read(content.tempfile.path).
|
64
|
+
expect(IO.read(content.tempfile.path)).to eq(new_resource.content)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "returns a tempfile in the tempdir when :file_staging_uses_destdir is not set" do
|
68
68
|
Chef::Config[:file_staging_uses_destdir] = false
|
69
|
-
content.tempfile.path.start_with?(Dir::tmpdir).
|
70
|
-
canonicalize_path(content.tempfile.path).start_with?(enclosing_directory).
|
69
|
+
expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_true
|
70
|
+
expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_false
|
71
71
|
end
|
72
72
|
|
73
73
|
it "returns a tempfile in the destdir when :file_desployment_uses_destdir is not set" do
|
74
74
|
Chef::Config[:file_staging_uses_destdir] = true
|
75
|
-
content.tempfile.path.start_with?(Dir::tmpdir).
|
76
|
-
canonicalize_path(content.tempfile.path).start_with?(enclosing_directory).
|
75
|
+
expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_false
|
76
|
+
expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_true
|
77
77
|
end
|
78
78
|
|
79
79
|
end
|
@@ -81,11 +81,11 @@ describe Chef::Provider::File::Content do
|
|
81
81
|
describe "when the resource does not have a content attribute set" do
|
82
82
|
|
83
83
|
before do
|
84
|
-
new_resource.
|
84
|
+
allow(new_resource).to receive(:content).and_return(nil)
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should return nil instead of a tempfile" do
|
88
|
-
content.tempfile.
|
88
|
+
expect(content.tempfile).to be_nil
|
89
89
|
end
|
90
90
|
|
91
91
|
end
|
@@ -21,7 +21,7 @@ require 'spec_helper'
|
|
21
21
|
describe Chef::Provider::Git do
|
22
22
|
|
23
23
|
before(:each) do
|
24
|
-
STDOUT.
|
24
|
+
allow(STDOUT).to receive(:tty?).and_return(true)
|
25
25
|
Chef::Log.level = :info
|
26
26
|
|
27
27
|
@current_resource = Chef::Resource::Git.new("web2.0 app")
|
@@ -47,36 +47,36 @@ describe Chef::Provider::Git do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it "sets the current revision to nil if the deploy dir does not exist" do
|
50
|
-
::File.
|
51
|
-
@provider.find_current_revision.
|
50
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(false)
|
51
|
+
expect(@provider.find_current_revision).to be_nil
|
52
52
|
end
|
53
53
|
|
54
54
|
it "determines the current revision when there is one" do
|
55
|
-
::File.
|
55
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
|
56
56
|
@stdout = "9b4d8dc38dd471246e7cfb1c3c1ad14b0f2bee13\n"
|
57
|
-
@provider.
|
58
|
-
@provider.find_current_revision.
|
57
|
+
expect(@provider).to receive(:shell_out!).with('git rev-parse HEAD', {:cwd => '/my/deploy/dir', :returns => [0,128]}).and_return(double("ShellOut result", :stdout => @stdout))
|
58
|
+
expect(@provider.find_current_revision).to eql("9b4d8dc38dd471246e7cfb1c3c1ad14b0f2bee13")
|
59
59
|
end
|
60
60
|
|
61
61
|
it "gives the current revision as nil when there is no current revision" do
|
62
|
-
::File.
|
62
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
|
63
63
|
@stderr = "fatal: Not a git repository (or any of the parent directories): .git"
|
64
64
|
@stdout = ""
|
65
|
-
@provider.
|
66
|
-
@provider.find_current_revision.
|
65
|
+
expect(@provider).to receive(:shell_out!).with('git rev-parse HEAD', :cwd => '/my/deploy/dir', :returns => [0,128]).and_return(double("ShellOut result", :stdout => "", :stderr => @stderr))
|
66
|
+
expect(@provider.find_current_revision).to be_nil
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
it "creates a current_resource with the currently deployed revision when a clone exists in the destination dir" do
|
71
|
-
@provider.
|
71
|
+
allow(@provider).to receive(:find_current_revision).and_return("681c9802d1c62a45b490786c18f0b8216b309440")
|
72
72
|
@provider.load_current_resource
|
73
|
-
@provider.current_resource.name.
|
74
|
-
@provider.current_resource.revision.
|
73
|
+
expect(@provider.current_resource.name).to eql(@resource.name)
|
74
|
+
expect(@provider.current_resource.revision).to eql("681c9802d1c62a45b490786c18f0b8216b309440")
|
75
75
|
end
|
76
76
|
|
77
77
|
it "keeps the node and resource passed to it on initialize" do
|
78
|
-
@provider.node.
|
79
|
-
@provider.new_resource.
|
78
|
+
expect(@provider.node).to equal(@node)
|
79
|
+
expect(@provider.new_resource).to equal(@resource)
|
80
80
|
end
|
81
81
|
|
82
82
|
context "resolving revisions to a SHA" do
|
@@ -86,15 +86,15 @@ describe Chef::Provider::Git do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it "returns resource.revision as is if revision is already a full SHA" do
|
89
|
-
@provider.target_revision.
|
89
|
+
expect(@provider.target_revision).to eql("d35af14d41ae22b19da05d7d03a0bafc321b244c")
|
90
90
|
end
|
91
91
|
|
92
92
|
it "converts resource.revision from a tag to a SHA" do
|
93
93
|
@resource.revision "v1.0"
|
94
94
|
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
95
95
|
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n")
|
96
|
-
@provider.
|
97
|
-
@provider.target_revision.
|
96
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
97
|
+
expect(@provider.target_revision).to eql("503c22a5e41f5ae3193460cca044ed1435029f53")
|
98
98
|
end
|
99
99
|
|
100
100
|
it "converts resource.revision from an annotated tag to the tagged SHA (not SHA of tag)" do
|
@@ -102,40 +102,86 @@ describe Chef::Provider::Git do
|
|
102
102
|
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
103
103
|
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n" +
|
104
104
|
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0^{}\n")
|
105
|
-
@provider.
|
106
|
-
@provider.target_revision.
|
105
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
106
|
+
expect(@provider.target_revision).to eql("663c22a5e41f5ae3193460cca044ed1435029f53")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "converts resource.revision from a tag to a SHA using an exact match" do
|
110
|
+
@resource.revision "v1.0"
|
111
|
+
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
112
|
+
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/releases/v1.0\n" +
|
113
|
+
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/v1.0\n")
|
114
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
115
|
+
expect(@provider.target_revision).to eql("503c22a5e41f5ae3193460cca044ed1435029f53")
|
116
|
+
end
|
117
|
+
|
118
|
+
it "converts resource.revision from a tag to a SHA, matching tags first, then heads" do
|
119
|
+
@resource.revision "v1.0"
|
120
|
+
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
121
|
+
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/v1.0\n" +
|
122
|
+
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n")
|
123
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
124
|
+
expect(@provider.target_revision).to eql("663c22a5e41f5ae3193460cca044ed1435029f53")
|
125
|
+
end
|
126
|
+
|
127
|
+
it "converts resource.revision from a tag to a SHA, matching heads if no tags match" do
|
128
|
+
@resource.revision "v1.0"
|
129
|
+
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
130
|
+
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/v1.1\n" +
|
131
|
+
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n")
|
132
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
133
|
+
expect(@provider.target_revision).to eql("503c22a5e41f5ae3193460cca044ed1435029f53")
|
134
|
+
end
|
135
|
+
|
136
|
+
it "converts resource.revision from a tag to a SHA, matching tags first, then heads, then revision" do
|
137
|
+
@resource.revision "refs/pulls/v1.0"
|
138
|
+
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
139
|
+
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/v1.0\n" +
|
140
|
+
"805c22a5e41f5ae3193460cca044ed1435029f53\trefs/pulls/v1.0\n" +
|
141
|
+
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n")
|
142
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"refs/pulls/v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
143
|
+
expect(@provider.target_revision).to eql("805c22a5e41f5ae3193460cca044ed1435029f53")
|
144
|
+
end
|
145
|
+
|
146
|
+
it "converts resource.revision from a tag to a SHA, using full path if provided" do
|
147
|
+
@resource.revision "refs/heads/v1.0"
|
148
|
+
@stdout = ("d03c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n" +
|
149
|
+
"663c22a5e41f5ae3193460cca044ed1435029f53\trefs/tags/v1.0\n" +
|
150
|
+
"503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/v1.0\n")
|
151
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"refs/heads/v1.0*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
152
|
+
expect(@provider.target_revision).to eql("503c22a5e41f5ae3193460cca044ed1435029f53")
|
107
153
|
end
|
108
154
|
|
109
155
|
it "raises an invalid remote reference error if you try to deploy from ``origin'' and assertions are run" do
|
110
156
|
@resource.revision "origin/"
|
111
157
|
@provider.action = :checkout
|
112
158
|
@provider.define_resource_requirements
|
113
|
-
::File.
|
114
|
-
|
159
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
160
|
+
expect {@provider.process_resource_requirements}.to raise_error(Chef::Exceptions::InvalidRemoteGitReference)
|
115
161
|
end
|
116
162
|
|
117
163
|
it "raises an unresolvable git reference error if the revision can't be resolved to any revision and assertions are run" do
|
118
164
|
@resource.revision "FAIL, that's the revision I want"
|
119
165
|
@provider.action = :checkout
|
120
|
-
@provider.
|
166
|
+
expect(@provider).to receive(:shell_out!).and_return(double("ShellOut result", :stdout => "\n"))
|
121
167
|
@provider.define_resource_requirements
|
122
|
-
|
168
|
+
expect { @provider.process_resource_requirements }.to raise_error(Chef::Exceptions::UnresolvableGitReference)
|
123
169
|
end
|
124
170
|
|
125
171
|
it "does not raise an error if the revision can't be resolved when assertions are not run" do
|
126
172
|
@resource.revision "FAIL, that's the revision I want"
|
127
|
-
@provider.
|
128
|
-
@provider.target_revision.
|
173
|
+
expect(@provider).to receive(:shell_out!).and_return(double("ShellOut result", :stdout => "\n"))
|
174
|
+
expect(@provider.target_revision).to eq(nil)
|
129
175
|
end
|
130
176
|
|
131
177
|
it "does not raise an error when the revision is valid and assertions are run." do
|
132
178
|
@resource.revision "0.8-alpha"
|
133
179
|
@stdout = "503c22a5e41f5ae3193460cca044ed1435029f53\trefs/heads/0.8-alpha\n"
|
134
|
-
@provider.
|
180
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"0.8-alpha*\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
135
181
|
@provider.action = :checkout
|
136
|
-
::File.
|
182
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
137
183
|
@provider.define_resource_requirements
|
138
|
-
|
184
|
+
expect { @provider.process_resource_requirements }.not_to raise_error
|
139
185
|
end
|
140
186
|
|
141
187
|
it "gives the latest HEAD revision SHA if nothing is specified" do
|
@@ -156,13 +202,13 @@ b7d19519a1c15f1c1a324e2683bd728b6198ce5a\trefs/tags/0.7.8^{}
|
|
156
202
|
ebc1b392fe7e8f0fbabc305c299b4d365d2b4d9b\trefs/tags/chef-server-package
|
157
203
|
SHAS
|
158
204
|
@resource.revision ''
|
159
|
-
@provider.
|
160
|
-
@provider.target_revision.
|
205
|
+
expect(@provider).to receive(:shell_out!).with(@git_ls_remote + "\"HEAD\"", {:log_tag=>"git[web2.0 app]"}).and_return(double("ShellOut result", :stdout => @stdout))
|
206
|
+
expect(@provider.target_revision).to eql("28af684d8460ba4793eda3e7ac238c864a5d029a")
|
161
207
|
end
|
162
208
|
end
|
163
209
|
|
164
210
|
it "responds to :revision_slug as an alias for target_revision" do
|
165
|
-
@provider.
|
211
|
+
expect(@provider).to respond_to(:revision_slug)
|
166
212
|
end
|
167
213
|
|
168
214
|
context "with an ssh wrapper" do
|
@@ -179,11 +225,11 @@ SHAS
|
|
179
225
|
before do
|
180
226
|
@resource.user deploy_user
|
181
227
|
@resource.ssh_wrapper wrapper
|
182
|
-
Etc.
|
228
|
+
allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/deployNinja"))
|
183
229
|
end
|
184
230
|
context "without a timeout set" do
|
185
231
|
it "clones a repo with default git options" do
|
186
|
-
@provider.
|
232
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, default_options)
|
187
233
|
@provider.clone
|
188
234
|
end
|
189
235
|
end
|
@@ -191,7 +237,7 @@ SHAS
|
|
191
237
|
let (:seconds) { 10 }
|
192
238
|
before { @resource.timeout(seconds) }
|
193
239
|
it "clones a repo with amended git options" do
|
194
|
-
@provider.
|
240
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, default_options.merge(:timeout => seconds))
|
195
241
|
@provider.clone
|
196
242
|
end
|
197
243
|
end
|
@@ -211,7 +257,7 @@ SHAS
|
|
211
257
|
end
|
212
258
|
before { @resource.environment(override_home) }
|
213
259
|
it "clones a repo with amended git options with specific home" do
|
214
|
-
@provider.
|
260
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, overrided_options)
|
215
261
|
@provider.clone
|
216
262
|
end
|
217
263
|
end
|
@@ -219,11 +265,11 @@ SHAS
|
|
219
265
|
|
220
266
|
it "runs a clone command with escaped destination" do
|
221
267
|
@resource.user "deployNinja"
|
222
|
-
Etc.
|
268
|
+
allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/deployNinja"))
|
223
269
|
@resource.destination "/Application Support/with/space"
|
224
270
|
@resource.ssh_wrapper "do_it_this_way.sh"
|
225
271
|
expected_cmd = "git clone \"git://github.com/opscode/chef.git\" \"/Application Support/with/space\""
|
226
|
-
@provider.
|
272
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :user => "deployNinja",
|
227
273
|
:environment =>{"GIT_SSH"=>"do_it_this_way.sh",
|
228
274
|
"HOME" => "/home/deployNinja"},
|
229
275
|
:log_tag => "git[web2.0 app]")
|
@@ -233,53 +279,69 @@ SHAS
|
|
233
279
|
it "compiles a clone command using --depth for shallow cloning" do
|
234
280
|
@resource.depth 5
|
235
281
|
expected_cmd = "git clone --depth 5 \"git://github.com/opscode/chef.git\" \"/my/deploy/dir\""
|
236
|
-
|
282
|
+
version_response = double('shell_out')
|
283
|
+
allow(version_response).to receive(:stdout) { 'git version 1.7.9' }
|
284
|
+
expect(@provider).to receive(:shell_out!).with("git --version",
|
285
|
+
:log_tag => "git[web2.0 app]").and_return(version_response)
|
286
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :log_tag => "git[web2.0 app]")
|
287
|
+
@provider.clone
|
288
|
+
end
|
289
|
+
|
290
|
+
it "compiles a clone command using --no-single-branch for shallow cloning when git >= 1.7.10" do
|
291
|
+
@resource.depth 5
|
292
|
+
expected_cmd = "git clone --depth 5 --no-single-branch \"git://github.com/opscode/chef.git\" \"/my/deploy/dir\""
|
293
|
+
version_response = double('shell_out')
|
294
|
+
allow(version_response).to receive(:stdout) { 'git version 1.7.10' }
|
295
|
+
expect(@provider).to receive(:shell_out!).with("git --version",
|
296
|
+
:log_tag => "git[web2.0 app]").and_return(version_response)
|
297
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :log_tag => "git[web2.0 app]")
|
237
298
|
@provider.clone
|
238
299
|
end
|
239
300
|
|
240
301
|
it "compiles a clone command with a remote other than ``origin''" do
|
241
302
|
@resource.remote "opscode"
|
242
303
|
expected_cmd = "git clone -o opscode \"git://github.com/opscode/chef.git\" \"/my/deploy/dir\""
|
243
|
-
@provider.
|
304
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :log_tag => "git[web2.0 app]")
|
244
305
|
@provider.clone
|
245
306
|
end
|
246
307
|
|
247
|
-
it "runs a checkout command with default options
|
248
|
-
|
249
|
-
|
250
|
-
|
308
|
+
it "runs a checkout command with default options" do
|
309
|
+
expect(@provider).to receive(:shell_out!).with('git branch -f deploy d35af14d41ae22b19da05d7d03a0bafc321b244c', :cwd => "/my/deploy/dir",
|
310
|
+
:log_tag => "git[web2.0 app]").ordered
|
311
|
+
expect(@provider).to receive(:shell_out!).with('git checkout deploy', :cwd => "/my/deploy/dir",
|
312
|
+
:log_tag => "git[web2.0 app]").ordered
|
251
313
|
@provider.checkout
|
252
314
|
end
|
253
315
|
|
254
316
|
it "runs an enable_submodule command" do
|
255
317
|
@resource.enable_submodules true
|
256
318
|
expected_cmd = "git submodule sync"
|
257
|
-
@provider.
|
319
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd => "/my/deploy/dir",
|
258
320
|
:log_tag => "git[web2.0 app]")
|
259
321
|
expected_cmd = "git submodule update --init --recursive"
|
260
|
-
@provider.
|
322
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
|
261
323
|
@provider.enable_submodules
|
262
324
|
end
|
263
325
|
|
264
326
|
it "does nothing for enable_submodules if resource.enable_submodules #=> false" do
|
265
|
-
@provider.
|
327
|
+
expect(@provider).not_to receive(:shell_out!)
|
266
328
|
@provider.enable_submodules
|
267
329
|
end
|
268
330
|
|
269
331
|
it "runs a sync command with default options" do
|
270
|
-
@provider.
|
332
|
+
expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
|
271
333
|
expected_cmd = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
|
272
|
-
@provider.
|
334
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd=> "/my/deploy/dir", :log_tag => "git[web2.0 app]")
|
273
335
|
@provider.fetch_updates
|
274
336
|
end
|
275
337
|
|
276
338
|
it "runs a sync command with the user and group specified in the resource" do
|
277
339
|
@resource.user("whois")
|
278
|
-
Etc.
|
340
|
+
allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/whois"))
|
279
341
|
@resource.group("thisis")
|
280
|
-
@provider.
|
342
|
+
expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
|
281
343
|
expected_cmd = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
|
282
|
-
@provider.
|
344
|
+
expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd => "/my/deploy/dir",
|
283
345
|
:user => "whois", :group => "thisis",
|
284
346
|
:log_tag => "git[web2.0 app]",
|
285
347
|
:environment=>{"HOME"=>"/home/whois"})
|
@@ -288,17 +350,17 @@ SHAS
|
|
288
350
|
|
289
351
|
it "configures remote tracking branches when remote is ``origin''" do
|
290
352
|
@resource.remote "origin"
|
291
|
-
@provider.
|
353
|
+
expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
|
292
354
|
fetch_command = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
|
293
|
-
@provider.
|
355
|
+
expect(@provider).to receive(:shell_out!).with(fetch_command, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
|
294
356
|
@provider.fetch_updates
|
295
357
|
end
|
296
358
|
|
297
359
|
it "configures remote tracking branches when remote is not ``origin''" do
|
298
360
|
@resource.remote "opscode"
|
299
|
-
@provider.
|
361
|
+
expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
|
300
362
|
fetch_command = "git fetch opscode && git fetch opscode --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
|
301
|
-
@provider.
|
363
|
+
expect(@provider).to receive(:shell_out!).with(fetch_command, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
|
302
364
|
@provider.fetch_updates
|
303
365
|
end
|
304
366
|
|
@@ -306,14 +368,14 @@ SHAS
|
|
306
368
|
|
307
369
|
it "checks if a remote with this name already exists" do
|
308
370
|
command_response = double('shell_out')
|
309
|
-
command_response.
|
371
|
+
allow(command_response).to receive(:exitstatus) { 1 }
|
310
372
|
expected_command = "git config --get remote.#{@resource.remote}.url"
|
311
|
-
@provider.
|
373
|
+
expect(@provider).to receive(:shell_out!).with(expected_command,
|
312
374
|
:cwd => "/my/deploy/dir",
|
313
375
|
:log_tag => "git[web2.0 app]",
|
314
376
|
:returns => [0,1,2]).and_return(command_response)
|
315
377
|
add_remote_command = "git remote add #{@resource.remote} #{@resource.repository}"
|
316
|
-
@provider.
|
378
|
+
expect(@provider).to receive(:shell_out!).with(add_remote_command,
|
317
379
|
:cwd => "/my/deploy/dir",
|
318
380
|
:log_tag => "git[web2.0 app]")
|
319
381
|
@provider.setup_remote_tracking_branches(@resource.remote, @resource.repository)
|
@@ -322,11 +384,11 @@ SHAS
|
|
322
384
|
it "runs the config with the user and group specified in the resource" do
|
323
385
|
@resource.user("whois")
|
324
386
|
@resource.group("thisis")
|
325
|
-
Etc.
|
387
|
+
allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/whois"))
|
326
388
|
command_response = double('shell_out')
|
327
|
-
command_response.
|
389
|
+
allow(command_response).to receive(:exitstatus) { 1 }
|
328
390
|
expected_command = "git config --get remote.#{@resource.remote}.url"
|
329
|
-
@provider.
|
391
|
+
expect(@provider).to receive(:shell_out!).with(expected_command,
|
330
392
|
:cwd => "/my/deploy/dir",
|
331
393
|
:log_tag => "git[web2.0 app]",
|
332
394
|
:user => "whois",
|
@@ -334,7 +396,7 @@ SHAS
|
|
334
396
|
:environment=>{"HOME"=>"/home/whois"},
|
335
397
|
:returns => [0,1,2]).and_return(command_response)
|
336
398
|
add_remote_command = "git remote add #{@resource.remote} #{@resource.repository}"
|
337
|
-
@provider.
|
399
|
+
expect(@provider).to receive(:shell_out!).with(add_remote_command,
|
338
400
|
:cwd => "/my/deploy/dir",
|
339
401
|
:log_tag => "git[web2.0 app]",
|
340
402
|
:user => "whois",
|
@@ -346,14 +408,14 @@ SHAS
|
|
346
408
|
describe "when a remote with a given name hasn't been configured yet" do
|
347
409
|
it "adds a new remote " do
|
348
410
|
command_response = double('shell_out')
|
349
|
-
command_response.
|
411
|
+
allow(command_response).to receive(:exitstatus) { 1 }
|
350
412
|
check_remote_command = "git config --get remote.#{@resource.remote}.url"
|
351
|
-
@provider.
|
413
|
+
expect(@provider).to receive(:shell_out!).with(check_remote_command,
|
352
414
|
:cwd => "/my/deploy/dir",
|
353
415
|
:log_tag => "git[web2.0 app]",
|
354
416
|
:returns => [0,1,2]).and_return(command_response)
|
355
417
|
expected_command = "git remote add #{@resource.remote} #{@resource.repository}"
|
356
|
-
@provider.
|
418
|
+
expect(@provider).to receive(:shell_out!).with(expected_command,
|
357
419
|
:cwd => "/my/deploy/dir",
|
358
420
|
:log_tag => "git[web2.0 app]")
|
359
421
|
@provider.setup_remote_tracking_branches(@resource.remote, @resource.repository)
|
@@ -363,15 +425,15 @@ SHAS
|
|
363
425
|
describe "when a remote with a given name has already been configured" do
|
364
426
|
it "updates remote url when the url is different" do
|
365
427
|
command_response = double('shell_out')
|
366
|
-
command_response.
|
367
|
-
command_response.
|
428
|
+
allow(command_response).to receive(:exitstatus) { 0 }
|
429
|
+
allow(command_response).to receive(:stdout) { "some_other_url" }
|
368
430
|
check_remote_command = "git config --get remote.#{@resource.remote}.url"
|
369
|
-
@provider.
|
431
|
+
expect(@provider).to receive(:shell_out!).with(check_remote_command,
|
370
432
|
:cwd => "/my/deploy/dir",
|
371
433
|
:log_tag => "git[web2.0 app]",
|
372
434
|
:returns => [0,1,2]).and_return(command_response)
|
373
435
|
expected_command = "git config --replace-all remote.#{@resource.remote}.url #{@resource.repository}"
|
374
|
-
@provider.
|
436
|
+
expect(@provider).to receive(:shell_out!).with(expected_command,
|
375
437
|
:cwd => "/my/deploy/dir",
|
376
438
|
:log_tag => "git[web2.0 app]")
|
377
439
|
@provider.setup_remote_tracking_branches(@resource.remote, @resource.repository)
|
@@ -379,15 +441,15 @@ SHAS
|
|
379
441
|
|
380
442
|
it "doesn't update remote url when the url is the same" do
|
381
443
|
command_response = double('shell_out')
|
382
|
-
command_response.
|
383
|
-
command_response.
|
444
|
+
allow(command_response).to receive(:exitstatus) { 0 }
|
445
|
+
allow(command_response).to receive(:stdout) { @resource.repository }
|
384
446
|
check_remote_command = "git config --get remote.#{@resource.remote}.url"
|
385
|
-
@provider.
|
447
|
+
expect(@provider).to receive(:shell_out!).with(check_remote_command,
|
386
448
|
:cwd => "/my/deploy/dir",
|
387
449
|
:log_tag => "git[web2.0 app]",
|
388
450
|
:returns => [0,1,2]).and_return(command_response)
|
389
451
|
unexpected_command = "git config --replace-all remote.#{@resource.remote}.url #{@resource.repository}"
|
390
|
-
@provider.
|
452
|
+
expect(@provider).not_to receive(:shell_out!).with(unexpected_command,
|
391
453
|
:cwd => "/my/deploy/dir",
|
392
454
|
:log_tag => "git[web2.0 app]")
|
393
455
|
@provider.setup_remote_tracking_branches(@resource.remote, @resource.repository)
|
@@ -395,14 +457,14 @@ SHAS
|
|
395
457
|
|
396
458
|
it "resets remote url when it has multiple values" do
|
397
459
|
command_response = double('shell_out')
|
398
|
-
command_response.
|
460
|
+
allow(command_response).to receive(:exitstatus) { 2 }
|
399
461
|
check_remote_command = "git config --get remote.#{@resource.remote}.url"
|
400
|
-
@provider.
|
462
|
+
expect(@provider).to receive(:shell_out!).with(check_remote_command,
|
401
463
|
:cwd => "/my/deploy/dir",
|
402
464
|
:log_tag => "git[web2.0 app]",
|
403
465
|
:returns => [0,1,2]).and_return(command_response)
|
404
466
|
expected_command = "git config --replace-all remote.#{@resource.remote}.url #{@resource.repository}"
|
405
|
-
@provider.
|
467
|
+
expect(@provider).to receive(:shell_out!).with(expected_command,
|
406
468
|
:cwd => "/my/deploy/dir",
|
407
469
|
:log_tag => "git[web2.0 app]")
|
408
470
|
@provider.setup_remote_tracking_branches(@resource.remote, @resource.repository)
|
@@ -411,20 +473,20 @@ SHAS
|
|
411
473
|
end
|
412
474
|
|
413
475
|
it "raises an error if the git clone command would fail because the enclosing directory doesn't exist" do
|
414
|
-
@provider.
|
415
|
-
|
476
|
+
allow(@provider).to receive(:shell_out!)
|
477
|
+
expect {@provider.run_action(:sync)}.to raise_error(Chef::Exceptions::MissingParentDirectory)
|
416
478
|
end
|
417
479
|
|
418
480
|
it "does a checkout by cloning the repo and then enabling submodules" do
|
419
481
|
# will be invoked in load_current_resource
|
420
|
-
::File.
|
421
|
-
|
422
|
-
::File.
|
423
|
-
::File.
|
424
|
-
::Dir.
|
425
|
-
@provider.
|
426
|
-
@provider.
|
427
|
-
@provider.
|
482
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(false)
|
483
|
+
|
484
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir").and_return(true)
|
485
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
486
|
+
allow(::Dir).to receive(:entries).with("/my/deploy/dir").and_return(['.','..'])
|
487
|
+
expect(@provider).to receive(:clone)
|
488
|
+
expect(@provider).to receive(:checkout)
|
489
|
+
expect(@provider).to receive(:enable_submodules)
|
428
490
|
@provider.run_action(:checkout)
|
429
491
|
# Even though an actual run will cause an update to occur, the fact that we've stubbed out
|
430
492
|
# the actions above will prevent updates from registering
|
@@ -433,119 +495,119 @@ SHAS
|
|
433
495
|
|
434
496
|
it "does not call checkout if enable_checkout is false" do
|
435
497
|
# will be invoked in load_current_resource
|
436
|
-
::File.
|
498
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(false)
|
437
499
|
|
438
|
-
::File.
|
439
|
-
::File.
|
440
|
-
::Dir.
|
500
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir").and_return(true)
|
501
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
502
|
+
allow(::Dir).to receive(:entries).with("/my/deploy/dir").and_return(['.','..'])
|
441
503
|
|
442
504
|
@resource.enable_checkout false
|
443
|
-
@provider.
|
444
|
-
@provider.
|
445
|
-
@provider.
|
505
|
+
expect(@provider).to receive(:clone)
|
506
|
+
expect(@provider).not_to receive(:checkout)
|
507
|
+
expect(@provider).to receive(:enable_submodules)
|
446
508
|
@provider.run_action(:checkout)
|
447
509
|
end
|
448
510
|
|
449
511
|
# REGRESSION TEST: on some OSes, the entries from an empty directory will be listed as
|
450
512
|
# ['..', '.'] but this shouldn't change the behavior
|
451
513
|
it "does a checkout by cloning the repo and then enabling submodules when the directory entries are listed as %w{.. .}" do
|
452
|
-
::File.
|
453
|
-
::File.
|
454
|
-
::File.
|
455
|
-
::Dir.
|
456
|
-
@provider.
|
457
|
-
@provider.
|
458
|
-
@provider.
|
459
|
-
@provider.
|
514
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(false)
|
515
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir").and_return(false)
|
516
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
517
|
+
allow(::Dir).to receive(:entries).with("/my/deploy/dir").and_return(['..','.'])
|
518
|
+
expect(@provider).to receive(:clone)
|
519
|
+
expect(@provider).to receive(:checkout)
|
520
|
+
expect(@provider).to receive(:enable_submodules)
|
521
|
+
expect(@provider).to receive(:add_remotes)
|
460
522
|
@provider.run_action(:checkout)
|
461
523
|
# @resource.should be_updated
|
462
524
|
end
|
463
525
|
|
464
526
|
it "should not checkout if the destination exists or is a non empty directory" do
|
465
527
|
# will be invoked in load_current_resource
|
466
|
-
::File.
|
467
|
-
|
468
|
-
::File.
|
469
|
-
::File.
|
470
|
-
::Dir.
|
471
|
-
@provider.
|
472
|
-
@provider.
|
473
|
-
@provider.
|
474
|
-
@provider.
|
528
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(false)
|
529
|
+
|
530
|
+
allow(::File).to receive(:exist?).with("/my/deploy/dir").and_return(true)
|
531
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
532
|
+
allow(::Dir).to receive(:entries).with("/my/deploy/dir").and_return(['.','..','foo','bar'])
|
533
|
+
expect(@provider).not_to receive(:clone)
|
534
|
+
expect(@provider).not_to receive(:checkout)
|
535
|
+
expect(@provider).not_to receive(:enable_submodules)
|
536
|
+
expect(@provider).not_to receive(:add_remotes)
|
475
537
|
@provider.run_action(:checkout)
|
476
|
-
@resource.
|
538
|
+
expect(@resource).not_to be_updated
|
477
539
|
end
|
478
540
|
|
479
541
|
it "syncs the code by updating the source when the repo has already been checked out" do
|
480
|
-
::File.
|
481
|
-
::File.
|
482
|
-
@provider.
|
483
|
-
@provider.
|
484
|
-
@provider.
|
542
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
|
543
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
544
|
+
expect(@provider).to receive(:find_current_revision).exactly(1).and_return('d35af14d41ae22b19da05d7d03a0bafc321b244c')
|
545
|
+
expect(@provider).not_to receive(:fetch_updates)
|
546
|
+
expect(@provider).to receive(:add_remotes)
|
485
547
|
@provider.run_action(:sync)
|
486
|
-
@resource.
|
548
|
+
expect(@resource).not_to be_updated
|
487
549
|
end
|
488
550
|
|
489
551
|
it "marks the resource as updated when the repo is updated and gets a new version" do
|
490
|
-
::File.
|
491
|
-
::File.
|
552
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
|
553
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
492
554
|
# invoked twice - first time from load_current_resource
|
493
|
-
@provider.
|
494
|
-
@provider.
|
495
|
-
@provider.
|
496
|
-
@provider.
|
497
|
-
@provider.
|
555
|
+
expect(@provider).to receive(:find_current_revision).exactly(1).and_return('d35af14d41ae22b19da05d7d03a0bafc321b244c')
|
556
|
+
allow(@provider).to receive(:target_revision).and_return('28af684d8460ba4793eda3e7ac238c864a5d029a')
|
557
|
+
expect(@provider).to receive(:fetch_updates)
|
558
|
+
expect(@provider).to receive(:enable_submodules)
|
559
|
+
expect(@provider).to receive(:add_remotes)
|
498
560
|
@provider.run_action(:sync)
|
499
561
|
# @resource.should be_updated
|
500
562
|
end
|
501
563
|
|
502
564
|
it "does not fetch any updates if the remote revision matches the current revision" do
|
503
|
-
::File.
|
504
|
-
::File.
|
505
|
-
@provider.
|
506
|
-
@provider.
|
507
|
-
@provider.
|
508
|
-
@provider.
|
565
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
|
566
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
567
|
+
allow(@provider).to receive(:find_current_revision).and_return('d35af14d41ae22b19da05d7d03a0bafc321b244c')
|
568
|
+
allow(@provider).to receive(:target_revision).and_return('d35af14d41ae22b19da05d7d03a0bafc321b244c')
|
569
|
+
expect(@provider).not_to receive(:fetch_updates)
|
570
|
+
expect(@provider).to receive(:add_remotes)
|
509
571
|
@provider.run_action(:sync)
|
510
|
-
@resource.
|
572
|
+
expect(@resource).not_to be_updated
|
511
573
|
end
|
512
574
|
|
513
575
|
it "clones the repo instead of fetching it if the deploy directory doesn't exist" do
|
514
|
-
::File.
|
515
|
-
::File.
|
516
|
-
@provider.
|
517
|
-
@provider.
|
576
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
577
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").exactly(2).and_return(false)
|
578
|
+
expect(@provider).to receive(:action_checkout)
|
579
|
+
expect(@provider).not_to receive(:shell_out!)
|
518
580
|
@provider.run_action(:sync)
|
519
581
|
# @resource.should be_updated
|
520
582
|
end
|
521
583
|
|
522
584
|
it "clones the repo instead of fetching updates if the deploy directory is empty" do
|
523
|
-
::File.
|
524
|
-
::File.
|
525
|
-
::File.
|
526
|
-
@provider.
|
527
|
-
@provider.
|
528
|
-
@provider.
|
585
|
+
expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").exactly(2).and_return(false)
|
586
|
+
allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
|
587
|
+
allow(::File).to receive(:directory?).with("/my/deploy/dir").and_return(true)
|
588
|
+
allow(@provider).to receive(:sync_command).and_return("huzzah!")
|
589
|
+
expect(@provider).to receive(:action_checkout)
|
590
|
+
expect(@provider).not_to receive(:shell_out!).with("huzzah!", :cwd => "/my/deploy/dir")
|
529
591
|
@provider.run_action(:sync)
|
530
592
|
#@resource.should be_updated
|
531
593
|
end
|
532
594
|
|
533
595
|
it "does an export by cloning the repo then removing the .git directory" do
|
534
|
-
@provider.
|
535
|
-
FileUtils.
|
596
|
+
expect(@provider).to receive(:action_checkout)
|
597
|
+
expect(FileUtils).to receive(:rm_rf).with(@resource.destination + "/.git")
|
536
598
|
@provider.run_action(:export)
|
537
|
-
@resource.
|
599
|
+
expect(@resource).to be_updated
|
538
600
|
end
|
539
601
|
|
540
602
|
describe "calling add_remotes" do
|
541
603
|
it "adds a new remote for each entry in additional remotes hash" do
|
542
604
|
@resource.additional_remotes({:opscode => "opscode_repo_url",
|
543
605
|
:another_repo => "some_other_repo_url"})
|
544
|
-
STDOUT.
|
606
|
+
allow(STDOUT).to receive(:tty?).and_return(false)
|
545
607
|
command_response = double('shell_out')
|
546
|
-
command_response.
|
608
|
+
allow(command_response).to receive(:exitstatus) { 0 }
|
547
609
|
@resource.additional_remotes.each_pair do |remote_name, remote_url|
|
548
|
-
@provider.
|
610
|
+
expect(@provider).to receive(:setup_remote_tracking_branches).with(remote_name, remote_url)
|
549
611
|
end
|
550
612
|
@provider.add_remotes
|
551
613
|
end
|
@@ -558,22 +620,22 @@ SHAS
|
|
558
620
|
|
559
621
|
describe "when check remote command returns with status 2" do
|
560
622
|
it "returns true" do
|
561
|
-
@command_response.
|
562
|
-
@provider.multiple_remotes?(@command_response).
|
623
|
+
allow(@command_response).to receive(:exitstatus) { 2 }
|
624
|
+
expect(@provider.multiple_remotes?(@command_response)).to be_true
|
563
625
|
end
|
564
626
|
end
|
565
627
|
|
566
628
|
describe "when check remote command returns with status 0" do
|
567
629
|
it "returns false" do
|
568
|
-
@command_response.
|
569
|
-
@provider.multiple_remotes?(@command_response).
|
630
|
+
allow(@command_response).to receive(:exitstatus) { 0 }
|
631
|
+
expect(@provider.multiple_remotes?(@command_response)).to be_false
|
570
632
|
end
|
571
633
|
end
|
572
634
|
|
573
635
|
describe "when check remote command returns with status 0" do
|
574
636
|
it "returns false" do
|
575
|
-
@command_response.
|
576
|
-
@provider.multiple_remotes?(@command_response).
|
637
|
+
allow(@command_response).to receive(:exitstatus) { 1 }
|
638
|
+
expect(@provider.multiple_remotes?(@command_response)).to be_false
|
577
639
|
end
|
578
640
|
end
|
579
641
|
end
|
@@ -585,17 +647,17 @@ SHAS
|
|
585
647
|
|
586
648
|
describe "when output of the check remote command matches the repository url" do
|
587
649
|
it "returns true" do
|
588
|
-
@command_response.
|
589
|
-
@command_response.
|
590
|
-
@provider.remote_matches?(@resource.repository, @command_response).
|
650
|
+
allow(@command_response).to receive(:exitstatus) { 0 }
|
651
|
+
allow(@command_response).to receive(:stdout) { @resource.repository }
|
652
|
+
expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_true
|
591
653
|
end
|
592
654
|
end
|
593
655
|
|
594
656
|
describe "when output of the check remote command doesn't match the repository url" do
|
595
657
|
it "returns false" do
|
596
|
-
@command_response.
|
597
|
-
@command_response.
|
598
|
-
@provider.remote_matches?(@resource.repository, @command_response).
|
658
|
+
allow(@command_response).to receive(:exitstatus) { 0 }
|
659
|
+
allow(@command_response).to receive(:stdout) { @resource.repository + "test" }
|
660
|
+
expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_false
|
599
661
|
end
|
600
662
|
end
|
601
663
|
end
|