puppet 4.8.2-x64-mingw32 → 4.9.0-x64-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.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2607
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
| @@ -1,141 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'semantic/dependency/graph_node'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe Semantic::Dependency::GraphNode do
         | 
| 5 | 
            -
              let(:klass) do
         | 
| 6 | 
            -
                Class.new do
         | 
| 7 | 
            -
                  include Semantic::Dependency::GraphNode
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  attr_accessor :name
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def initialize(name, *satisfying)
         | 
| 12 | 
            -
                    @name = name
         | 
| 13 | 
            -
                    @satisfying = satisfying
         | 
| 14 | 
            -
                    @satisfying.each { |x| add_dependency(x.name) }
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  # @override
         | 
| 18 | 
            -
                  def satisfies_dependency?(node)
         | 
| 19 | 
            -
                    @satisfying.include?(node)
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              def instance(*args)
         | 
| 25 | 
            -
                name = args.first.name unless args.empty?
         | 
| 26 | 
            -
                klass.new(name || 'unnamed', *args)
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              context 'dependencies' do
         | 
| 30 | 
            -
                subject { instance() }
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                example 'are added by #add_dependency' do
         | 
| 33 | 
            -
                  subject.add_dependency('foo')
         | 
| 34 | 
            -
                  subject.add_dependency('bar')
         | 
| 35 | 
            -
                  subject.add_dependency('baz')
         | 
| 36 | 
            -
                  expect(subject.dependency_names).to match_array %w[ foo bar baz ]
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                example 'are maintained in the #dependencies Hash' do
         | 
| 40 | 
            -
                  expect(subject.dependencies).to be_empty
         | 
| 41 | 
            -
                  subject.add_dependency('foo')
         | 
| 42 | 
            -
                  expect(subject.dependencies).to have_key 'foo'
         | 
| 43 | 
            -
                  expect(subject.dependencies).to respond_to :to_a
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
              end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              describe '#<<' do
         | 
| 48 | 
            -
                let(:foo) { double('Node', :name => 'foo') }
         | 
| 49 | 
            -
                let(:bar1) { double('Node', :name => 'bar', :'<=>' => 0) }
         | 
| 50 | 
            -
                let(:bar2) { double('Node', :name => 'bar', :'<=>' => 0) }
         | 
| 51 | 
            -
                let(:bar3) { double('Node', :name => 'bar') }
         | 
| 52 | 
            -
                let(:baz) { double('Node', :name => 'baz') }
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                subject { instance(foo, bar1, bar2) }
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                it 'appends satisfying nodes to the dependencies' do
         | 
| 57 | 
            -
                  subject << foo << bar1 << bar2
         | 
| 58 | 
            -
                  expect(Array(subject.dependencies['foo'])).to match_array [ foo ]
         | 
| 59 | 
            -
                  expect(Array(subject.dependencies['bar'])).to match_array [ bar1, bar2 ]
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                it 'does not append nodes with unknown names' do
         | 
| 63 | 
            -
                  subject << baz
         | 
| 64 | 
            -
                  expect(Array(subject.dependencies['baz'])).to be_empty
         | 
| 65 | 
            -
                end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                it 'does not append unsatisfying nodes' do
         | 
| 68 | 
            -
                  subject << bar3
         | 
| 69 | 
            -
                  expect(Array(subject.dependencies['bar'])).to be_empty
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
              end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
              describe '#satisfied' do
         | 
| 74 | 
            -
                let(:foo) { double('Node', :name => 'foo') }
         | 
| 75 | 
            -
                let(:bar) { double('Node', :name => 'bar') }
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                subject { instance(foo, bar) }
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                it 'is unsatisfied when no nodes have been appended' do
         | 
| 80 | 
            -
                  expect(subject).to_not be_satisfied
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                it 'is unsatisfied when any dependencies are missing' do
         | 
| 84 | 
            -
                  subject << foo
         | 
| 85 | 
            -
                  expect(subject).to_not be_satisfied
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                it 'is satisfied when all dependencies are fulfilled' do
         | 
| 89 | 
            -
                  subject << foo << bar
         | 
| 90 | 
            -
                  expect(subject).to be_satisfied
         | 
| 91 | 
            -
                end
         | 
| 92 | 
            -
              end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
              describe '#populate_children' do
         | 
| 95 | 
            -
                let(:foo) { double('Node', :name => 'foo') }
         | 
| 96 | 
            -
                let(:bar1) { double('Node', :name => 'bar', :'<=>' => 0) }
         | 
| 97 | 
            -
                let(:bar2) { double('Node', :name => 'bar', :'<=>' => 0) }
         | 
| 98 | 
            -
                let(:baz1) { double('Node', :name => 'baz', :'<=>' => 0) }
         | 
| 99 | 
            -
                let(:baz2) { double('Node', :name => 'baz', :'<=>' => 0) }
         | 
| 100 | 
            -
                let(:quxx) { double('Node', :name => 'quxx') }
         | 
| 101 | 
            -
             | 
| 102 | 
            -
                subject do
         | 
| 103 | 
            -
                  graph = instance(foo, bar1, bar2, baz1, baz2)
         | 
| 104 | 
            -
                  graph << foo << bar1 << bar2 << baz1 << baz2
         | 
| 105 | 
            -
                end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                it 'saves all relevant nodes as its children' do
         | 
| 108 | 
            -
                  nodes = [ foo, bar2, baz1, quxx ]
         | 
| 109 | 
            -
                  nodes.each do |node|
         | 
| 110 | 
            -
                    allow(node).to receive(:populate_children)
         | 
| 111 | 
            -
                  end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                  subject.populate_children(nodes)
         | 
| 114 | 
            -
             | 
| 115 | 
            -
                  expected = { 'foo' => foo, 'bar' => bar2, 'baz' => baz1 }
         | 
| 116 | 
            -
                  expect(subject.children).to eql expected
         | 
| 117 | 
            -
                end
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                it 'accepts a graph solution and populates it across all nodes' do
         | 
| 120 | 
            -
                  nodes = [ foo, bar2, baz1 ]
         | 
| 121 | 
            -
                  nodes.each do |node|
         | 
| 122 | 
            -
                    expect(node).to receive(:populate_children).with(nodes)
         | 
| 123 | 
            -
                  end
         | 
| 124 | 
            -
             | 
| 125 | 
            -
                  subject.populate_children(nodes)
         | 
| 126 | 
            -
                end
         | 
| 127 | 
            -
              end
         | 
| 128 | 
            -
             | 
| 129 | 
            -
              describe '#<=>' do
         | 
| 130 | 
            -
                it 'can be compared' do
         | 
| 131 | 
            -
                  a = instance(double('Node', :name => 'a'))
         | 
| 132 | 
            -
                  b = instance(double('Node', :name => 'b'))
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                  expect(a).to be < b
         | 
| 135 | 
            -
                  expect(b).to be > a
         | 
| 136 | 
            -
                  expect([b, a].sort).to eql [a, b]
         | 
| 137 | 
            -
                  expect([a, b].sort).to eql [a, b]
         | 
| 138 | 
            -
                end
         | 
| 139 | 
            -
              end
         | 
| 140 | 
            -
             | 
| 141 | 
            -
            end
         | 
| @@ -1,162 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'semantic/dependency/graph'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe Semantic::Dependency::Graph do
         | 
| 5 | 
            -
              Graph         = Semantic::Dependency::Graph
         | 
| 6 | 
            -
              GraphNode     = Semantic::Dependency::GraphNode
         | 
| 7 | 
            -
              ModuleRelease = Semantic::Dependency::ModuleRelease
         | 
| 8 | 
            -
              Version       = Semantic::Version
         | 
| 9 | 
            -
              VersionRange  = Semantic::VersionRange
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              describe '#initialize' do
         | 
| 12 | 
            -
                it 'can be called without arguments' do
         | 
| 13 | 
            -
                  expect { Graph.new }.to_not raise_error
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                it 'implements the GraphNode protocol' do
         | 
| 17 | 
            -
                  expect(Graph.new).to be_a GraphNode
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                it 'adds constraints for every key in the passed hash' do
         | 
| 21 | 
            -
                  graph = Graph.new('foo' => 1, 'bar' => 2, 'baz' => 3)
         | 
| 22 | 
            -
                  expect(graph.constraints.keys).to match_array %w[ foo bar baz ]
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                it 'adds the named dependencies for every key in the passed hash' do
         | 
| 26 | 
            -
                  graph = Graph.new('foo' => 1, 'bar' => 2, 'baz' => 3)
         | 
| 27 | 
            -
                  expect(graph.dependency_names).to match_array %w[ foo bar baz ]
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
              describe '#add_constraint' do
         | 
| 32 | 
            -
                let(:graph) { Graph.new }
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                it 'can create a new constraint on a module' do
         | 
| 35 | 
            -
                  expect(graph.constraints.keys).to be_empty
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                  graph.add_constraint('test', 'module-name', 'nil') { }
         | 
| 38 | 
            -
                  expect(graph.constraints.keys).to match_array %w[ module-name ]
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                it 'permits multiple constraints against the same module name' do
         | 
| 42 | 
            -
                  expect(graph.constraints.keys).to be_empty
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  graph.add_constraint('test', 'module-name', 'nil') { }
         | 
| 45 | 
            -
                  graph.add_constraint('test', 'module-name', 'nil') { }
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                  expect(graph.constraints.keys).to match_array %w[ module-name ]
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
              describe '#satisfies_dependency?' do
         | 
| 52 | 
            -
                it 'is not satisfied by modules it does not depend on' do
         | 
| 53 | 
            -
                  graph = Graph.new('foo' => VersionRange.parse('1.x'))
         | 
| 54 | 
            -
                  release = ModuleRelease.new(nil, 'bar', Version.parse('1.0.0'))
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                  expect(graph.satisfies_dependency?(release)).to_not be true
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                it 'is not satisfied by modules that do not fulfill the constraint' do
         | 
| 60 | 
            -
                  graph = Graph.new('foo' => VersionRange.parse('1.x'))
         | 
| 61 | 
            -
                  release = ModuleRelease.new(nil, 'foo', Version.parse('2.3.1'))
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  expect(graph.satisfies_dependency?(release)).to_not be true
         | 
| 64 | 
            -
                end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                it 'is not satisfied by modules that do not fulfill all the constraints' do
         | 
| 67 | 
            -
                  graph = Graph.new('foo' => VersionRange.parse('1.x'))
         | 
| 68 | 
            -
                  graph.add_constraint('me', 'foo', '1.2.3') do |node|
         | 
| 69 | 
            -
                    node.version.to_s == '1.2.3'
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  release = ModuleRelease.new(nil, 'foo', Version.parse('1.2.1'))
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                  expect(graph.satisfies_dependency?(release)).to_not be true
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                it 'is satisfied by modules that do fulfill all the constraints' do
         | 
| 78 | 
            -
                  graph = Graph.new('foo' => VersionRange.parse('1.x'))
         | 
| 79 | 
            -
                  graph.add_constraint('me', 'foo', '1.2.3') do |node|
         | 
| 80 | 
            -
                    node.version.to_s == '1.2.3'
         | 
| 81 | 
            -
                  end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                  release = ModuleRelease.new(nil, 'foo', Version.parse('1.2.3'))
         | 
| 84 | 
            -
             | 
| 85 | 
            -
                  expect(graph.satisfies_dependency?(release)).to be true
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
              end
         | 
| 88 | 
            -
             | 
| 89 | 
            -
              describe '#add_graph_constraint' do
         | 
| 90 | 
            -
                let(:graph) { Graph.new }
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                it 'can create a new constraint on a graph' do
         | 
| 93 | 
            -
                  expect(graph.constraints.keys).to be_empty
         | 
| 94 | 
            -
             | 
| 95 | 
            -
                  graph.add_graph_constraint('test') { }
         | 
| 96 | 
            -
                  expect(graph.constraints.keys).to match_array [ :graph ]
         | 
| 97 | 
            -
                end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                it 'permits multiple graph constraints' do
         | 
| 100 | 
            -
                  expect(graph.constraints.keys).to be_empty
         | 
| 101 | 
            -
             | 
| 102 | 
            -
                  graph.add_graph_constraint('test') { }
         | 
| 103 | 
            -
                  graph.add_graph_constraint('test') { }
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                  expect(graph.constraints.keys).to match_array [ :graph ]
         | 
| 106 | 
            -
                end
         | 
| 107 | 
            -
              end
         | 
| 108 | 
            -
             | 
| 109 | 
            -
              describe '#satisfies_graph?' do
         | 
| 110 | 
            -
                it 'returns false if the solution violates a graph constraint' do
         | 
| 111 | 
            -
                  graph = Graph.new
         | 
| 112 | 
            -
                  graph.add_graph_constraint('me') do |nodes|
         | 
| 113 | 
            -
                    nodes.none? { |node| node.name =~ /z/ }
         | 
| 114 | 
            -
                  end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                  releases = [
         | 
| 117 | 
            -
                    double('Node', :name => 'foo'),
         | 
| 118 | 
            -
                    double('Node', :name => 'bar'),
         | 
| 119 | 
            -
                    double('Node', :name => 'baz'),
         | 
| 120 | 
            -
                  ]
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                  expect(graph.satisfies_graph?(releases)).to_not be true
         | 
| 123 | 
            -
                end
         | 
| 124 | 
            -
             | 
| 125 | 
            -
                it 'returns false if the solution violates any graph constraint' do
         | 
| 126 | 
            -
                  graph = Graph.new
         | 
| 127 | 
            -
                  graph.add_graph_constraint('me') do |nodes|
         | 
| 128 | 
            -
                    nodes.all? { |node| node.name.length < 5 }
         | 
| 129 | 
            -
                  end
         | 
| 130 | 
            -
                  graph.add_graph_constraint('me') do |nodes|
         | 
| 131 | 
            -
                    nodes.none? { |node| node.name =~ /z/ }
         | 
| 132 | 
            -
                  end
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                  releases = [
         | 
| 135 | 
            -
                    double('Node', :name => 'foo'),
         | 
| 136 | 
            -
                    double('Node', :name => 'bar'),
         | 
| 137 | 
            -
                    double('Node', :name => 'bangerang'),
         | 
| 138 | 
            -
                  ]
         | 
| 139 | 
            -
             | 
| 140 | 
            -
                  expect(graph.satisfies_graph?(releases)).to_not be true
         | 
| 141 | 
            -
                end
         | 
| 142 | 
            -
             | 
| 143 | 
            -
                it 'returns true if the solution violates no graph constraints' do
         | 
| 144 | 
            -
                  graph = Graph.new
         | 
| 145 | 
            -
                  graph.add_graph_constraint('me') do |nodes|
         | 
| 146 | 
            -
                    nodes.all? { |node| node.name.length < 5 }
         | 
| 147 | 
            -
                  end
         | 
| 148 | 
            -
                  graph.add_graph_constraint('me') do |nodes|
         | 
| 149 | 
            -
                    nodes.none? { |node| node.name =~ /z/ }
         | 
| 150 | 
            -
                  end
         | 
| 151 | 
            -
             | 
| 152 | 
            -
                  releases = [
         | 
| 153 | 
            -
                    double('Node', :name => 'foo'),
         | 
| 154 | 
            -
                    double('Node', :name => 'bar'),
         | 
| 155 | 
            -
                    double('Node', :name => 'boom'),
         | 
| 156 | 
            -
                  ]
         | 
| 157 | 
            -
             | 
| 158 | 
            -
                  expect(graph.satisfies_graph?(releases)).to be true
         | 
| 159 | 
            -
                end
         | 
| 160 | 
            -
              end
         | 
| 161 | 
            -
             | 
| 162 | 
            -
            end
         | 
| @@ -1,143 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'semantic/dependency/module_release'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe Semantic::Dependency::ModuleRelease do
         | 
| 5 | 
            -
              def source
         | 
| 6 | 
            -
                @source ||= Semantic::Dependency::Source.new
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              def make_release(name, version, deps = {})
         | 
| 10 | 
            -
                source.create_release(name, version, deps)
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              let(:no_dependencies) do
         | 
| 14 | 
            -
                make_release('module', '1.2.3')
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
              let(:one_dependency) do
         | 
| 18 | 
            -
                make_release('module', '1.2.3', 'foo' => '1.0.0')
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              let(:three_dependencies) do
         | 
| 22 | 
            -
                dependencies = { 'foo' => '1.0.0', 'bar' => '2.0.0', 'baz' => '3.0.0' }
         | 
| 23 | 
            -
                make_release('module', '1.2.3', dependencies)
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
              describe '#dependency_names' do
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                it "lists the names of all the release's dependencies" do
         | 
| 29 | 
            -
                  expect(no_dependencies.dependency_names).to    match_array %w[]
         | 
| 30 | 
            -
                  expect(one_dependency.dependency_names).to     match_array %w[foo]
         | 
| 31 | 
            -
                  expect(three_dependencies.dependency_names).to match_array %w[foo bar baz]
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              describe '#to_s' do
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                let(:name) { 'foobarbaz' }
         | 
| 39 | 
            -
                let(:version) { '1.2.3' }
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                subject { make_release(name, version).to_s }
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                it { should =~ /#{name}/ }
         | 
| 44 | 
            -
                it { should =~ /#{version}/ }
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
              describe '#<<' do
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                it 'marks matching dependencies as satisfied' do
         | 
| 51 | 
            -
                  one_dependency << make_release('foo', '1.0.0')
         | 
| 52 | 
            -
                  expect(one_dependency).to be_satisfied
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                it 'does not mark mis-matching dependency names as satisfied' do
         | 
| 56 | 
            -
                  one_dependency << make_release('WAT', '1.0.0')
         | 
| 57 | 
            -
                  expect(one_dependency).to_not be_satisfied
         | 
| 58 | 
            -
                end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                it 'does not mark mis-matching dependency versions as satisfied' do
         | 
| 61 | 
            -
                  one_dependency << make_release('foo', '0.0.1')
         | 
| 62 | 
            -
                  expect(one_dependency).to_not be_satisfied
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
              end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
              describe '#<=>' do
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                it 'considers releases with greater version numbers greater' do
         | 
| 70 | 
            -
                  expect(make_release('foo', '1.0.0')).to be > make_release('foo', '0.1.0')
         | 
| 71 | 
            -
                end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                it 'considers releases with lesser version numbers lesser' do
         | 
| 74 | 
            -
                  expect(make_release('foo', '0.1.0')).to be < make_release('foo', '1.0.0')
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                it 'orders releases with different names lexographically' do
         | 
| 78 | 
            -
                  expect(make_release('bar', '1.0.0')).to be < make_release('foo', '1.0.0')
         | 
| 79 | 
            -
                end
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                it 'orders releases by name first' do
         | 
| 82 | 
            -
                  expect(make_release('bar', '2.0.0')).to be < make_release('foo', '1.0.0')
         | 
| 83 | 
            -
                end
         | 
| 84 | 
            -
             | 
| 85 | 
            -
              end
         | 
| 86 | 
            -
             | 
| 87 | 
            -
              describe '#satisfied?' do
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                it 'returns true when there are no dependencies to satisfy' do
         | 
| 90 | 
            -
                  expect(no_dependencies).to be_satisfied
         | 
| 91 | 
            -
                end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                it 'returns false when no dependencies have been satisified' do
         | 
| 94 | 
            -
                  expect(one_dependency).to_not be_satisfied
         | 
| 95 | 
            -
                end
         | 
| 96 | 
            -
             | 
| 97 | 
            -
                it 'returns false when not all dependencies have been satisified' do
         | 
| 98 | 
            -
                  releases = %w[ 0.9.0 1.0.0 1.0.1 ].map { |ver| make_release('foo', ver) }
         | 
| 99 | 
            -
                  three_dependencies << releases
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                  expect(three_dependencies).to_not be_satisfied
         | 
| 102 | 
            -
                end
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                it 'returns false when not all dependency versions have been satisified' do
         | 
| 105 | 
            -
                  releases = %w[ 0.9.0 1.0.1 ].map { |ver| make_release('foo', ver) }
         | 
| 106 | 
            -
                  one_dependency << releases
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                  expect(one_dependency).to_not be_satisfied
         | 
| 109 | 
            -
                end
         | 
| 110 | 
            -
             | 
| 111 | 
            -
                it 'returns true when all dependencies have been satisified' do
         | 
| 112 | 
            -
                  releases = %w[ 0.9.0 1.0.0 1.0.1 ].map { |ver| make_release('foo', ver) }
         | 
| 113 | 
            -
                  one_dependency << releases
         | 
| 114 | 
            -
             | 
| 115 | 
            -
                  expect(one_dependency).to be_satisfied
         | 
| 116 | 
            -
                end
         | 
| 117 | 
            -
             | 
| 118 | 
            -
              end
         | 
| 119 | 
            -
             | 
| 120 | 
            -
              describe '#satisfies_dependency?' do
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                it 'returns false when there are no dependencies to satisfy' do
         | 
| 123 | 
            -
                  release = make_release('foo', '1.0.0')
         | 
| 124 | 
            -
                  expect(no_dependencies.satisfies_dependency?(release)).to_not be true
         | 
| 125 | 
            -
                end
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                it 'returns false when the release does not match the dependency name' do
         | 
| 128 | 
            -
                  release = make_release('bar', '1.0.0')
         | 
| 129 | 
            -
                  expect(one_dependency.satisfies_dependency?(release)).to_not be true
         | 
| 130 | 
            -
                end
         | 
| 131 | 
            -
             | 
| 132 | 
            -
                it 'returns false when the release does not match the dependency version' do
         | 
| 133 | 
            -
                  release = make_release('foo', '4.0.0')
         | 
| 134 | 
            -
                  expect(one_dependency.satisfies_dependency?(release)).to_not be true
         | 
| 135 | 
            -
                end
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                it 'returns true when the release matches the dependency' do
         | 
| 138 | 
            -
                  release = make_release('foo', '1.0.0')
         | 
| 139 | 
            -
                  expect(one_dependency.satisfies_dependency?(release)).to be true
         | 
| 140 | 
            -
                end
         | 
| 141 | 
            -
             | 
| 142 | 
            -
              end
         | 
| 143 | 
            -
            end
         |