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,254 +0,0 @@ | |
| 1 | 
            -
            # A LookupAdapter is a specialized DataAdapter that uses its hash to store module providers. It also remembers the compiler
         | 
| 2 | 
            -
            # that it is attached to and maintains a cache of _lookup options_ retrieved from the data providers associated with the
         | 
| 3 | 
            -
            # compiler's environment.
         | 
| 4 | 
            -
            #
         | 
| 5 | 
            -
            # @api private
         | 
| 6 | 
            -
            class Puppet::DataProviders::LookupAdapter < Puppet::DataProviders::DataAdapter
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              LOOKUP_OPTIONS = Puppet::Pops::Lookup::LOOKUP_OPTIONS
         | 
| 9 | 
            -
              LOOKUP_OPTIONS_PREFIX = LOOKUP_OPTIONS + '.'
         | 
| 10 | 
            -
              LOOKUP_OPTIONS_PREFIX.freeze
         | 
| 11 | 
            -
              HASH = 'hash'.freeze
         | 
| 12 | 
            -
              MERGE = 'merge'.freeze
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              def self.create_adapter(compiler)
         | 
| 15 | 
            -
                new(compiler)
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              def initialize(compiler)
         | 
| 19 | 
            -
                super()
         | 
| 20 | 
            -
                @compiler = compiler
         | 
| 21 | 
            -
                @lookup_options = {}
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              # Performs a lookup using global, environment, and module data providers. Merge the result using the given
         | 
| 25 | 
            -
              # _merge_ strategy. If the merge strategy is nil, then an attempt is made to find merge options in the
         | 
| 26 | 
            -
              # `lookup_options` hash for an entry associated with the key. If no options are found, the no merge is performed
         | 
| 27 | 
            -
              # and the first found entry is returned.
         | 
| 28 | 
            -
              #
         | 
| 29 | 
            -
              # @param key [String] The key to lookup
         | 
| 30 | 
            -
              # @param merge [Puppet::Pops::MergeStrategy,String,Hash<String,Object>,nil] Merge strategy or hash with strategy and options
         | 
| 31 | 
            -
              # @param lookup_invocation [Puppet::Pops::Lookup::Invocation] Invocation data containing scope, overrides, and defaults
         | 
| 32 | 
            -
              # @return [Object] The found value
         | 
| 33 | 
            -
              # @throws :no_such_key if the given key is not found
         | 
| 34 | 
            -
              #
         | 
| 35 | 
            -
              def lookup(key, lookup_invocation, merge)
         | 
| 36 | 
            -
                # The 'lookup_options' key is reserved and not found as normal data
         | 
| 37 | 
            -
                if key == LOOKUP_OPTIONS || key.start_with?(LOOKUP_OPTIONS_PREFIX)
         | 
| 38 | 
            -
                  lookup_invocation.with(:invalid_key, LOOKUP_OPTIONS) do
         | 
| 39 | 
            -
                    throw :no_such_key
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                lookup_invocation.top_key ||= key
         | 
| 44 | 
            -
                merge_explained = false
         | 
| 45 | 
            -
                if lookup_invocation.explain_options?
         | 
| 46 | 
            -
                  catch(:no_such_key) do
         | 
| 47 | 
            -
                    module_name = extract_module_name(key) unless key == Puppet::Pops::Lookup::GLOBAL
         | 
| 48 | 
            -
                    lookup_invocation.module_name = module_name
         | 
| 49 | 
            -
                    if lookup_invocation.only_explain_options?
         | 
| 50 | 
            -
                      do_lookup(LOOKUP_OPTIONS, lookup_invocation, HASH)
         | 
| 51 | 
            -
                      return nil
         | 
| 52 | 
            -
                    end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                    # Bypass cache and do a "normal" lookup of the lookup_options
         | 
| 55 | 
            -
                    lookup_invocation.with(:meta, LOOKUP_OPTIONS) do
         | 
| 56 | 
            -
                      key_options = do_lookup(LOOKUP_OPTIONS, lookup_invocation, HASH)[key]
         | 
| 57 | 
            -
                      merge = key_options[MERGE] unless key_options.nil?
         | 
| 58 | 
            -
                      merge_explained = true
         | 
| 59 | 
            -
                    end
         | 
| 60 | 
            -
                  end
         | 
| 61 | 
            -
                elsif merge.nil?
         | 
| 62 | 
            -
                  # Used cached lookup_options
         | 
| 63 | 
            -
                  merge = lookup_merge_options(key, lookup_invocation)
         | 
| 64 | 
            -
                  lookup_invocation.report_merge_source('lookup_options') unless merge.nil?
         | 
| 65 | 
            -
                end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                if merge_explained
         | 
| 68 | 
            -
                  # Merge lookup is explained in detail so we need to explain the data in a section
         | 
| 69 | 
            -
                  # on the same level to avoid confusion
         | 
| 70 | 
            -
                  lookup_invocation.with(:data, key) { do_lookup(key, lookup_invocation, merge) }
         | 
| 71 | 
            -
                else
         | 
| 72 | 
            -
                  do_lookup(key, lookup_invocation, merge)
         | 
| 73 | 
            -
                end
         | 
| 74 | 
            -
              end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
              # @api private
         | 
| 77 | 
            -
              def lookup_global(name, lookup_invocation, merge_strategy)
         | 
| 78 | 
            -
                terminus = Puppet[:data_binding_terminus]
         | 
| 79 | 
            -
                lookup_invocation.with(:global, terminus) do
         | 
| 80 | 
            -
                  catch(:no_such_key) do
         | 
| 81 | 
            -
                    return lookup_invocation.report_found(name, Puppet::DataBinding.indirection.find(name,
         | 
| 82 | 
            -
                        { :environment => environment, :variables => lookup_invocation.scope, :merge => merge_strategy }))
         | 
| 83 | 
            -
                  end
         | 
| 84 | 
            -
                  lookup_invocation.report_not_found(name)
         | 
| 85 | 
            -
                  throw :no_such_key
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
              rescue Puppet::DataBinding::LookupError => detail
         | 
| 88 | 
            -
                error = Puppet::Error.new("Lookup of key '#{lookup_invocation.top_key}' failed: #{detail.message}")
         | 
| 89 | 
            -
                error.set_backtrace(detail.backtrace)
         | 
| 90 | 
            -
                raise error
         | 
| 91 | 
            -
              end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
              # @api private
         | 
| 94 | 
            -
              def lookup_in_environment(name, lookup_invocation, merge_strategy)
         | 
| 95 | 
            -
                env_provider.lookup(name, lookup_invocation, merge_strategy)
         | 
| 96 | 
            -
              end
         | 
| 97 | 
            -
             | 
| 98 | 
            -
              # @api private
         | 
| 99 | 
            -
              def lookup_in_module(name, lookup_invocation, merge_strategy)
         | 
| 100 | 
            -
                module_name = lookup_invocation.module_name || extract_module_name(name)
         | 
| 101 | 
            -
             | 
| 102 | 
            -
                # Do not attempt to do a lookup in a module unless the name is qualified.
         | 
| 103 | 
            -
                throw :no_such_key if module_name.nil?
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                lookup_invocation.with(:module, module_name) do
         | 
| 106 | 
            -
                  if environment.module(module_name).nil?
         | 
| 107 | 
            -
                    lookup_invocation.report_module_not_found
         | 
| 108 | 
            -
                    throw :no_such_key
         | 
| 109 | 
            -
                  end
         | 
| 110 | 
            -
                  module_provider(module_name).lookup(name, lookup_invocation, merge_strategy)
         | 
| 111 | 
            -
                end
         | 
| 112 | 
            -
              end
         | 
| 113 | 
            -
             | 
| 114 | 
            -
              # Retrieve the merge options that match the given `name`.
         | 
| 115 | 
            -
              #
         | 
| 116 | 
            -
              # @param name [String] The key for which we want merge options
         | 
| 117 | 
            -
              # @param lookup_invocation [Puppet::Pops::Lookup::Invocation] the lookup invocation
         | 
| 118 | 
            -
              # @return [String,Hash,nil] The found merge options or nil
         | 
| 119 | 
            -
              #
         | 
| 120 | 
            -
              def lookup_merge_options(name, lookup_invocation)
         | 
| 121 | 
            -
                lookup_options = lookup_lookup_options(name, lookup_invocation)
         | 
| 122 | 
            -
                lookup_options.nil? ? nil : lookup_options[MERGE]
         | 
| 123 | 
            -
              end
         | 
| 124 | 
            -
             | 
| 125 | 
            -
              # Retrieve the lookup options that match the given `name`.
         | 
| 126 | 
            -
              #
         | 
| 127 | 
            -
              # @param name [String] The key for which we want lookup options
         | 
| 128 | 
            -
              # @param lookup_invocation [Puppet::Pops::Lookup::Invocation] the lookup invocation
         | 
| 129 | 
            -
              # @return [String,Hash,nil] The found lookup options or nil
         | 
| 130 | 
            -
              #
         | 
| 131 | 
            -
              def lookup_lookup_options(name, lookup_invocation)
         | 
| 132 | 
            -
                module_name = extract_module_name(name)
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                # Retrieve the options for the module. We use nil as a key in case we have none
         | 
| 135 | 
            -
                if !@lookup_options.include?(module_name)
         | 
| 136 | 
            -
                  options = retrieve_lookup_options(module_name, lookup_invocation, Puppet::Pops::MergeStrategy.strategy(HASH))
         | 
| 137 | 
            -
                  raise Puppet::DataBinding::LookupError.new("value of #{LOOKUP_OPTIONS} must be a hash") unless options.nil? || options.is_a?(Hash)
         | 
| 138 | 
            -
                  @lookup_options[module_name] = options
         | 
| 139 | 
            -
                else
         | 
| 140 | 
            -
                  options = @lookup_options[module_name]
         | 
| 141 | 
            -
                end
         | 
| 142 | 
            -
                options.nil? ? nil : options[name]
         | 
| 143 | 
            -
              end
         | 
| 144 | 
            -
             | 
| 145 | 
            -
              private
         | 
| 146 | 
            -
             | 
| 147 | 
            -
              def do_lookup(key, lookup_invocation, merge)
         | 
| 148 | 
            -
                merge_strategy = Puppet::Pops::MergeStrategy.strategy(merge)
         | 
| 149 | 
            -
                lookup_invocation.with(:merge, merge_strategy) do
         | 
| 150 | 
            -
                  result = merge_strategy.merge_lookup([:lookup_global, :lookup_in_environment, :lookup_in_module]) { |m| send(m, key, lookup_invocation, merge_strategy) }
         | 
| 151 | 
            -
                  lookup_invocation.report_result(result)
         | 
| 152 | 
            -
                  result
         | 
| 153 | 
            -
                end
         | 
| 154 | 
            -
              end
         | 
| 155 | 
            -
             | 
| 156 | 
            -
              # Retrieve lookup options that applies when using a specific module (i.e. a merge of the pre-cached
         | 
| 157 | 
            -
              # `env_lookup_options` and the module specific data)
         | 
| 158 | 
            -
              def retrieve_lookup_options(module_name, lookup_invocation, merge_strategy)
         | 
| 159 | 
            -
                meta_invocation = Puppet::Pops::Lookup::Invocation.new(lookup_invocation.scope)
         | 
| 160 | 
            -
                meta_invocation.top_key = lookup_invocation.top_key
         | 
| 161 | 
            -
                env_opts = env_lookup_options(meta_invocation, merge_strategy)
         | 
| 162 | 
            -
                unless module_name.nil? || environment.module(module_name).nil?
         | 
| 163 | 
            -
                  catch(:no_such_key) do
         | 
| 164 | 
            -
                    meta_invocation.module_name = module_name
         | 
| 165 | 
            -
                    options = module_provider(module_name).lookup(LOOKUP_OPTIONS, meta_invocation, merge_strategy)
         | 
| 166 | 
            -
                    options = merge_strategy.merge(env_opts, options) unless env_opts.nil?
         | 
| 167 | 
            -
                    return options
         | 
| 168 | 
            -
                  end
         | 
| 169 | 
            -
                end
         | 
| 170 | 
            -
                env_opts
         | 
| 171 | 
            -
              end
         | 
| 172 | 
            -
             | 
| 173 | 
            -
              # Retrieve and cache lookup options specific to the environment of the compiler that this adapter is attached to (i.e. a merge
         | 
| 174 | 
            -
              # of global and environment lookup options).
         | 
| 175 | 
            -
              def env_lookup_options(meta_invocation, merge_strategy)
         | 
| 176 | 
            -
                if !instance_variable_defined?(:@env_lookup_options)
         | 
| 177 | 
            -
                  @env_lookup_options = nil
         | 
| 178 | 
            -
                  catch(:no_such_key) do
         | 
| 179 | 
            -
                    @env_lookup_options = merge_strategy.merge_lookup([:lookup_global, :lookup_in_environment]) do |m|
         | 
| 180 | 
            -
                      send(m, LOOKUP_OPTIONS, meta_invocation, merge_strategy)
         | 
| 181 | 
            -
                    end
         | 
| 182 | 
            -
                  end
         | 
| 183 | 
            -
                end
         | 
| 184 | 
            -
                @env_lookup_options
         | 
| 185 | 
            -
              end
         | 
| 186 | 
            -
             | 
| 187 | 
            -
              def env_provider
         | 
| 188 | 
            -
                @env_provider ||= initialize_env_provider
         | 
| 189 | 
            -
              end
         | 
| 190 | 
            -
             | 
| 191 | 
            -
              def module_provider(module_name)
         | 
| 192 | 
            -
                # Test if the key is present for the given module_name. It might be there even if the
         | 
| 193 | 
            -
                # value is nil (which indicates that no module provider is configured for the given name)
         | 
| 194 | 
            -
                unless data.include?(module_name)
         | 
| 195 | 
            -
                  data[module_name] = initialize_module_provider(module_name)
         | 
| 196 | 
            -
                end
         | 
| 197 | 
            -
                data[module_name]
         | 
| 198 | 
            -
              end
         | 
| 199 | 
            -
             | 
| 200 | 
            -
              def initialize_module_provider(module_name)
         | 
| 201 | 
            -
                injector = Puppet.lookup(:injector) { nil }
         | 
| 202 | 
            -
             | 
| 203 | 
            -
                # Support running tests without an injector being configured == using a null implementation
         | 
| 204 | 
            -
                return ModuleDataProvider.new() unless injector
         | 
| 205 | 
            -
             | 
| 206 | 
            -
                # Get the registry of module to provider implementation name
         | 
| 207 | 
            -
                module_service_type = Registry.hash_of_per_module_data_provider
         | 
| 208 | 
            -
                module_service_name = PER_MODULE_DATA_PROVIDER_KEY
         | 
| 209 | 
            -
                module_service = injector.lookup(nil, module_service_type, module_service_name)
         | 
| 210 | 
            -
                provider_name = module_service[module_name] || 'none'
         | 
| 211 | 
            -
             | 
| 212 | 
            -
                service_type = Registry.hash_of_module_data_providers
         | 
| 213 | 
            -
                service_name = MODULE_DATA_PROVIDERS_KEY
         | 
| 214 | 
            -
             | 
| 215 | 
            -
                # Get the service (registry of known implementations)
         | 
| 216 | 
            -
                service = injector.lookup(nil, service_type, service_name)
         | 
| 217 | 
            -
                provider = service[provider_name]
         | 
| 218 | 
            -
                unless provider
         | 
| 219 | 
            -
                  raise Puppet::Error.new("Environment '#{environment.name}', cannot find module_data_provider '#{provider_name}'")
         | 
| 220 | 
            -
                end
         | 
| 221 | 
            -
                # Provider is configured per module but cached using compiler life cycle so it must be cloned
         | 
| 222 | 
            -
                provider.clone
         | 
| 223 | 
            -
              end
         | 
| 224 | 
            -
             | 
| 225 | 
            -
              def initialize_env_provider
         | 
| 226 | 
            -
                injector = Puppet.lookup(:injector) { nil }
         | 
| 227 | 
            -
             | 
| 228 | 
            -
                # Support running tests without an injector being configured == using a null implementation
         | 
| 229 | 
            -
                return EnvironmentDataProvider.new() unless injector
         | 
| 230 | 
            -
             | 
| 231 | 
            -
                # Get the name of the data provider from the environment's configuration and find the bound implementation
         | 
| 232 | 
            -
                provider_name = environment.configuration.environment_data_provider
         | 
| 233 | 
            -
                service_type = Registry.hash_of_environment_data_providers
         | 
| 234 | 
            -
                service_name = ENV_DATA_PROVIDERS_KEY
         | 
| 235 | 
            -
             | 
| 236 | 
            -
                # Get the service (registry of known implementations)
         | 
| 237 | 
            -
                service = injector.lookup(nil, service_type, service_name)
         | 
| 238 | 
            -
                provider = service[provider_name]
         | 
| 239 | 
            -
                unless provider
         | 
| 240 | 
            -
                  raise Puppet::Error.new("Environment '#{environment.name}', cannot find environment_data_provider '#{provider_name}'")
         | 
| 241 | 
            -
                end
         | 
| 242 | 
            -
                provider
         | 
| 243 | 
            -
              end
         | 
| 244 | 
            -
             | 
| 245 | 
            -
              def extract_module_name(name)
         | 
| 246 | 
            -
                qual_index = name.index('::')
         | 
| 247 | 
            -
                qual_index.nil? ? nil : name[0..qual_index-1]
         | 
| 248 | 
            -
              end
         | 
| 249 | 
            -
             | 
| 250 | 
            -
              # @return [Puppet::Node::Environment] the environment of the compiler that this adapter is associated with
         | 
| 251 | 
            -
              def environment
         | 
| 252 | 
            -
                @compiler.environment
         | 
| 253 | 
            -
              end
         | 
| 254 | 
            -
            end
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            $: << File.join([File.dirname(__FILE__), "semantic/lib"])
         | 
| @@ -1,20 +0,0 @@ | |
| 1 | 
            -
            source "https://rubygems.org"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            group :development do
         | 
| 4 | 
            -
              gem 'rake'
         | 
| 5 | 
            -
              gem 'rubygems-tasks'
         | 
| 6 | 
            -
            end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            group :test do
         | 
| 9 | 
            -
              gem 'rspec'
         | 
| 10 | 
            -
            end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            group :metrics do
         | 
| 13 | 
            -
              gem 'cane',      :platform => [ :mri_19, :mri_20, :mri_21 ]
         | 
| 14 | 
            -
              gem 'simplecov', :platform => [ :mri_19, :mri_20, :mri_21 ]
         | 
| 15 | 
            -
            end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            group :doc do
         | 
| 18 | 
            -
              gem 'yard', '~> 0.8', :platform => [ :mri_19, :mri_20, :mri_21 ]
         | 
| 19 | 
            -
              gem 'redcarpet',      :platform => [ :mri_19, :mri_20, :mri_21 ]
         | 
| 20 | 
            -
            end
         | 
| @@ -1,69 +0,0 @@ | |
| 1 | 
            -
            # RSpec tasks
         | 
| 2 | 
            -
            begin
         | 
| 3 | 
            -
              require 'rspec/core/rake_task'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              # Create the 'spec' task
         | 
| 6 | 
            -
              RSpec::Core::RakeTask.new(:spec) do |task|
         | 
| 7 | 
            -
                task.rspec_opts = '--color'
         | 
| 8 | 
            -
              end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              namespace :spec do
         | 
| 11 | 
            -
                desc "Run the test suite and generate coverage metrics"
         | 
| 12 | 
            -
                task :coverage => [ :simplecov, :spec ]
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                # Add test coverage to the 'spec' task.
         | 
| 15 | 
            -
                task :simplecov do
         | 
| 16 | 
            -
                  ENV['COVERAGE'] = '1'
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              task :default => :spec
         | 
| 21 | 
            -
            rescue LoadError
         | 
| 22 | 
            -
              warn "[Warning]: Could not load `rspec`."
         | 
| 23 | 
            -
            end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            # YARD tasks
         | 
| 26 | 
            -
            begin
         | 
| 27 | 
            -
              require 'yard'
         | 
| 28 | 
            -
              require 'yard/rake/yardoc_task'
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              YARD::Rake::YardocTask.new(:doc) do |yardoc|
         | 
| 31 | 
            -
                yardoc.files = [ 'lib/**/*.rb', '-', '**/*.md' ]
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            rescue LoadError
         | 
| 34 | 
            -
              warn "[Warning]: Could not load `yard`."
         | 
| 35 | 
            -
            end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            # Cane tasks
         | 
| 38 | 
            -
            begin
         | 
| 39 | 
            -
              require 'cane/rake_task'
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              Cane::RakeTask.new(:cane) do |cane|
         | 
| 42 | 
            -
                cane.add_threshold 'coverage/.last_run.json', :>=, 100
         | 
| 43 | 
            -
                cane.abc_max = 15
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              Rake::Task['cane'].prerequisites << Rake::Task['spec:coverage']
         | 
| 47 | 
            -
              Rake::Task[:default].clear_prerequisites
         | 
| 48 | 
            -
              task :default => :cane
         | 
| 49 | 
            -
            rescue LoadError
         | 
| 50 | 
            -
              warn "[Warning]: Could not load `cane`."
         | 
| 51 | 
            -
            end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            # Gem tasks
         | 
| 54 | 
            -
            begin
         | 
| 55 | 
            -
              require 'rubygems/tasks'
         | 
| 56 | 
            -
             | 
| 57 | 
            -
              task :gem => 'gem:build'
         | 
| 58 | 
            -
              task :validate => [ 'cane', 'doc', 'gem:validate' ]
         | 
| 59 | 
            -
             | 
| 60 | 
            -
              namespace :gem do
         | 
| 61 | 
            -
                Gem::Tasks.new(
         | 
| 62 | 
            -
                  :tag => { :format => 'v%s' },
         | 
| 63 | 
            -
                  :sign => { :checksum => true, :pgp => true },
         | 
| 64 | 
            -
                  :build => { :tar => true }
         | 
| 65 | 
            -
                )
         | 
| 66 | 
            -
              end
         | 
| 67 | 
            -
            rescue LoadError
         | 
| 68 | 
            -
              warn "[Warning]: Could not load `rubygems/tasks`."
         | 
| 69 | 
            -
            end
         | 
| @@ -1,60 +0,0 @@ | |
| 1 | 
            -
            require 'semantic/dependency'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Semantic
         | 
| 4 | 
            -
              module Dependency
         | 
| 5 | 
            -
                class ModuleRelease
         | 
| 6 | 
            -
                  include GraphNode
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  attr_reader :name, :version
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  # Create a new instance of a module release.
         | 
| 11 | 
            -
                  #
         | 
| 12 | 
            -
                  # @param source [Semantic::Dependency::Source]
         | 
| 13 | 
            -
                  # @param name [String]
         | 
| 14 | 
            -
                  # @param version [Semantic::Version]
         | 
| 15 | 
            -
                  # @param dependencies [{String => Semantic::VersionRange}]
         | 
| 16 | 
            -
                  def initialize(source, name, version, dependencies = {})
         | 
| 17 | 
            -
                    @source      = source
         | 
| 18 | 
            -
                    @name        = name.freeze
         | 
| 19 | 
            -
                    @version     = version.freeze
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                    dependencies.each do |name, range|
         | 
| 22 | 
            -
                      add_constraint('initialize', name, range.to_s) do |node|
         | 
| 23 | 
            -
                        range === node.version
         | 
| 24 | 
            -
                      end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                      add_dependency(name)
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  def priority
         | 
| 31 | 
            -
                    @source.priority
         | 
| 32 | 
            -
                  end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  def <=>(oth)
         | 
| 35 | 
            -
                    # Note that prior to ruby 2.3.0, if a <=> method threw an exception, ruby
         | 
| 36 | 
            -
                    # would silently rescue the exception and return nil from <=> (which causes
         | 
| 37 | 
            -
                    # the derived == comparison to return false). Starting in ruby 2.3.0, this
         | 
| 38 | 
            -
                    # behavior changed and the exception is actually thrown. Some comments at:
         | 
| 39 | 
            -
                    # https://bugs.ruby-lang.org/issues/7688
         | 
| 40 | 
            -
                    #
         | 
| 41 | 
            -
                    # So simply return nil here if any of the needed fields are not available,
         | 
| 42 | 
            -
                    # since attempting to access a missing field is one way to force an exception.
         | 
| 43 | 
            -
                    # This doesn't help if the  <=> use below throws an exception, but it
         | 
| 44 | 
            -
                    # handles the most typical cause.
         | 
| 45 | 
            -
                    return nil if !oth.respond_to?(:priority) ||
         | 
| 46 | 
            -
                                  !oth.respond_to?(:name)     ||
         | 
| 47 | 
            -
                                  !oth.respond_to?(:version)
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    our_key   = [ priority, name, version ]
         | 
| 50 | 
            -
                    their_key = [ oth.priority, oth.name, oth.version ]
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                    return our_key <=> their_key
         | 
| 53 | 
            -
                  end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                  def to_s
         | 
| 56 | 
            -
                    "#<#{self.class} #{name}@#{version}>"
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
                end
         | 
| 59 | 
            -
              end
         | 
| 60 | 
            -
            end
         | 
| @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            PROJECT_ROOT = File.join(File.dirname(__FILE__), '..')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            if ENV['COVERAGE']
         | 
| 4 | 
            -
              require 'simplecov'
         | 
| 5 | 
            -
              SimpleCov.start do
         | 
| 6 | 
            -
                add_filter "/spec/"
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
            end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            RSpec.configure do |config|
         | 
| 11 | 
            -
              config.treat_symbols_as_metadata_keys_with_true_values = true
         | 
| 12 | 
            -
              config.run_all_when_everything_filtered = true
         | 
| 13 | 
            -
              config.filter_run :focus
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              # Run specs in random order to surface order dependencies. If you find an
         | 
| 16 | 
            -
              # order dependency and want to debug it, you can fix the order by providing
         | 
| 17 | 
            -
              # the seed, which is printed after each run.
         | 
| 18 | 
            -
              #     --seed 1234
         | 
| 19 | 
            -
              config.order = 'random'
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              config.before do
         | 
| 22 | 
            -
                Semantic::Dependency.instance_variable_set(:@sources, nil)
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
            end
         |