cuken 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -3
- data/Gemfile.lock +61 -18
- data/LICENSE +13 -0
- data/NOTICE +3 -0
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/cucumber.yml +8 -0
- data/cuken.gemspec +397 -13
- data/examples/chef/features/support/env.rb +16 -0
- data/features/chef/cookbooks/cookbook.feature +14 -0
- data/features/chef/cookbooks/metadata.feature +40 -0
- data/features/chef/cookbooks/repo.feature +13 -0
- data/features/chef/knife.feature +140 -0
- data/features/chef/knife_steps.feature +19 -0
- data/features/command_steps.feature +68 -0
- data/features/commands.feature +5 -5
- data/features/common_steps.feature +13 -0
- data/features/data/Rakefile +38 -0
- data/features/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/features/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/features/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/features/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/features/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/features/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/features/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/features/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/features/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/features/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/features/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/features/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/features/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/features/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/features/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/features/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/features/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/features/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/features/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/features/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/features/data/apt/var/www/apt/conf/distributions +7 -0
- data/features/data/apt/var/www/apt/conf/incoming +4 -0
- data/features/data/apt/var/www/apt/conf/pulls +3 -0
- data/features/data/apt/var/www/apt/db/checksums.db +0 -0
- data/features/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/features/data/apt/var/www/apt/db/packages.db +0 -0
- data/features/data/apt/var/www/apt/db/references.db +0 -0
- data/features/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/features/data/apt/var/www/apt/db/version +4 -0
- data/features/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/features/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/features/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/features/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/features/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/features/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/features/data/config/client.rb +23 -0
- data/features/data/config/client_with_checksum_caching.rb +23 -0
- data/features/data/config/knife-stephen.rb +12 -0
- data/features/data/config/knife.rb +11 -0
- data/features/data/config/rake.rb +57 -0
- data/features/data/config/server.rb +52 -0
- data/features/data/cookbook_tarballs/empty_tarball.tar.gz +0 -0
- data/features/data/cookbook_tarballs/new.tar.gz +0 -0
- data/features/data/cookbook_tarballs/not_a_tarball.txt +1 -0
- data/features/data/cookbook_tarballs/original.tar.gz +0 -0
- data/features/data/cookbooks/attribute_include/README.rdoc +8 -0
- data/features/data/cookbooks/attribute_include/attributes/a.rb +4 -0
- data/features/data/cookbooks/attribute_include/attributes/b.rb +2 -0
- data/features/data/cookbooks/attribute_include/metadata.rb +6 -0
- data/features/data/cookbooks/attribute_include/recipes/default.rb +23 -0
- data/features/data/cookbooks/attribute_include_default/README.rdoc +8 -0
- data/features/data/cookbooks/attribute_include_default/attributes/a.rb +5 -0
- data/features/data/cookbooks/attribute_include_default/attributes/default.rb +2 -0
- data/features/data/cookbooks/attribute_include_default/metadata.rb +6 -0
- data/features/data/cookbooks/attribute_include_default/recipes/default.rb +23 -0
- data/features/data/cookbooks/attribute_settings/README.rdoc +8 -0
- data/features/data/cookbooks/attribute_settings/attributes/default.rb +3 -0
- data/features/data/cookbooks/attribute_settings/default.rb +1 -0
- data/features/data/cookbooks/attribute_settings/metadata.rb +6 -0
- data/features/data/cookbooks/attribute_settings/recipes/default.rb +21 -0
- data/features/data/cookbooks/attribute_settings/recipes/default_in_recipe.rb +25 -0
- data/features/data/cookbooks/attribute_settings_normal/README.rdoc +8 -0
- data/features/data/cookbooks/attribute_settings_normal/attributes/.default.rb.swo +0 -0
- data/features/data/cookbooks/attribute_settings_normal/attributes/default.rb +2 -0
- data/features/data/cookbooks/attribute_settings_normal/default.rb +1 -0
- data/features/data/cookbooks/attribute_settings_normal/metadata.rb +6 -0
- data/features/data/cookbooks/attribute_settings_normal/recipes/.default.rb.swo +0 -0
- data/features/data/cookbooks/attribute_settings_normal/recipes/.default_in_recipe.rb.swo +0 -0
- data/features/data/cookbooks/attribute_settings_normal/recipes/default.rb +21 -0
- data/features/data/cookbooks/attribute_settings_normal/recipes/normal_in_recipe.rb +25 -0
- data/features/data/cookbooks/attribute_settings_override/README.rdoc +8 -0
- data/features/data/cookbooks/attribute_settings_override/attributes/default.rb +2 -0
- data/features/data/cookbooks/attribute_settings_override/default.rb +1 -0
- data/features/data/cookbooks/attribute_settings_override/metadata.rb +6 -0
- data/features/data/cookbooks/attribute_settings_override/recipes/default.rb +21 -0
- data/features/data/cookbooks/attribute_settings_override/recipes/normal_in_recipe.rb +25 -0
- data/features/data/cookbooks/attribute_settings_override/recipes/override_in_recipe.rb +21 -0
- data/features/data/cookbooks/delayed_notifications/recipes/bad_syntax_notifies.rb +14 -0
- data/features/data/cookbooks/delayed_notifications/recipes/default.rb +18 -0
- data/features/data/cookbooks/delayed_notifications/recipes/forward_references.rb +10 -0
- data/features/data/cookbooks/delayed_notifications/recipes/invalid_forward_reference.rb +16 -0
- data/features/data/cookbooks/delayed_notifications/recipes/notify_a_resource_from_a_single_source.rb +26 -0
- data/features/data/cookbooks/delayed_notifications/recipes/notify_a_resource_from_multiple_sources.rb +31 -0
- data/features/data/cookbooks/delayed_notifications/recipes/notify_different_resources_for_different_actions.rb +31 -0
- data/features/data/cookbooks/deploy/recipes/callbacks.rb +78 -0
- data/features/data/cookbooks/deploy/recipes/default.rb +51 -0
- data/features/data/cookbooks/deploy/recipes/deploy_commit1.rb +25 -0
- data/features/data/cookbooks/deploy/recipes/deploy_commit2.rb +25 -0
- data/features/data/cookbooks/deploy/recipes/embedded_recipe_callbacks.rb +70 -0
- data/features/data/cookbooks/deploy/recipes/revision_deploy.rb +51 -0
- data/features/data/cookbooks/deploy/recipes/rollback_commit2.rb +24 -0
- data/features/data/cookbooks/deploy/templates/default/app_config.yml.erb +23 -0
- data/features/data/cookbooks/deploy/templates/default/database.yml.erb +18 -0
- data/features/data/cookbooks/deploy/templates/default/embedded_recipe_before_symlink.rb.erb +4 -0
- data/features/data/cookbooks/deploy/templates/default/sneaky_after_restart_hook.rb.erb +4 -0
- data/features/data/cookbooks/deploy/templates/default/sneaky_before_migrate_hook.rb.erb +2 -0
- data/features/data/cookbooks/deploy/templates/default/sneaky_before_restart_hook.rb.erb +4 -0
- data/features/data/cookbooks/deploy/templates/default/sneaky_before_symlink_hook.rb.erb +2 -0
- data/features/data/cookbooks/directory_provider/recipes/create.rb +25 -0
- data/features/data/cookbooks/directory_provider/recipes/default.rb +18 -0
- data/features/data/cookbooks/directory_provider/recipes/delete.rb +29 -0
- data/features/data/cookbooks/directory_provider/recipes/delete_nonexistent.rb +23 -0
- data/features/data/cookbooks/directory_provider/recipes/owner_update.rb +31 -0
- data/features/data/cookbooks/directory_provider/recipes/set_the_accessibility_of_a_created_directory.rb +55 -0
- data/features/data/cookbooks/execute_commands/metadata.rb +5 -0
- data/features/data/cookbooks/execute_commands/recipes/4k.rb +25 -0
- data/features/data/cookbooks/execute_commands/recipes/debug.rb +22 -0
- data/features/data/cookbooks/execute_commands/recipes/default.rb +22 -0
- data/features/data/cookbooks/execute_commands/recipes/umask.rb +23 -0
- data/features/data/cookbooks/integration_setup/attributes/integration.rb +25 -0
- data/features/data/cookbooks/integration_setup/recipes/default.rb +24 -0
- data/features/data/cookbooks/lwrp/providers/default.rb +9 -0
- data/features/data/cookbooks/lwrp/providers/lwp_non_default.rb +3 -0
- data/features/data/cookbooks/lwrp/providers/lwp_overridden_load_current_resource.rb +8 -0
- data/features/data/cookbooks/lwrp/providers/provider_is_omitted.rb +3 -0
- data/features/data/cookbooks/lwrp/recipes/default_everything.rb +4 -0
- data/features/data/cookbooks/lwrp/recipes/non_default_provider.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/non_default_resource.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/overridden_provider_load_current_resource.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/overridden_resource_initialize.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/provider_invokes_resource.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/provider_is_a_class.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/provider_is_a_string.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/provider_is_a_symbol.rb +6 -0
- data/features/data/cookbooks/lwrp/recipes/provider_is_omitted.rb +3 -0
- data/features/data/cookbooks/lwrp/resources/default.rb +4 -0
- data/features/data/cookbooks/lwrp/resources/lwr_non_default.rb +3 -0
- data/features/data/cookbooks/lwrp/resources/lwr_overridden_initialize.rb +8 -0
- data/features/data/cookbooks/lwrp/resources/provider_is_omitted.rb +1 -0
- data/features/data/cookbooks/manage_files/recipes/create_a_file.rb +22 -0
- data/features/data/cookbooks/manage_files/recipes/default.rb +19 -0
- data/features/data/cookbooks/manage_files/recipes/delete_a_file.rb +24 -0
- data/features/data/cookbooks/manage_files/recipes/delete_a_file_that_does_not_already_exist.rb +22 -0
- data/features/data/cookbooks/manage_files/recipes/manage_file_contents.rb +23 -0
- data/features/data/cookbooks/manage_files/recipes/set_the_accessibility_of_a_created_file.rb +79 -0
- data/features/data/cookbooks/manage_files/recipes/set_the_owner_of_a_created_file.rb +23 -0
- data/features/data/cookbooks/manage_files/recipes/touch_a_file.rb +22 -0
- data/features/data/cookbooks/metadata/metadata.rb +17 -0
- data/features/data/cookbooks/metadata/recipes/default.rb +18 -0
- data/features/data/cookbooks/no_attributes/README.rdoc +8 -0
- data/features/data/cookbooks/no_attributes/metadata.rb +6 -0
- data/features/data/cookbooks/no_attributes/recipes/default.rb +21 -0
- data/features/data/cookbooks/node_cookbook_sync/README.rdoc +8 -0
- data/features/data/cookbooks/node_cookbook_sync/attributes/attr_file.rb +0 -0
- data/features/data/cookbooks/node_cookbook_sync/definitions/def_file.rb +0 -0
- data/features/data/cookbooks/node_cookbook_sync/libraries/lib_file.rb +0 -0
- data/features/data/cookbooks/node_cookbook_sync/metadata.rb +6 -0
- data/features/data/cookbooks/node_cookbook_sync/recipes/default.rb +18 -0
- data/features/data/cookbooks/packages/recipes/default.rb +0 -0
- data/features/data/cookbooks/packages/recipes/gem_package.rb +26 -0
- data/features/data/cookbooks/packages/recipes/install_apt_package.rb +3 -0
- data/features/data/cookbooks/packages/recipes/install_dpkg_package.rb +4 -0
- data/features/data/cookbooks/packages/recipes/install_gem_noshell.rb +26 -0
- data/features/data/cookbooks/packages/recipes/install_gem_package_twice.rb +26 -0
- data/features/data/cookbooks/packages/recipes/macports_install_bad_package.rb +3 -0
- data/features/data/cookbooks/packages/recipes/macports_install_yydecode.rb +3 -0
- data/features/data/cookbooks/packages/recipes/macports_purge_yydecode.rb +3 -0
- data/features/data/cookbooks/packages/recipes/macports_remove_yydecode.rb +3 -0
- data/features/data/cookbooks/packages/recipes/macports_upgrade_yydecode.rb +7 -0
- data/features/data/cookbooks/packages/recipes/manually_upgrade_gem_package.rb +32 -0
- data/features/data/cookbooks/packages/recipes/upgrade_gem_noshell.rb +33 -0
- data/features/data/cookbooks/packages/recipes/upgrade_gem_package.rb +33 -0
- data/features/data/cookbooks/recipe_include/README.rdoc +8 -0
- data/features/data/cookbooks/recipe_include/metadata.rb +6 -0
- data/features/data/cookbooks/recipe_include/recipes/default.rb +21 -0
- data/features/data/cookbooks/recipe_include/recipes/second.rb +23 -0
- data/features/data/cookbooks/roles/recipes/default.rb +26 -0
- data/features/data/cookbooks/roles/recipes/env_test.rb +25 -0
- data/features/data/cookbooks/run_interval/recipes/default.rb +27 -0
- data/features/data/cookbooks/scm/metadata.rb +8 -0
- data/features/data/cookbooks/scm/recipes/git.rb +25 -0
- data/features/data/cookbooks/search/attributes/search_attrs.rb +1 -0
- data/features/data/cookbooks/search/recipes/default.rb +18 -0
- data/features/data/cookbooks/search/recipes/search_data.rb +28 -0
- data/features/data/cookbooks/search/recipes/search_data_manual.rb +33 -0
- data/features/data/cookbooks/search/recipes/search_data_noblock.rb +32 -0
- data/features/data/cookbooks/show_cookbook/README.rdoc +8 -0
- data/features/data/cookbooks/show_cookbook/attributes/attr_file.rb +0 -0
- data/features/data/cookbooks/show_cookbook/definitions/def_file.rb +0 -0
- data/features/data/cookbooks/show_cookbook/files/default/prime_time.txt +0 -0
- data/features/data/cookbooks/show_cookbook/files/host-latte/prime_time.txt +0 -0
- data/features/data/cookbooks/show_cookbook/files/mac_os_x-10.5/prime_time.txt +0 -0
- data/features/data/cookbooks/show_cookbook/files/mac_os_x/prime_time.txt +0 -0
- data/features/data/cookbooks/show_cookbook/libraries/lib_file.rb +0 -0
- data/features/data/cookbooks/show_cookbook/metadata.rb +6 -0
- data/features/data/cookbooks/show_cookbook/recipes/default.rb +18 -0
- data/features/data/cookbooks/show_cookbook/templates/default/prime_time.txt.erb +0 -0
- data/features/data/cookbooks/show_cookbook/templates/host-latte/prime_time.txt.erb +0 -0
- data/features/data/cookbooks/show_cookbook/templates/mac_os_x-10.5/prime_time.txt.erb +0 -0
- data/features/data/cookbooks/show_cookbook/templates/mac_os_x/prime_time.txt.erb +0 -0
- data/features/data/cookbooks/synchronize/recipes/default.rb +18 -0
- data/features/data/cookbooks/synchronize_deps/metadata.json +30 -0
- data/features/data/cookbooks/synchronize_deps/metadata.rb +1 -0
- data/features/data/cookbooks/synchronize_deps/recipes/default.rb +18 -0
- data/features/data/cookbooks/template/README.rdoc +8 -0
- data/features/data/cookbooks/template/metadata.rb +6 -0
- data/features/data/cookbooks/template/recipes/default.rb +26 -0
- data/features/data/cookbooks/template/recipes/interval.rb +37 -0
- data/features/data/cookbooks/template/recipes/render_node_attrs.rb +26 -0
- data/features/data/cookbooks/template/templates/default/node.txt.erb +3 -0
- data/features/data/cookbooks/template/templates/default/template.txt.erb +1 -0
- data/features/data/cookbooks/transfer_remote_directories/files/default/transfer_directory_feature/bar.txt +1 -0
- data/features/data/cookbooks/transfer_remote_directories/files/default/transfer_directory_feature/baz.txt +1 -0
- data/features/data/cookbooks/transfer_remote_directories/files/default/transfer_directory_feature/foo.txt +1 -0
- data/features/data/cookbooks/transfer_remote_directories/recipes/transfer_directory.rb +29 -0
- data/features/data/cookbooks/transfer_remote_files/files/default/transfer_a_file_from_a_cookbook.txt +1 -0
- data/features/data/cookbooks/transfer_remote_files/metadata.json +30 -0
- data/features/data/cookbooks/transfer_remote_files/metadata.rb +1 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/change_remote_file_perms_trickery.rb +33 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/default.rb +18 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/should_prefer_the_file_for_this_specific_host.rb +22 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/transfer_a_file_from_a_cookbook.rb +22 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/transfer_a_file_from_a_specific_cookbook.rb +20 -0
- data/features/data/cookbooks/transfer_remote_files/recipes/transfer_a_non-existent_file_from_a_cookbook.rb +22 -0
- data/features/data/cookbooks/transfer_remote_files_definition/definitions/transfer.rb +6 -0
- data/features/data/cookbooks/transfer_remote_files_definition/files/default/easy.txt +1 -0
- data/features/data/cookbooks/transfer_some_cookbook_files/files/default/should_be_transferred.txt +3 -0
- data/features/data/cookbooks/transfer_some_cookbook_files/files/default/should_not_be_transferred.txt +2 -0
- data/features/data/cookbooks/transfer_some_cookbook_files/recipes/default.rb +26 -0
- data/features/data/cookbooks/transfer_some_cookbook_files/templates/default/should_be_transferred.erb +2 -0
- data/features/data/cookbooks/transfer_some_cookbook_files/templates/default/should_not_be_transferred.erb +3 -0
- data/features/data/cookbooks/version_deps/metadata.rb +1 -0
- data/features/data/cookbooks/version_deps/recipes/default.rb +1 -0
- data/features/data/cookbooks/versions/metadata.rb +5 -0
- data/features/data/cookbooks/versions/recipes/default.rb +5 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_1.0.0/metadata.json +31 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_1.0.0/metadata.rb +8 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_1.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_2.0.0/metadata.json +29 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_2.0.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_2.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_3.0.0/metadata.json +30 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_3.0.0/metadata.rb +7 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_a_3.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_1.0.0/metadata.json +31 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_1.0.0/metadata.rb +8 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_1.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_2.0.0/metadata.json +31 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_2.0.0/metadata.rb +8 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_2.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_3.0.0/metadata.json +30 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_3.0.0/metadata.rb +7 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_b_3.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_1.0.0/metadata.json +31 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_1.0.0/metadata.rb +8 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_1.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_2.0.0/metadata.json +29 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_2.0.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_2.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_3.0.0/metadata.json +29 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_3.0.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/dep_test_c_3.0.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/test_cookbook/attributes/attr1.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/test_cookbook/attributes/attr2.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/test_cookbook/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_invalid_empty_except_metadata/metadata.json +38 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_invalid_empty_except_metadata/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_invalid_nometadata/attributes/attributes.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_invalid_nometadata/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid/attributes/attributes.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid/metadata.json +38 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.1.0_with_different_dependencies/attributes/attributes.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.1.0_with_different_dependencies/metadata.json +40 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.1.0_with_different_dependencies/metadata.rb +7 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.1.0_with_different_dependencies/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.2.0/attributes/attributes.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.2.0/metadata.json +38 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.2.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_valid_v0.2.0/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_wrong_metadata/metadata.json +40 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/testcookbook_wrong_metadata/recipes/default.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.0/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.1/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.1/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.1.1/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.10.0/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.10.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.10.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.2.0/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.2.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.2.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.0/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.0/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.0/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.7/metadata.json +39 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.7/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_test_0.9.7/recipes/default.rb +18 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_updated/attributes/attributes.rb +1 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_updated/metadata.json +29 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_updated/metadata.rb +6 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/version_updated/recipes/default.rb +2 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/versions/metadata.json +38 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/versions/metadata.rb +5 -0
- data/features/data/cookbooks_not_uploaded_at_feature_start/versions/recipes/default.rb +5 -0
- data/features/data/gems/Marshal.4.8 +0 -0
- data/features/data/gems/Marshal.4.8.Z +0 -0
- data/features/data/gems/latest_specs.4.8 +0 -0
- data/features/data/gems/latest_specs.4.8.gz +0 -0
- data/features/data/gems/prerelease_specs.4.8 +0 -0
- data/features/data/gems/prerelease_specs.4.8.gz +0 -0
- data/features/data/gems/quick/Marshal.4.8/chef-integration-test-0.1.0.gemspec.rz +0 -0
- data/features/data/gems/quick/Marshal.4.8/chef-integration-test-0.1.1.gemspec.rz +0 -0
- data/features/data/gems/quick/chef-integration-test-0.1.0.gemspec.rz +0 -0
- data/features/data/gems/quick/chef-integration-test-0.1.1.gemspec.rz +0 -0
- data/features/data/gems/quick/index +2 -0
- data/features/data/gems/quick/index.rz +0 -0
- data/features/data/gems/quick/latest_index +1 -0
- data/features/data/gems/quick/latest_index.rz +0 -0
- data/features/data/gems/specs.4.8 +0 -0
- data/features/data/gems/specs.4.8.gz +0 -0
- data/features/data/gems/yaml +122 -0
- data/features/data/gems/yaml.Z +0 -0
- data/features/data/json_attribs/attribute_settings.json +3 -0
- data/features/data/json_attribs/json_runlist_and_attrs.json +4 -0
- data/features/data/myapp.bundle +0 -0
- data/features/data/node-load-test.rb +84 -0
- data/features/data/node-simple.rb +18 -0
- data/features/data/repositories/chef-repo/.gitignore +2 -0
- data/features/data/repositories/chef-repo/README.md +66 -0
- data/features/data/repositories/chef-repo/Rakefile +65 -0
- data/features/data/repositories/chef-repo/certificates/README.md +19 -0
- data/features/data/repositories/chef-repo/config/rake.rb +38 -0
- data/features/data/repositories/chef-repo/cookbooks/README.md +53 -0
- data/features/data/repositories/chef-repo/data_bags/README.md +23 -0
- data/features/data/repositories/chef-repo/roles/README.md +16 -0
- data/features/data/repositories/cookbooks/hosts/attributes/hosts.rb +1 -0
- data/features/data/repositories/cookbooks/hosts/cc.gemspec +36 -0
- data/features/data/repositories/cookbooks/hosts/metadata.json +41 -0
- data/features/data/repositories/cookbooks/hosts/metadata.rb +4 -0
- data/features/data/repositories/cookbooks/hosts/recipes/default.rb +6 -0
- data/features/data/repositories/cookbooks/hosts/templates/default/hosts.erb +27 -0
- data/features/data/search-tests/do_knife_search_test.rb +175 -0
- data/features/data/search-tests/search-test-nodes.rb +174 -0
- data/features/data/test_git_repo.tar.gz +0 -0
- data/features/file_steps.feature +70 -0
- data/features/files.feature +30 -16
- data/features/ssh.feature +2 -1
- data/features/ssh_steps.feature +20 -0
- data/features/step_definitions/cuken_steps.rb +10 -0
- data/features/support/env.rb +1 -0
- data/lib/cuken/api/chef.rb +115 -0
- data/lib/cuken/api/chef/common.rb +80 -0
- data/lib/cuken/api/file.rb +23 -3
- data/lib/cuken/chef.rb +3 -0
- data/lib/cuken/common.rb +0 -1
- data/lib/cuken/cucumber/chef.rb +16 -0
- data/lib/cuken/cucumber/chef/common.rb +68 -0
- data/lib/cuken/cucumber/chef/cookbook.rb +75 -0
- data/lib/cuken/cucumber/chef/cookbook_steps.rb +406 -0
- data/lib/cuken/cucumber/chef/deploy_steps.rb +84 -0
- data/lib/cuken/cucumber/chef/done_directory_steps.rb +41 -0
- data/lib/cuken/cucumber/chef/done_file_steps.rb +107 -0
- data/lib/cuken/cucumber/chef/done_knife_steps.rb +34 -0
- data/lib/cuken/cucumber/chef/fixture_steps.rb +413 -0
- data/lib/cuken/cucumber/chef/knife.rb +34 -0
- data/lib/cuken/cucumber/chef/node.rb +27 -0
- data/lib/cuken/cucumber/chef/node_steps.rb +88 -0
- data/lib/cuken/cucumber/chef/packages.rb +144 -0
- data/lib/cuken/cucumber/chef/pending_steps.rb +21 -0
- data/lib/cuken/cucumber/chef/recipe_steps.rb +23 -0
- data/lib/cuken/cucumber/chef/request_steps.rb +98 -0
- data/lib/cuken/cucumber/chef/response_steps.rb +233 -0
- data/lib/cuken/cucumber/chef/result_steps.rb +15 -0
- data/lib/cuken/cucumber/chef/run_client_steps.rb +260 -0
- data/lib/cuken/cucumber/chef/run_solo.rb +78 -0
- data/lib/cuken/cucumber/chef/sandbox_steps.rb +137 -0
- data/lib/cuken/cucumber/chef/search_steps.rb +70 -0
- data/lib/cuken/cucumber/chef/webrat_steps.rb +39 -0
- data/lib/cuken/cucumber/cmd.rb +18 -1
- data/lib/cuken/cucumber/common.rb +4 -0
- data/lib/cuken/cucumber/file.rb +25 -27
- data/lib/cuken/cucumber/ssh.rb +6 -6
- metadata +427 -27
- data/LICENSE.txt +0 -20
@@ -0,0 +1,174 @@
|
|
1
|
+
example_nodes = {
|
2
|
+
'a' => Proc.new do
|
3
|
+
n = Chef::Node.new
|
4
|
+
n.name 'a'
|
5
|
+
n.run_list << "alpha"
|
6
|
+
n.tag "apples"
|
7
|
+
n.nested({:a1 => {
|
8
|
+
:a2 => {:a3 => "A1_A2_A3-a"},
|
9
|
+
:b2 => {:a3 => "A1_B2_A3-a"}
|
10
|
+
},
|
11
|
+
:b1 => {
|
12
|
+
:a2 => {:a3 => "B1_A2_A3-a"},
|
13
|
+
:b2 => {:a3 => "B1_B2_A3-a"}
|
14
|
+
}
|
15
|
+
})
|
16
|
+
n.value 1
|
17
|
+
n.multi_word "foo bar baz"
|
18
|
+
n
|
19
|
+
end,
|
20
|
+
|
21
|
+
'b' => Proc.new do
|
22
|
+
n = Chef::Node.new
|
23
|
+
n.name 'b'
|
24
|
+
n.run_list << "bravo"
|
25
|
+
n.tag "apes"
|
26
|
+
n.nested({:a1 => {
|
27
|
+
:a2 => {:a3 => "A1_A2_A3-b"},
|
28
|
+
:b2 => {:a3 => "A1_B2_A3-b"}
|
29
|
+
},
|
30
|
+
:b1 => {
|
31
|
+
:a2 => {:a3 => "B1_A2_A3-b"},
|
32
|
+
:b2 => {:a3 => "B1_B2_A3-b"}
|
33
|
+
}
|
34
|
+
})
|
35
|
+
n.value 2
|
36
|
+
n.multi_word "bar"
|
37
|
+
n
|
38
|
+
end,
|
39
|
+
|
40
|
+
'ab' => Proc.new do
|
41
|
+
n = Chef::Node.new
|
42
|
+
n.name 'ab'
|
43
|
+
n.run_list << "alpha"
|
44
|
+
n.run_list << "bravo"
|
45
|
+
n.tag "ack"
|
46
|
+
n.multi_word "bar foo"
|
47
|
+
n.quotes "\"one\" \"two\" \"three\""
|
48
|
+
n
|
49
|
+
end,
|
50
|
+
|
51
|
+
'c' => Proc.new do
|
52
|
+
n = Chef::Node.new
|
53
|
+
n.name 'c'
|
54
|
+
n.run_list << "charlie"
|
55
|
+
n.tag "apes"
|
56
|
+
n.nested({:a1 => {
|
57
|
+
:a2 => {:a3 => "A1_A2_A3-c"},
|
58
|
+
:b2 => {:a3 => "A1_B2_A3-c"}
|
59
|
+
},
|
60
|
+
:b1 => {
|
61
|
+
:a2 => {:a3 => "B1_A2_A3-c"},
|
62
|
+
:b2 => {:a3 => "B1_B2_A3-c"}
|
63
|
+
}
|
64
|
+
})
|
65
|
+
n.value 3
|
66
|
+
n.multi_word "foo"
|
67
|
+
n
|
68
|
+
end
|
69
|
+
}
|
70
|
+
|
71
|
+
example_data_bags = {
|
72
|
+
'toys' => Proc.new do
|
73
|
+
items = []
|
74
|
+
bag = Chef::DataBag.new
|
75
|
+
bag.name "toys"
|
76
|
+
bag.save
|
77
|
+
item = Chef::DataBagItem.new
|
78
|
+
item_data = {
|
79
|
+
"id" => "marbles",
|
80
|
+
"colors" => ["black", "white", "green", "red", "blue"]
|
81
|
+
}
|
82
|
+
item.data_bag "toys"
|
83
|
+
item.raw_data = item_data
|
84
|
+
item.save
|
85
|
+
items << item
|
86
|
+
|
87
|
+
item = Chef::DataBagItem.new
|
88
|
+
item_data = {
|
89
|
+
"id" => "balls",
|
90
|
+
"baseballs" => 4,
|
91
|
+
"soccerballs" => 2,
|
92
|
+
"footballs" => 1
|
93
|
+
}
|
94
|
+
item.data_bag "toys"
|
95
|
+
item.raw_data = item_data
|
96
|
+
item.save
|
97
|
+
items << item
|
98
|
+
items
|
99
|
+
end,
|
100
|
+
|
101
|
+
'fruit' => Proc.new do
|
102
|
+
items = []
|
103
|
+
bag = Chef::DataBag.new
|
104
|
+
bag.name "fruit"
|
105
|
+
bag.save
|
106
|
+
item = Chef::DataBagItem.new
|
107
|
+
item_data = {
|
108
|
+
"id" => "citrus",
|
109
|
+
"names" => ["orange", "lemon", "lime"]
|
110
|
+
}
|
111
|
+
item.data_bag "fruit"
|
112
|
+
item.raw_data = item_data
|
113
|
+
item.save
|
114
|
+
items << item
|
115
|
+
|
116
|
+
item = Chef::DataBagItem.new
|
117
|
+
item_data = {
|
118
|
+
"id" => "tropical",
|
119
|
+
"names" => ["banana", "papaya", "mango"]
|
120
|
+
}
|
121
|
+
item.data_bag "fruit"
|
122
|
+
item.raw_data = item_data
|
123
|
+
item.save
|
124
|
+
items << item
|
125
|
+
items
|
126
|
+
end
|
127
|
+
}
|
128
|
+
|
129
|
+
example_roles = {
|
130
|
+
'prod' =>
|
131
|
+
Proc.new do
|
132
|
+
r = Chef::Role.new
|
133
|
+
r.name "prod"
|
134
|
+
r.run_list << "base"
|
135
|
+
r.run_list << "role[monitoring]"
|
136
|
+
r.default_attributes["key"] = 123
|
137
|
+
r.save
|
138
|
+
r
|
139
|
+
end,
|
140
|
+
'web' =>
|
141
|
+
Proc.new do
|
142
|
+
r = Chef::Role.new
|
143
|
+
r.name "web"
|
144
|
+
r.run_list << "base"
|
145
|
+
r.run_list << "nginx"
|
146
|
+
r.default_attributes["key"] = 456
|
147
|
+
r.save
|
148
|
+
r
|
149
|
+
end
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
example_nodes.each do |name, nproc|
|
154
|
+
n = nproc.call
|
155
|
+
n.save
|
156
|
+
puts "saved node: #{name}"
|
157
|
+
end
|
158
|
+
|
159
|
+
example_data_bags.each do |name, nproc|
|
160
|
+
items = nproc.call
|
161
|
+
puts "saved #{items.size} data bag items"
|
162
|
+
end
|
163
|
+
|
164
|
+
%w(ac ab cc).each do |client_name|
|
165
|
+
client = Chef::ApiClient.new
|
166
|
+
client.name client_name
|
167
|
+
client.save
|
168
|
+
puts "saved client: #{client.name}"
|
169
|
+
end
|
170
|
+
|
171
|
+
example_roles.each do |name, r|
|
172
|
+
a_role = r.call
|
173
|
+
puts "saved role: #{a_role.name}"
|
174
|
+
end
|
Binary file
|
@@ -0,0 +1,70 @@
|
|
1
|
+
@step_features
|
2
|
+
Feature: Listing file steps
|
3
|
+
In order to test a running system
|
4
|
+
As an administrator
|
5
|
+
I want to know what files steps are available
|
6
|
+
|
7
|
+
Background:
|
8
|
+
Given that "cuken/file" has been required
|
9
|
+
|
10
|
+
Scenario: File and directory navigation
|
11
|
+
Then these steps are defined for "cuken/cucumber/file.rb":
|
12
|
+
| step |
|
13
|
+
|I cd to "([^"]*)" |
|
14
|
+
|
15
|
+
Scenario: File and directory existence
|
16
|
+
Then these steps are defined for "cuken/cucumber/file.rb":
|
17
|
+
| step |
|
18
|
+
|a directory named "([^"]*)" |
|
19
|
+
|a directory named "([^"]*)" should exist |
|
20
|
+
|a directory named "([^"]*)" should not exist |
|
21
|
+
|a file named "([^"]*)" should exist |
|
22
|
+
|a file named "([^"]*)" should not exist |
|
23
|
+
|I remove the file "([^"]*)" |
|
24
|
+
|the directory "([^"]*)" exists |
|
25
|
+
|the directory "([^"]*)" does not exist |
|
26
|
+
|the file "([^"]*)" exists |
|
27
|
+
|the file "([^"]*)" does not exist |
|
28
|
+
|the file "([^"]*)" should not exist |
|
29
|
+
|the following directories should exist: |
|
30
|
+
|the following directories should not exist: |
|
31
|
+
|the following files should exist: |
|
32
|
+
|the following files should not exist: |
|
33
|
+
|these files exist: |
|
34
|
+
|these files do not exist: |
|
35
|
+
|these directories exist: |
|
36
|
+
|these directories do not exist: |
|
37
|
+
|
38
|
+
Scenario: File and directory properties
|
39
|
+
Then these steps are defined for "cuken/cucumber/file.rb":
|
40
|
+
| step |
|
41
|
+
|the file "([^"]*)" has mode "([^"]*)" |
|
42
|
+
|the directory "([^"]*)" has decimal mode "(\d+)" |
|
43
|
+
|the directory "([^"]*)" has octal mode "(\d+)" |
|
44
|
+
|the directory "(.+)" is owned by "(.+)" |
|
45
|
+
|the file "([^"]*)" has decimal mode "(\d+)" |
|
46
|
+
|the file "([^"]*)" has octal mode "(\d+)" |
|
47
|
+
|the file "(.+)" is owned by "(.+)" |
|
48
|
+
|the (.)time of "(.+)" changes |
|
49
|
+
|we record the a-mtime of "(.+)" |
|
50
|
+
|
51
|
+
Scenario: File and directory content
|
52
|
+
Then these steps are defined for "cuken/cucumber/file.rb":
|
53
|
+
| step |
|
54
|
+
|a file named "([^"]*)" with: |
|
55
|
+
|an empty file named "([^"]*)" |
|
56
|
+
|the file "([^"]*)" with: |
|
57
|
+
|the empty file "([^"]*)" |
|
58
|
+
|the file "([^"]*)" contains "([^"]*)" |
|
59
|
+
|the file "([^"]*)" contains "([^"]*)" exactly (\d+) times |
|
60
|
+
|the file "([^"]*)" contains exactly: |
|
61
|
+
|the file "([^"]*)" does not contain "([^"]*)" exactly "(\d+)" times |
|
62
|
+
|the file "([^"]*)" should contain "([^"]*)" |
|
63
|
+
|the file "([^"]*)" should not contain "([^"]*)" |
|
64
|
+
|the file "([^"]*)" should contain exactly: |
|
65
|
+
|the file "([^"]*)" should match \/([^\/]*)\/ |
|
66
|
+
|the file "([^"]*)" should not match \/([^\/]*)\/ |
|
67
|
+
|I write to "([^"]*)" with: |
|
68
|
+
|I overwrite "([^"]*)" with: |
|
69
|
+
|I append to "([^"]*)" with: |
|
70
|
+
|
data/features/files.feature
CHANGED
@@ -22,16 +22,16 @@ Feature: Examining files
|
|
22
22
|
Scenario: Atime
|
23
23
|
Given the empty file "foo.file"
|
24
24
|
And we record the a/mtime of "foo.file"
|
25
|
-
And I run
|
26
|
-
And I run
|
25
|
+
And I run `sleep 1`
|
26
|
+
And I run `touch -a foo.file`
|
27
27
|
Then the atime of "foo.file" changes
|
28
28
|
|
29
29
|
@steps
|
30
30
|
Scenario: Mtime
|
31
31
|
Given an empty file named "foo.file"
|
32
32
|
And we record the a/mtime of "foo.file"
|
33
|
-
And I run
|
34
|
-
And I run
|
33
|
+
And I run `sleep 1`
|
34
|
+
And I run `touch -m foo.file`
|
35
35
|
Then the mtime of "foo.file" changes
|
36
36
|
|
37
37
|
@steps
|
@@ -44,7 +44,7 @@ Feature: Examining files
|
|
44
44
|
Then the file "monkeytest.file" contains "monkeypants"
|
45
45
|
|
46
46
|
@steps
|
47
|
-
Scenario: File contents
|
47
|
+
Scenario: File contents exact match
|
48
48
|
When I write to "monkeytest.file" with:
|
49
49
|
"""
|
50
50
|
monkeypants
|
@@ -57,12 +57,26 @@ Feature: Examining files
|
|
57
57
|
monkeyshorts
|
58
58
|
|
59
59
|
"""
|
60
|
+
Scenario: File contents multiple matches
|
61
|
+
When I write to "monkeytest.file" with:
|
62
|
+
"""
|
63
|
+
monkeypants
|
64
|
+
monkeyshorts
|
65
|
+
monkeypants
|
66
|
+
monkeyshorts
|
67
|
+
|
68
|
+
"""
|
69
|
+
Then the file "monkeytest.file" contains "monkeyp" exactly "2" times
|
70
|
+
Then the file "monkeytest.file" does not contain "monkey" exactly "2" times
|
71
|
+
|
60
72
|
@steps
|
61
73
|
Scenario: File modes
|
62
|
-
When I run
|
63
|
-
And I run
|
64
|
-
Then the file "filemode.file" has mode "
|
65
|
-
|
74
|
+
When I run `touch filemode.file`
|
75
|
+
And I run `chmod 644 filemode.file`
|
76
|
+
Then the file "filemode.file" has octal mode "188"
|
77
|
+
And the file "filemode.file" has octal mode "33188"
|
78
|
+
And the file "filemode.file" has decimal mode "644"
|
79
|
+
And the file "filemode.file" has decimal mode "0644"
|
66
80
|
|
67
81
|
@steps
|
68
82
|
Scenario: Directory exists
|
@@ -74,10 +88,10 @@ Feature: Examining files
|
|
74
88
|
Then the directory "dirtest-m000" does not exist
|
75
89
|
|
76
90
|
@steps
|
77
|
-
Scenario: Directory
|
78
|
-
When I run
|
79
|
-
And I run
|
80
|
-
Then the directory "dirtest" has mode "755"
|
81
|
-
And the directory "dirtest" has mode "
|
82
|
-
|
83
|
-
|
91
|
+
Scenario: Directory modes
|
92
|
+
When I run `mkdir -p dirtest`
|
93
|
+
And I run `chmod 755 dirtest`
|
94
|
+
Then the directory "dirtest" has decimal mode "755"
|
95
|
+
And the directory "dirtest" has decimal mode "2755"
|
96
|
+
Then the directory "dirtest" has octal mode "901"
|
97
|
+
And the directory "dirtest" has octal mode "17901"
|
data/features/ssh.feature
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# For complete Aruba step listing see:
|
2
2
|
# lib/aruba/cucumber.rb
|
3
3
|
# or https://github.com/aslakhellesoy/aruba/blob/master/lib/aruba/cucumber.rb
|
4
|
+
@announce
|
4
5
|
Feature: SSH steps
|
5
6
|
In order to specify remote command execution
|
6
7
|
As a developer using Cucumber
|
@@ -21,5 +22,5 @@ Feature: SSH steps
|
|
21
22
|
| `whoami` | `hostname` | `echo cuken` | `echo 22` |
|
22
23
|
| :default | localhost | `echo cuken` | 22 |
|
23
24
|
| :default | :default | :default | :default |
|
24
|
-
And I successfully run
|
25
|
+
And I successfully run `ssh cuken 'echo Supercalifragilisticexpialidocious;'`
|
25
26
|
Then the output should contain "Supercalifragilisticexpialidocious"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
@step_features
|
2
|
+
Feature: Listing file steps
|
3
|
+
In order to test a running system
|
4
|
+
As an administrator
|
5
|
+
I want to know what SSH steps are available
|
6
|
+
|
7
|
+
Background:
|
8
|
+
Given that "cuken/ssh" has been required
|
9
|
+
|
10
|
+
Scenario: SSH
|
11
|
+
Then these steps are defined for "cuken/cucumber/ssh.rb":
|
12
|
+
| step |
|
13
|
+
|a SSH client user |
|
14
|
+
|a SSH client user "([^\"]*)" |
|
15
|
+
|a SSH client hostname |
|
16
|
+
|a SSH client hostname "([^\"]*)" |
|
17
|
+
|default ssh-forever options |
|
18
|
+
|I initialize password-less SSH access |
|
19
|
+
|I initialize password-less SSH access for: |
|
20
|
+
|the ssh-forever options: |
|
@@ -6,6 +6,16 @@ Given /^that "([^\"]*)" has been required$/ do |lib|
|
|
6
6
|
require(lib).should be_false
|
7
7
|
end
|
8
8
|
|
9
|
+
Then /^these steps are defined for "([^\"]*)":$/ do |file, table|
|
10
|
+
rsc = ::Cucumber::Runtime::SupportCode.new 'ui', :autoload_code_paths => 'lib/cuken/cucumber'
|
11
|
+
rsc.load_files! ["lib/#{file}", "#{ENV['GEM_HOME']}/gems/aruba-0.3.5/lib/aruba/cucumber.rb"]
|
12
|
+
sd_array = rsc.step_definitions
|
13
|
+
#sd_array.each{|sd| puts sd.regexp_source}
|
14
|
+
table.hashes.each do |hsh|
|
15
|
+
sd_array.each{|sd| res = sd.regexp_source == %Q{/^#{hsh['step']}$/}; break('found') if res}.should == 'found'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
9
19
|
When /^I do aruba (.*)$/ do |aruba_step|
|
10
20
|
begin
|
11
21
|
When(aruba_step)
|
data/features/support/env.rb
CHANGED
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'aruba/api' unless defined? Aruba::Api
|
2
|
+
require 'chef' unless defined? Chef
|
3
|
+
require 'cuken/api/chef/common'
|
4
|
+
|
5
|
+
module ::Cuken
|
6
|
+
module Api
|
7
|
+
module Chef
|
8
|
+
|
9
|
+
include ::Cuken::Api::Chef::Common
|
10
|
+
|
11
|
+
def update_cookbook_paths(ckbk_path, cookbook)
|
12
|
+
lp = Pathname(ckbk_path).expand_path.realdirpath
|
13
|
+
lrp = lp + '.git'
|
14
|
+
if lrp.exist?
|
15
|
+
chef.cookbook_paths << lp if cookbook
|
16
|
+
chef.cookbooks_paths << lp.parent if cookbook
|
17
|
+
lrp
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def chef_clone_repo(ckbk_path, cookbook = false, repo = chef.remote_chef_repo, brnch = 'master')
|
22
|
+
in_current_dir do
|
23
|
+
if Dir.exists?(ckbk_path)
|
24
|
+
update_cookbook_paths(ckbk_path, cookbook)
|
25
|
+
else
|
26
|
+
clone_opts = {:quiet => false, :verbose => true, :progress => true, :branch => brnch}
|
27
|
+
gritty = ::Grit::Git.new(current_dir)
|
28
|
+
gritty.clone(clone_opts, repo, ckbk_path)
|
29
|
+
update_cookbook_paths(ckbk_path, cookbook)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def run_knife_command(cmd, interactive=false)
|
35
|
+
in_current_dir do
|
36
|
+
unless chef.client_knife_path
|
37
|
+
chef.client_knife_path = Pathname(chef.local_chef_repo).ascend { |d| h=d+'.chef'+'knife.rb'; break h if h.file? }
|
38
|
+
end
|
39
|
+
cmd += " -c #{chef.client_knife_path.expand_path.to_s}" if chef.client_knife_path.expand_path.exist?
|
40
|
+
cmd += " -o #{(chef.cookbooks_paths.collect { |pn| pn.expand_path.to_s }).join(':')}" unless chef.cookbooks_paths.empty?
|
41
|
+
cmd += " --log_level debug" if chef.knife_debug
|
42
|
+
if interactive
|
43
|
+
run_interactive(unescape("#{chef.knife}" + cmd))
|
44
|
+
else
|
45
|
+
run_simple(unescape("#{chef.knife}" + cmd))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def rest
|
51
|
+
@rest ||= ::Chef::REST.new('http://localhost:4000', nil, nil)
|
52
|
+
end
|
53
|
+
|
54
|
+
def tmpdir
|
55
|
+
@tmpdir ||= ::File.join(Dir.tmpdir, "chef_integration")
|
56
|
+
end
|
57
|
+
|
58
|
+
def server_tmpdir
|
59
|
+
@server_tmpdir ||= ::File.expand_path(File.join(datadir, "tmp"))
|
60
|
+
end
|
61
|
+
|
62
|
+
def datadir
|
63
|
+
@datadir ||= ::File.join(File.dirname(__FILE__), "..", "data")
|
64
|
+
end
|
65
|
+
|
66
|
+
def configdir
|
67
|
+
@configdir ||= ::File.join(File.dirname(__FILE__), "..", "data", "config")
|
68
|
+
end
|
69
|
+
|
70
|
+
def cleanup_files
|
71
|
+
@cleanup_files ||= ::Array.new
|
72
|
+
end
|
73
|
+
|
74
|
+
def cleanup_dirs
|
75
|
+
@cleanup_dirs ||= ::Array.new
|
76
|
+
end
|
77
|
+
|
78
|
+
def stash
|
79
|
+
@stash ||= ::Hash.new
|
80
|
+
end
|
81
|
+
|
82
|
+
def gemserver
|
83
|
+
@gemserver ||= ::WEBrick::HTTPServer.new(
|
84
|
+
:Port => 8000,
|
85
|
+
:DocumentRoot => datadir + "/gems/",
|
86
|
+
# Make WEBrick STFU
|
87
|
+
:Logger => ::Logger.new(StringIO.new),
|
88
|
+
:AccessLog => [ ::StringIO.new, ::WEBrick::AccessLog::COMMON_LOG_FORMAT ]
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
attr_accessor :apt_server_thread
|
93
|
+
|
94
|
+
def apt_server
|
95
|
+
@apt_server ||= ::WEBrick::HTTPServer.new(
|
96
|
+
:Port => 9000,
|
97
|
+
:DocumentRoot => datadir + "/apt/var/www/apt",
|
98
|
+
# Make WEBrick STFU
|
99
|
+
:Logger => ::Logger.new(StringIO.new),
|
100
|
+
:AccessLog => [ ::StringIO.new, ::WEBrick::AccessLog::COMMON_LOG_FORMAT ]
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
104
|
+
def admin_rest
|
105
|
+
admin_client
|
106
|
+
@admin_rest ||= ::Chef::REST.new(Chef::Config[:registration_url], 'bobo', "#{tmpdir}/bobo.pem")
|
107
|
+
end
|
108
|
+
|
109
|
+
def couchdb_rest_client
|
110
|
+
::Chef::REST.new('http://localhost:5984/chef_integration', false, false)
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|