puppet 4.4.1 → 4.4.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/lib/puppet/application/ca.rb +1 -0
- data/lib/puppet/application/lookup.rb +4 -16
- data/lib/puppet/application/resource.rb +0 -4
- data/lib/puppet/data_providers/hiera_interpolate.rb +8 -2
- data/lib/puppet/data_providers/json_data_provider_factory.rb +1 -1
- data/lib/puppet/defaults.rb +32 -16
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/file_system/windows.rb +1 -15
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/lookup.rb +0 -3
- data/lib/puppet/indirector/catalog/compiler.rb +2 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/network/auth_config_parser.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
- data/lib/puppet/network/http/rack/rest.rb +10 -1
- data/lib/puppet/parser/functions/lookup.rb +0 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +25 -1
- data/lib/puppet/pops/evaluator/closure.rb +10 -5
- data/lib/puppet/pops/merge_strategy.rb +0 -10
- data/lib/puppet/pops/types/recursion_guard.rb +10 -0
- data/lib/puppet/pops/types/type_asserter.rb +2 -2
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +14 -2
- data/lib/puppet/pops/types/type_mismatch_describer.rb +22 -10
- data/lib/puppet/pops/types/types.rb +240 -98
- data/lib/puppet/provider/package/puppet_gem.rb +0 -0
- data/lib/puppet/provider/user/user_role_add.rb +3 -1
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/oids.rb +24 -2
- data/lib/puppet/util/monkey_patches.rb +10 -5
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/file.rb +40 -10
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +5 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
- data/spec/integration/agent/logging_spec.rb +0 -0
- data/spec/integration/application/apply_spec.rb +0 -0
- data/spec/integration/application/doc_spec.rb +0 -0
- data/spec/integration/configurer_spec.rb +0 -0
- data/spec/integration/data_binding_spec.rb +0 -0
- data/spec/integration/defaults_spec.rb +0 -0
- data/spec/integration/faces/ca_spec.rb +0 -0
- data/spec/integration/faces/documentation_spec.rb +0 -0
- data/spec/integration/file_serving/fileset_spec.rb +0 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
- data/spec/integration/indirector/node/ldap_spec.rb +0 -0
- data/spec/integration/network/formats_spec.rb +0 -0
- data/spec/integration/node/environment_spec.rb +0 -0
- data/spec/integration/node/facts_spec.rb +0 -0
- data/spec/integration/node_spec.rb +0 -0
- data/spec/integration/parser/collection_spec.rb +0 -0
- data/spec/integration/parser/compiler_spec.rb +0 -0
- data/spec/integration/parser/functions/require_spec.rb +0 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +19 -1
- data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
- data/spec/integration/provider/mount_spec.rb +0 -0
- data/spec/integration/provider/package_spec.rb +0 -0
- data/spec/integration/provider/service/init_spec.rb +0 -0
- data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
- data/spec/integration/reference/providers_spec.rb +0 -0
- data/spec/integration/reports_spec.rb +0 -0
- data/spec/integration/resource/catalog_spec.rb +0 -0
- data/spec/integration/resource/type_collection_spec.rb +0 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -0
- data/spec/integration/ssl/certificate_request_spec.rb +0 -0
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -0
- data/spec/integration/ssl/host_spec.rb +0 -0
- data/spec/integration/transaction/report_spec.rb +0 -0
- data/spec/integration/transaction_spec.rb +0 -0
- data/spec/integration/type/exec_spec.rb +0 -0
- data/spec/integration/type/file_spec.rb +0 -0
- data/spec/integration/type/package_spec.rb +0 -0
- data/spec/integration/type/tidy_spec.rb +0 -0
- data/spec/integration/type_spec.rb +0 -0
- data/spec/integration/util/autoload_spec.rb +0 -0
- data/spec/integration/util/rdoc/parser_spec.rb +0 -0
- data/spec/integration/util/settings_spec.rb +26 -0
- data/spec/integration/util/windows/registry_spec.rb +0 -0
- data/spec/integration/util/windows/security_spec.rb +0 -0
- data/spec/integration/util/windows/user_spec.rb +0 -0
- data/spec/integration/util_spec.rb +0 -0
- data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
- data/spec/lib/puppet/face/basetest.rb +0 -0
- data/spec/lib/puppet/face/huzzah.rb +0 -0
- data/spec/lib/puppet_spec/files.rb +0 -0
- data/spec/lib/puppet_spec/fixtures.rb +0 -0
- data/spec/lib/puppet_spec/verbose.rb +0 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
- data/spec/shared_behaviours/file_server_terminus.rb +0 -0
- data/spec/shared_behaviours/file_serving.rb +0 -0
- data/spec/shared_behaviours/memory_terminus.rb +0 -0
- data/spec/shared_behaviours/path_parameters.rb +0 -0
- data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- data/spec/unit/agent/locker_spec.rb +0 -0
- data/spec/unit/agent_spec.rb +0 -0
- data/spec/unit/application/agent_spec.rb +0 -0
- data/spec/unit/application/apply_spec.rb +0 -0
- data/spec/unit/application/cert_spec.rb +0 -0
- data/spec/unit/application/certificate_spec.rb +0 -0
- data/spec/unit/application/config_spec.rb +0 -0
- data/spec/unit/application/describe_spec.rb +0 -0
- data/spec/unit/application/device_spec.rb +0 -0
- data/spec/unit/application/doc_spec.rb +0 -0
- data/spec/unit/application/face_base_spec.rb +0 -0
- data/spec/unit/application/facts_spec.rb +0 -0
- data/spec/unit/application/filebucket_spec.rb +0 -0
- data/spec/unit/application/indirection_base_spec.rb +0 -0
- data/spec/unit/application/inspect_spec.rb +0 -0
- data/spec/unit/application/lookup_spec.rb +1 -1
- data/spec/unit/application/master_spec.rb +0 -0
- data/spec/unit/application/resource_spec.rb +0 -0
- data/spec/unit/application_spec.rb +0 -0
- data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
- data/spec/unit/configurer/downloader_spec.rb +0 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -0
- data/spec/unit/configurer_spec.rb +0 -0
- data/spec/unit/confine/exists_spec.rb +0 -0
- data/spec/unit/confine/false_spec.rb +0 -0
- data/spec/unit/confine/feature_spec.rb +0 -0
- data/spec/unit/confine/true_spec.rb +0 -0
- data/spec/unit/confine/variable_spec.rb +0 -0
- data/spec/unit/confine_collection_spec.rb +0 -0
- data/spec/unit/confine_spec.rb +0 -0
- data/spec/unit/confiner_spec.rb +0 -0
- data/spec/unit/daemon_spec.rb +0 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -1
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +6 -0
- data/spec/unit/external/pson_spec.rb +0 -0
- data/spec/unit/face/catalog_spec.rb +0 -0
- data/spec/unit/face/certificate_spec.rb +0 -0
- data/spec/unit/face/config_spec.rb +0 -0
- data/spec/unit/face/facts_spec.rb +0 -0
- data/spec/unit/face/file_spec.rb +0 -0
- data/spec/unit/face/help_spec.rb +0 -0
- data/spec/unit/face/node_spec.rb +0 -0
- data/spec/unit/face/plugin_spec.rb +0 -0
- data/spec/unit/face_spec.rb +0 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -0
- data/spec/unit/file_bucket/file_spec.rb +0 -0
- data/spec/unit/file_serving/base_spec.rb +0 -0
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -0
- data/spec/unit/file_serving/configuration_spec.rb +0 -0
- data/spec/unit/file_serving/content_spec.rb +0 -0
- data/spec/unit/file_serving/fileset_spec.rb +0 -0
- data/spec/unit/file_serving/metadata_spec.rb +0 -0
- data/spec/unit/file_serving/mount/file_spec.rb +0 -0
- data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
- data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
- data/spec/unit/file_serving/mount_spec.rb +0 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -0
- data/spec/unit/file_system/uniquefile_spec.rb +20 -0
- data/spec/unit/file_system_spec.rb +61 -0
- data/spec/unit/functions/assert_type_spec.rb +8 -0
- data/spec/unit/functions/defined_spec.rb +0 -0
- data/spec/unit/functions/hiera_spec.rb +0 -0
- data/spec/unit/functions/lookup_spec.rb +3 -3
- data/spec/unit/functions/regsubst_spec.rb +0 -0
- data/spec/unit/functions/split_spec.rb +0 -0
- data/spec/unit/functions/versioncmp_spec.rb +0 -0
- data/spec/unit/graph/relationship_graph_spec.rb +0 -0
- data/spec/unit/graph/simple_graph_spec.rb +0 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +7 -0
- data/spec/unit/indirector/catalog/json_spec.rb +0 -0
- data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
- data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
- data/spec/unit/indirector/code_spec.rb +0 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
- data/spec/unit/indirector/envelope_spec.rb +0 -0
- data/spec/unit/indirector/exec_spec.rb +0 -0
- data/spec/unit/indirector/face_spec.rb +0 -0
- data/spec/unit/indirector/facts/facter_spec.rb +0 -0
- data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
- data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -0
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
- data/spec/unit/indirector/file_content/file_spec.rb +0 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_server_spec.rb +0 -0
- data/spec/unit/indirector/indirection_spec.rb +0 -0
- data/spec/unit/indirector/json_spec.rb +0 -0
- data/spec/unit/indirector/key/ca_spec.rb +0 -0
- data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/key/file_spec.rb +0 -0
- data/spec/unit/indirector/ldap_spec.rb +0 -0
- data/spec/unit/indirector/memory_spec.rb +0 -0
- data/spec/unit/indirector/msgpack_spec.rb +11 -1
- data/spec/unit/indirector/node/exec_spec.rb +0 -0
- data/spec/unit/indirector/node/ldap_spec.rb +0 -0
- data/spec/unit/indirector/node/memory_spec.rb +0 -0
- data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/node/plain_spec.rb +0 -0
- data/spec/unit/indirector/node/rest_spec.rb +0 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/node/yaml_spec.rb +0 -0
- data/spec/unit/indirector/plain_spec.rb +0 -0
- data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/report/processor_spec.rb +0 -0
- data/spec/unit/indirector/report/rest_spec.rb +0 -0
- data/spec/unit/indirector/report/yaml_spec.rb +0 -0
- data/spec/unit/indirector/request_spec.rb +0 -0
- data/spec/unit/indirector/resource/ral_spec.rb +0 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +0 -0
- data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
- data/spec/unit/indirector/rest_spec.rb +0 -0
- data/spec/unit/indirector/ssl_file_spec.rb +0 -0
- data/spec/unit/indirector/status/rest_spec.rb +0 -0
- data/spec/unit/indirector/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/terminus_spec.rb +0 -0
- data/spec/unit/indirector/yaml_spec.rb +0 -0
- data/spec/unit/indirector_spec.rb +0 -0
- data/spec/unit/interface/action_builder_spec.rb +0 -0
- data/spec/unit/interface/action_manager_spec.rb +0 -0
- data/spec/unit/interface/action_spec.rb +0 -0
- data/spec/unit/interface/documentation_spec.rb +0 -0
- data/spec/unit/interface/face_collection_spec.rb +0 -0
- data/spec/unit/interface/option_builder_spec.rb +0 -0
- data/spec/unit/interface/option_spec.rb +0 -0
- data/spec/unit/interface_spec.rb +0 -0
- data/spec/unit/man_spec.rb +0 -0
- data/spec/unit/module_spec.rb +30 -6
- data/spec/unit/module_tool/applications/builder_spec.rb +23 -3
- data/spec/unit/module_tool_spec.rb +0 -0
- data/spec/unit/network/auth_config_parser_spec.rb +16 -0
- data/spec/unit/network/authconfig_spec.rb +0 -0
- data/spec/unit/network/authstore_spec.rb +0 -0
- data/spec/unit/network/format_handler_spec.rb +0 -0
- data/spec/unit/network/format_spec.rb +0 -0
- data/spec/unit/network/formats_spec.rb +0 -0
- data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
- data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
- data/spec/unit/network/http/compression_spec.rb +0 -0
- data/spec/unit/network/http/connection_spec.rb +0 -0
- data/spec/unit/network/http/factory_spec.rb +0 -0
- data/spec/unit/network/http/handler_spec.rb +0 -0
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
- data/spec/unit/network/http/pool_spec.rb +0 -0
- data/spec/unit/network/http/rack/rest_spec.rb +7 -0
- data/spec/unit/network/http/rack_spec.rb +0 -0
- data/spec/unit/network/http/session_spec.rb +0 -0
- data/spec/unit/network/http/site_spec.rb +0 -0
- data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
- data/spec/unit/network/http/webrick_spec.rb +0 -0
- data/spec/unit/network/http_pool_spec.rb +0 -0
- data/spec/unit/network/http_spec.rb +0 -0
- data/spec/unit/network/resolver_spec.rb +0 -0
- data/spec/unit/network/rights_spec.rb +0 -0
- data/spec/unit/network/server_spec.rb +0 -0
- data/spec/unit/node/environment_spec.rb +0 -0
- data/spec/unit/node/facts_spec.rb +0 -0
- data/spec/unit/node_spec.rb +0 -0
- data/spec/unit/other/selinux_spec.rb +0 -0
- data/spec/unit/parameter/path_spec.rb +0 -0
- data/spec/unit/parameter/value_collection_spec.rb +0 -0
- data/spec/unit/parameter/value_spec.rb +0 -0
- data/spec/unit/parameter_spec.rb +0 -0
- data/spec/unit/parser/ast/leaf_spec.rb +0 -0
- data/spec/unit/parser/compiler_spec.rb +0 -0
- data/spec/unit/parser/files_spec.rb +0 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +0 -0
- data/spec/unit/parser/functions/defined_spec.rb +0 -0
- data/spec/unit/parser/functions/digest_spec.rb +0 -0
- data/spec/unit/parser/functions/fail_spec.rb +0 -0
- data/spec/unit/parser/functions/file_spec.rb +0 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -0
- data/spec/unit/parser/functions/generate_spec.rb +0 -0
- data/spec/unit/parser/functions/hiera_spec.rb +0 -0
- data/spec/unit/parser/functions/include_spec.rb +0 -0
- data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
- data/spec/unit/parser/functions/realize_spec.rb +0 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
- data/spec/unit/parser/functions/require_spec.rb +0 -0
- data/spec/unit/parser/functions/scanf_spec.rb +0 -0
- data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
- data/spec/unit/parser/functions/split_spec.rb +0 -0
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
- data/spec/unit/parser/functions/tag_spec.rb +0 -0
- data/spec/unit/parser/functions/template_spec.rb +0 -0
- data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
- data/spec/unit/parser/functions_spec.rb +0 -0
- data/spec/unit/parser/relationship_spec.rb +0 -0
- data/spec/unit/parser/resource/param_spec.rb +0 -0
- data/spec/unit/parser/resource_spec.rb +0 -0
- data/spec/unit/parser/scope_spec.rb +0 -0
- data/spec/unit/parser/templatewrapper_spec.rb +0 -0
- data/spec/unit/parser/type_loader_spec.rb +0 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +8 -8
- data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +32 -6
- data/spec/unit/pops/types/type_factory_spec.rb +26 -0
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -2
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +25 -0
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +215 -0
- data/spec/unit/property/ensure_spec.rb +0 -0
- data/spec/unit/property/keyvalue_spec.rb +0 -0
- data/spec/unit/property/list_spec.rb +0 -0
- data/spec/unit/property/ordered_list_spec.rb +0 -0
- data/spec/unit/property_spec.rb +0 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +0 -0
- data/spec/unit/provider/cisco_spec.rb +0 -0
- data/spec/unit/provider/command_spec.rb +0 -0
- data/spec/unit/provider/cron/crontab_spec.rb +0 -0
- data/spec/unit/provider/exec/posix_spec.rb +0 -0
- data/spec/unit/provider/exec/shell_spec.rb +0 -0
- data/spec/unit/provider/exec/windows_spec.rb +0 -0
- data/spec/unit/provider/exec_spec.rb +0 -0
- data/spec/unit/provider/file/posix_spec.rb +0 -0
- data/spec/unit/provider/file/windows_spec.rb +0 -0
- data/spec/unit/provider/group/groupadd_spec.rb +0 -0
- data/spec/unit/provider/group/ldap_spec.rb +0 -0
- data/spec/unit/provider/group/pw_spec.rb +0 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +0 -0
- data/spec/unit/provider/host/parsed_spec.rb +0 -0
- data/spec/unit/provider/interface/cisco_spec.rb +0 -0
- data/spec/unit/provider/ldap_spec.rb +0 -0
- data/spec/unit/provider/macauthorization_spec.rb +0 -0
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
- data/spec/unit/provider/mount/parsed_spec.rb +0 -0
- data/spec/unit/provider/mount_spec.rb +0 -0
- data/spec/unit/provider/naginator_spec.rb +0 -0
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -0
- data/spec/unit/provider/nameservice_spec.rb +0 -0
- data/spec/unit/provider/network_device_spec.rb +0 -0
- data/spec/unit/provider/package/aix_spec.rb +0 -0
- data/spec/unit/provider/package/appdmg_spec.rb +0 -0
- data/spec/unit/provider/package/apt_spec.rb +0 -0
- data/spec/unit/provider/package/aptitude_spec.rb +0 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +0 -0
- data/spec/unit/provider/package/dpkg_spec.rb +0 -0
- data/spec/unit/provider/package/freebsd_spec.rb +0 -0
- data/spec/unit/provider/package/gem_spec.rb +0 -0
- data/spec/unit/provider/package/hpux_spec.rb +0 -0
- data/spec/unit/provider/package/macports_spec.rb +0 -0
- data/spec/unit/provider/package/nim_spec.rb +0 -0
- data/spec/unit/provider/package/openbsd_spec.rb +0 -0
- data/spec/unit/provider/package/opkg_spec.rb +0 -0
- data/spec/unit/provider/package/pacman_spec.rb +0 -0
- data/spec/unit/provider/package/pip3_spec.rb +0 -0
- data/spec/unit/provider/package/pip_spec.rb +0 -0
- data/spec/unit/provider/package/pkg_spec.rb +0 -0
- data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -0
- data/spec/unit/provider/package/sun_spec.rb +0 -0
- data/spec/unit/provider/package/windows/package_spec.rb +0 -0
- data/spec/unit/provider/package/windows_spec.rb +0 -0
- data/spec/unit/provider/package/yum_spec.rb +0 -0
- data/spec/unit/provider/package/zypper_spec.rb +0 -0
- data/spec/unit/provider/parsedfile_spec.rb +0 -0
- data/spec/unit/provider/selboolean_spec.rb +0 -0
- data/spec/unit/provider/selmodule_spec.rb +0 -0
- data/spec/unit/provider/service/base_spec.rb +0 -0
- data/spec/unit/provider/service/bsd_spec.rb +0 -0
- data/spec/unit/provider/service/daemontools_spec.rb +0 -0
- data/spec/unit/provider/service/debian_spec.rb +0 -0
- data/spec/unit/provider/service/freebsd_spec.rb +0 -0
- data/spec/unit/provider/service/gentoo_spec.rb +0 -0
- data/spec/unit/provider/service/init_spec.rb +0 -0
- data/spec/unit/provider/service/launchd_spec.rb +0 -0
- data/spec/unit/provider/service/openbsd_spec.rb +0 -0
- data/spec/unit/provider/service/openrc_spec.rb +0 -0
- data/spec/unit/provider/service/openwrt_spec.rb +0 -0
- data/spec/unit/provider/service/rcng_spec.rb +0 -0
- data/spec/unit/provider/service/redhat_spec.rb +0 -0
- data/spec/unit/provider/service/runit_spec.rb +0 -0
- data/spec/unit/provider/service/smf_spec.rb +0 -0
- data/spec/unit/provider/service/src_spec.rb +0 -0
- data/spec/unit/provider/service/systemd_spec.rb +0 -0
- data/spec/unit/provider/service/upstart_spec.rb +0 -0
- data/spec/unit/provider/service/windows_spec.rb +0 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +0 -0
- data/spec/unit/provider/user/hpux_spec.rb +0 -0
- data/spec/unit/provider/user/ldap_spec.rb +0 -0
- data/spec/unit/provider/user/openbsd_spec.rb +0 -0
- data/spec/unit/provider/user/pw_spec.rb +0 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
- data/spec/unit/provider/user/useradd_spec.rb +0 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +0 -0
- data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
- data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
- data/spec/unit/provider/zone/solaris_spec.rb +0 -0
- data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
- data/spec/unit/provider_spec.rb +0 -0
- data/spec/unit/puppet_spec.rb +0 -0
- data/spec/unit/relationship_spec.rb +0 -0
- data/spec/unit/reports/http_spec.rb +0 -0
- data/spec/unit/reports/store_spec.rb +0 -0
- data/spec/unit/reports_spec.rb +0 -0
- data/spec/unit/resource/catalog_spec.rb +0 -0
- data/spec/unit/resource/status_spec.rb +0 -0
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
- data/spec/unit/resource/type_collection_spec.rb +0 -0
- data/spec/unit/resource/type_spec.rb +0 -0
- data/spec/unit/resource_spec.rb +0 -0
- data/spec/unit/settings/directory_setting_spec.rb +0 -0
- data/spec/unit/settings/duration_setting_spec.rb +0 -0
- data/spec/unit/settings/file_setting_spec.rb +0 -0
- data/spec/unit/settings/path_setting_spec.rb +0 -0
- data/spec/unit/settings/priority_setting_spec.rb +0 -0
- data/spec/unit/settings_spec.rb +1 -1
- data/spec/unit/ssl/base_spec.rb +0 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +0 -0
- data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
- data/spec/unit/ssl/certificate_request_spec.rb +0 -0
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -0
- data/spec/unit/ssl/certificate_spec.rb +0 -0
- data/spec/unit/ssl/configuration_spec.rb +0 -0
- data/spec/unit/ssl/host_spec.rb +0 -0
- data/spec/unit/ssl/inventory_spec.rb +0 -0
- data/spec/unit/ssl/key_spec.rb +0 -0
- data/spec/unit/status_spec.rb +0 -0
- data/spec/unit/transaction/event_manager_spec.rb +0 -0
- data/spec/unit/transaction/event_spec.rb +0 -0
- data/spec/unit/transaction/report_spec.rb +0 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -0
- data/spec/unit/transaction_spec.rb +0 -0
- data/spec/unit/type/augeas_spec.rb +0 -0
- data/spec/unit/type/component_spec.rb +0 -0
- data/spec/unit/type/computer_spec.rb +0 -0
- data/spec/unit/type/cron_spec.rb +0 -0
- data/spec/unit/type/exec_spec.rb +0 -0
- data/spec/unit/type/file/checksum_spec.rb +0 -0
- data/spec/unit/type/file/checksum_value_spec.rb +0 -0
- data/spec/unit/type/file/content_spec.rb +0 -0
- data/spec/unit/type/file/ctime_spec.rb +0 -0
- data/spec/unit/type/file/ensure_spec.rb +0 -0
- data/spec/unit/type/file/group_spec.rb +0 -0
- data/spec/unit/type/file/mode_spec.rb +0 -0
- data/spec/unit/type/file/mtime_spec.rb +0 -0
- data/spec/unit/type/file/owner_spec.rb +0 -0
- data/spec/unit/type/file/selinux_spec.rb +0 -0
- data/spec/unit/type/file/source_spec.rb +0 -0
- data/spec/unit/type/file/type_spec.rb +0 -0
- data/spec/unit/type/file_spec.rb +0 -0
- data/spec/unit/type/filebucket_spec.rb +0 -0
- data/spec/unit/type/group_spec.rb +0 -0
- data/spec/unit/type/host_spec.rb +0 -0
- data/spec/unit/type/interface_spec.rb +0 -0
- data/spec/unit/type/k5login_spec.rb +0 -0
- data/spec/unit/type/macauthorization_spec.rb +0 -0
- data/spec/unit/type/mailalias_spec.rb +0 -0
- data/spec/unit/type/maillist_spec.rb +0 -0
- data/spec/unit/type/mcx_spec.rb +0 -0
- data/spec/unit/type/mount_spec.rb +0 -0
- data/spec/unit/type/nagios_spec.rb +0 -0
- data/spec/unit/type/noop_metaparam_spec.rb +0 -0
- data/spec/unit/type/package/package_settings_spec.rb +0 -0
- data/spec/unit/type/package_spec.rb +0 -0
- data/spec/unit/type/resources_spec.rb +0 -0
- data/spec/unit/type/schedule_spec.rb +0 -0
- data/spec/unit/type/selboolean_spec.rb +0 -0
- data/spec/unit/type/selmodule_spec.rb +0 -0
- data/spec/unit/type/service_spec.rb +0 -0
- data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
- data/spec/unit/type/sshkey_spec.rb +0 -0
- data/spec/unit/type/stage_spec.rb +0 -0
- data/spec/unit/type/tidy_spec.rb +0 -0
- data/spec/unit/type/user_spec.rb +0 -0
- data/spec/unit/type/vlan_spec.rb +0 -0
- data/spec/unit/type/whit_spec.rb +0 -0
- data/spec/unit/type/yumrepo_spec.rb +0 -0
- data/spec/unit/type/zfs_spec.rb +0 -0
- data/spec/unit/type/zone_spec.rb +0 -0
- data/spec/unit/type/zpool_spec.rb +0 -0
- data/spec/unit/type_spec.rb +0 -0
- data/spec/unit/util/autoload_spec.rb +0 -0
- data/spec/unit/util/backups_spec.rb +0 -0
- data/spec/unit/util/checksums_spec.rb +0 -0
- data/spec/unit/util/colors_spec.rb +0 -0
- data/spec/unit/util/command_line_spec.rb +0 -0
- data/spec/unit/util/constant_inflector_spec.rb +0 -0
- data/spec/unit/util/diff_spec.rb +0 -0
- data/spec/unit/util/errors_spec.rb +0 -0
- data/spec/unit/util/execution_spec.rb +0 -0
- data/spec/unit/util/execution_stub_spec.rb +0 -0
- data/spec/unit/util/feature_spec.rb +0 -0
- data/spec/unit/util/filetype_spec.rb +0 -0
- data/spec/unit/util/ldap/connection_spec.rb +0 -0
- data/spec/unit/util/ldap/generator_spec.rb +0 -0
- data/spec/unit/util/ldap/manager_spec.rb +0 -0
- data/spec/unit/util/log/destinations_spec.rb +0 -0
- data/spec/unit/util/log_spec.rb +0 -0
- data/spec/unit/util/logging_spec.rb +0 -0
- data/spec/unit/util/metric_spec.rb +0 -0
- data/spec/unit/util/monkey_patches_spec.rb +19 -3
- data/spec/unit/util/nagios_maker_spec.rb +0 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +0 -0
- data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
- data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
- data/spec/unit/util/network_device/config_spec.rb +0 -0
- data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -0
- data/spec/unit/util/package_spec.rb +0 -0
- data/spec/unit/util/posix_spec.rb +0 -0
- data/spec/unit/util/rdoc_spec.rb +0 -0
- data/spec/unit/util/resource_template_spec.rb +0 -0
- data/spec/unit/util/retry_action_spec.rb +0 -0
- data/spec/unit/util/run_mode_spec.rb +0 -0
- data/spec/unit/util/selinux_spec.rb +0 -0
- data/spec/unit/util/storage_spec.rb +0 -0
- data/spec/unit/util/suidmanager_spec.rb +0 -0
- data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
- data/spec/unit/util/tagging_spec.rb +0 -0
- data/spec/unit/util/user_attr_spec.rb +0 -0
- data/spec/unit/util/warnings_spec.rb +0 -0
- data/spec/unit/util/windows/adsi_spec.rb +0 -0
- data/spec/unit/util/windows/file_spec.rb +34 -0
- data/spec/unit/util/windows/root_certs_spec.rb +0 -0
- data/spec/unit/util/windows/sid_spec.rb +0 -0
- data/spec/unit/util_spec.rb +0 -0
- data/spec/watchr.rb +0 -0
- metadata +3372 -3358
- checksums.yaml +0 -7
@@ -8,19 +8,19 @@ describe 'the type asserter' do
|
|
8
8
|
context 'when deferring formatting of subject'
|
9
9
|
it 'can use an array' do
|
10
10
|
expect{ asserter.assert_instance_of(['The %s in the %s', 'gizmo', 'gadget'], PIntegerType::DEFAULT, 'lens') }.to(
|
11
|
-
raise_error(TypeAssertionError, 'The gizmo in the gadget
|
11
|
+
raise_error(TypeAssertionError, 'The gizmo in the gadget had wrong type, expected an Integer value, got String'))
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'can use an array obtained from block' do
|
15
15
|
expect do
|
16
16
|
asserter.assert_instance_of('gizmo', PIntegerType::DEFAULT, 'lens') { |s| ['The %s in the %s', s, 'gadget'] }
|
17
|
-
end.to(raise_error(TypeAssertionError, 'The gizmo in the gadget
|
17
|
+
end.to(raise_error(TypeAssertionError, 'The gizmo in the gadget had wrong type, expected an Integer value, got String'))
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'can use an subject obtained from zero argument block' do
|
21
21
|
expect do
|
22
22
|
asserter.assert_instance_of(nil, PIntegerType::DEFAULT, 'lens') { 'The gizmo in the gadget' }
|
23
|
-
end.to(raise_error(TypeAssertionError, 'The gizmo in the gadget
|
23
|
+
end.to(raise_error(TypeAssertionError, 'The gizmo in the gadget had wrong type, expected an Integer value, got String'))
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'does not produce a string unless the assertion fails' do
|
@@ -833,6 +833,12 @@ describe 'The type calculator' do
|
|
833
833
|
tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
|
834
834
|
end
|
835
835
|
|
836
|
+
it 'A tuple with parameters is assignable to the default Tuple' do
|
837
|
+
t = Puppet::Pops::Types::PTupleType::DEFAULT
|
838
|
+
t2 = Puppet::Pops::Types::PTupleType.new([Puppet::Pops::Types::PStringType::DEFAULT])
|
839
|
+
expect(t2).to be_assignable_to(t)
|
840
|
+
end
|
841
|
+
|
836
842
|
it 'Tuple is not assignable to any disjunct type' do
|
837
843
|
tested_types = all_types - [
|
838
844
|
Puppet::Pops::Types::PAnyType,
|
@@ -894,6 +900,18 @@ describe 'The type calculator' do
|
|
894
900
|
t2 = struct_t({not_undef_t('other_member') => string_t})
|
895
901
|
expect(t2).not_to be_assignable_to(t1)
|
896
902
|
end
|
903
|
+
|
904
|
+
it 'A hash of string is not assignable to struct with integer value' do
|
905
|
+
t1 = struct_t({'foo' => integer_t, 'bar' => string_t})
|
906
|
+
t2 = hash_t(string_t, string_t, range_t(2, 2))
|
907
|
+
expect(t1.assignable?(t2)).to eql(false)
|
908
|
+
end
|
909
|
+
|
910
|
+
it 'A hash of with integer key is not assignable to struct with string key' do
|
911
|
+
t1 = struct_t({'foo' => string_t, 'bar' => string_t})
|
912
|
+
t2 = hash_t(integer_t, string_t, range_t(2, 2))
|
913
|
+
expect(t1.assignable?(t2)).to eql(false)
|
914
|
+
end
|
897
915
|
end
|
898
916
|
|
899
917
|
context 'for Callable, such that' do
|
@@ -906,6 +924,14 @@ describe 'The type calculator' do
|
|
906
924
|
Puppet::Pops::Types::PNotUndefType]
|
907
925
|
tested_types.each {|t2| expect(t).to_not be_assignable_to(t2::DEFAULT) }
|
908
926
|
end
|
927
|
+
|
928
|
+
it 'a callable with parameter is assignable to the default callable' do
|
929
|
+
expect(callable_t(string_t)).to be_assignable_to(Puppet::Pops::Types::PCallableType::DEFAULT)
|
930
|
+
end
|
931
|
+
|
932
|
+
it 'the default callable is not assignable to a callable with parameter' do
|
933
|
+
expect(Puppet::Pops::Types::PCallableType::DEFAULT).not_to be_assignable_to(callable_t(string_t))
|
934
|
+
end
|
909
935
|
end
|
910
936
|
|
911
937
|
it 'should recognize mapped ruby types' do
|
@@ -1091,11 +1117,11 @@ describe 'The type calculator' do
|
|
1091
1117
|
end
|
1092
1118
|
|
1093
1119
|
it 'accepts an empty tuple as assignable to a tuple with a min size of 0' do
|
1094
|
-
tuple1 = constrained_tuple_t(range_t(0, :default)
|
1095
|
-
tuple2 = tuple_t
|
1120
|
+
tuple1 = constrained_tuple_t(range_t(0, :default))
|
1121
|
+
tuple2 = tuple_t()
|
1096
1122
|
|
1097
1123
|
expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
|
1098
|
-
expect(calculator.assignable?(tuple2, tuple1)).to eq(
|
1124
|
+
expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
|
1099
1125
|
end
|
1100
1126
|
|
1101
1127
|
it 'should accept matching tuples' do
|
@@ -1157,7 +1183,7 @@ describe 'The type calculator' do
|
|
1157
1183
|
|
1158
1184
|
it 'should accept empty array when tuple allows min of 0' do
|
1159
1185
|
tuple1 = constrained_tuple_t(range_t(0, 1), Integer)
|
1160
|
-
array = array_t(
|
1186
|
+
array = array_t(unit_t, range_t(0, 0))
|
1161
1187
|
expect(calculator.assignable?(tuple1, array)).to eq(true)
|
1162
1188
|
expect(calculator.assignable?(array, tuple1)).to eq(false)
|
1163
1189
|
end
|
@@ -1210,9 +1236,9 @@ describe 'The type calculator' do
|
|
1210
1236
|
expect(calculator.assignable?(hsh, struct1)).to eq(true)
|
1211
1237
|
end
|
1212
1238
|
|
1213
|
-
it 'should accept empty hash with key_type
|
1239
|
+
it 'should accept empty hash with key_type unit' do
|
1214
1240
|
struct1 = struct_t({'a'=>optional_t(Integer)})
|
1215
|
-
hsh = hash_t(
|
1241
|
+
hsh = hash_t(unit_t, unit_t, range_t(0, 0))
|
1216
1242
|
expect(calculator.assignable?(struct1, hsh)).to eq(true)
|
1217
1243
|
end
|
1218
1244
|
end
|
@@ -175,6 +175,32 @@ describe 'The type factory' do
|
|
175
175
|
expect(t.size_type.to).to eq(2)
|
176
176
|
end
|
177
177
|
|
178
|
+
it 'it is illegal to create a typed empty array' do
|
179
|
+
expect {
|
180
|
+
Puppet::Pops::Types::TypeFactory.array_of(Puppet::Pops::Types::TypeFactory.data, Puppet::Pops::Types::TypeFactory.range(0,0))
|
181
|
+
}.to raise_error(/An empty collection may not specify an element type/)
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'it is legal to create an empty array of unit element type' do
|
185
|
+
t = Puppet::Pops::Types::TypeFactory.array_of(Puppet::Pops::Types::PUnitType::DEFAULT, Puppet::Pops::Types::TypeFactory.range(0,0))
|
186
|
+
expect(t.size_type.class).to eq(Puppet::Pops::Types::PIntegerType)
|
187
|
+
expect(t.size_type.from).to eq(0)
|
188
|
+
expect(t.size_type.to).to eq(0)
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'it is illegal to create a typed empty hash' do
|
192
|
+
expect {
|
193
|
+
Puppet::Pops::Types::TypeFactory.hash_of(Puppet::Pops::Types::TypeFactory.scalar, Puppet::Pops::Types::TypeFactory.data, Puppet::Pops::Types::TypeFactory.range(0,0))
|
194
|
+
}.to raise_error(/An empty collection may not specify an element type/)
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'it is legal to create an empty hash where key and value types are of Unit type' do
|
198
|
+
t = Puppet::Pops::Types::TypeFactory.hash_of(Puppet::Pops::Types::PUnitType::DEFAULT, Puppet::Pops::Types::PUnitType::DEFAULT, Puppet::Pops::Types::TypeFactory.range(0,0))
|
199
|
+
expect(t.size_type.class).to eq(Puppet::Pops::Types::PIntegerType)
|
200
|
+
expect(t.size_type.from).to eq(0)
|
201
|
+
expect(t.size_type.to).to eq(0)
|
202
|
+
end
|
203
|
+
|
178
204
|
context 'callable types' do
|
179
205
|
it 'the callable methods produces a Callable' do
|
180
206
|
t = Puppet::Pops::Types::TypeFactory.callable()
|
@@ -76,9 +76,14 @@ describe 'The type formatter' do
|
|
76
76
|
expect(s.string(f.array_of_data)).to eq('Array')
|
77
77
|
end
|
78
78
|
|
79
|
-
it "should yield 'Array[
|
79
|
+
it "should yield 'Array[0, 0]' for an empty array" do
|
80
80
|
t = f.array_of(PUnitType::DEFAULT, f.range(0,0))
|
81
|
-
expect(s.string(t)).to eq('Array[
|
81
|
+
expect(s.string(t)).to eq('Array[0, 0]')
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should yield 'Hash[0, 0]' for an empty hash" do
|
85
|
+
t = f.hash_of(PUnitType::DEFAULT, PUnitType::DEFAULT, f.range(0,0))
|
86
|
+
expect(s.string(t)).to eq('Hash[0, 0]')
|
82
87
|
end
|
83
88
|
|
84
89
|
it "should yield 'Collection' and from/to for PCollectionType" do
|
@@ -92,6 +92,31 @@ describe 'the type mismatch describer' do
|
|
92
92
|
/parameter 'evars' expects a match for EVariants = Enum\['a', 'b', 'c', 'd'\], got 'n'/))
|
93
93
|
end
|
94
94
|
|
95
|
+
context 'when reporting a mismatch between' do
|
96
|
+
let(:parser) { TypeParser.new }
|
97
|
+
let(:subject) { TypeMismatchDescriber.singleton }
|
98
|
+
|
99
|
+
context 'hash and struct' do
|
100
|
+
it 'reports a size mismatch when hash has unlimited size' do
|
101
|
+
expected = parser.parse('Struct[{a=>Integer,b=>Integer}]')
|
102
|
+
actual = parser.parse('Hash[String,Integer]')
|
103
|
+
expect(subject.describe_mismatch('', expected, actual)).to eq('expected size to be 2, got unlimited')
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'reports a size mismatch when hash has specified but incorrect size' do
|
107
|
+
expected = parser.parse('Struct[{a=>Integer,b=>Integer}]')
|
108
|
+
actual = parser.parse('Hash[String,Integer,1,1]')
|
109
|
+
expect(subject.describe_mismatch('', expected, actual)).to eq('expected size to be 2, got 1')
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'reports a full type mismatch when size is correct but hash value type is incorrect' do
|
113
|
+
expected = parser.parse('Struct[{a=>Integer,b=>String}]')
|
114
|
+
actual = parser.parse('Hash[String,Integer,2,2]')
|
115
|
+
expect(subject.describe_mismatch('', expected, actual)).to eq("expected a Struct[{'a' => Integer, 'b' => String}] value, got Hash[String, Integer]")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
95
120
|
context 'when using present tense' do
|
96
121
|
let(:parser) { TypeParser.new }
|
97
122
|
let(:subject) { TypeMismatchDescriber.singleton }
|
@@ -243,7 +243,7 @@ describe Puppet::Pops::Types::TypeParser do
|
|
243
243
|
|
244
244
|
it 'parses a parameterized callable type with 0 min/max' do
|
245
245
|
t = parser.parse("Callable[0,0]")
|
246
|
-
expect(t).to be_the_type(types.callable())
|
246
|
+
expect(t).to be_the_type(types.callable(0,0))
|
247
247
|
expect(t.param_types.types).to be_empty
|
248
248
|
end
|
249
249
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/pops'
|
3
|
+
require 'puppet_spec/compiler'
|
3
4
|
|
4
5
|
module Puppet::Pops
|
5
6
|
module Types
|
@@ -150,6 +151,92 @@ describe 'Puppet Type System' do
|
|
150
151
|
end
|
151
152
|
end
|
152
153
|
|
154
|
+
context 'Iterable type' do
|
155
|
+
include PuppetSpec::Compiler
|
156
|
+
|
157
|
+
it 'can be parameterized with element type' do
|
158
|
+
code = <<-CODE
|
159
|
+
function foo(Iterable[String] $x) {
|
160
|
+
$x.each |$e| {
|
161
|
+
notice $e
|
162
|
+
}
|
163
|
+
}
|
164
|
+
foo([bar, baz, cake])
|
165
|
+
CODE
|
166
|
+
expect(eval_and_collect_notices(code)).to eq(['bar', 'baz', 'cake'])
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
context 'Iterator type' do
|
171
|
+
include PuppetSpec::Compiler
|
172
|
+
|
173
|
+
let!(:iterint) { tf.iterator(tf.integer) }
|
174
|
+
|
175
|
+
context 'when testing instance?' do
|
176
|
+
it 'will consider an iterable on an integer is an instance of Iterator[Integer]' do
|
177
|
+
expect(iterint.instance?(Iterable.on(3))).to be_truthy
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'will consider an iterable on string to be an instance of Iterator[Integer]' do
|
181
|
+
expect(iterint.instance?(Iterable.on('string'))).to be_falsey
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context 'when testing assignable?' do
|
186
|
+
it 'will consider an iterator with an assignable type as assignable' do
|
187
|
+
expect(tf.iterator(tf.numeric).assignable?(iterint)).to be_truthy
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'will not consider an iterator with a non assignable type as assignable' do
|
191
|
+
expect(tf.iterator(tf.string).assignable?(iterint)).to be_falsey
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'when asked for an iterable type' do
|
196
|
+
it 'the default iterator type returns the default iterable type' do
|
197
|
+
expect(PIteratorType::DEFAULT.iterable_type).to be(PIterableType::DEFAULT)
|
198
|
+
end
|
199
|
+
|
200
|
+
it 'a typed iterator type returns the an equally typed iterable type' do
|
201
|
+
expect(iterint.iterable_type).to eq(tf.iterable(tf.integer))
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'can be parameterized with an element type' do
|
206
|
+
code = <<-CODE
|
207
|
+
function foo(Iterator[String] $x) {
|
208
|
+
$x.each |$e| {
|
209
|
+
notice $e
|
210
|
+
}
|
211
|
+
}
|
212
|
+
foo([bar, baz, cake].reverse_each)
|
213
|
+
CODE
|
214
|
+
expect(eval_and_collect_notices(code)).to eq(['cake', 'baz', 'bar'])
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'Collection type' do
|
219
|
+
include PuppetSpec::Compiler
|
220
|
+
|
221
|
+
it 'can be parameterized with a range' do
|
222
|
+
code = <<-CODE
|
223
|
+
notice(Collection[5, default] == Collection[5])
|
224
|
+
notice(Collection[5, 5] > Tuple[Integer, 0, 10])
|
225
|
+
CODE
|
226
|
+
expect(eval_and_collect_notices(code)).to eq(['true', 'false'])
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
context 'Struct type' do
|
231
|
+
context 'can be used as key in hash' do
|
232
|
+
it 'compacts optional in optional in optional to just optional' do
|
233
|
+
key1 = tf.struct({'foo' => tf.string})
|
234
|
+
key2 = tf.struct({'foo' => tf.string})
|
235
|
+
expect({key1 => 'hi'}[key2]).to eq('hi')
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
153
240
|
context 'Optional type' do
|
154
241
|
let!(:overlapping_ints) { tf.variant(tf.range(10, 20), tf.range(18, 28)) }
|
155
242
|
let!(:optoptopt) { tf.optional(tf.optional(tf.optional(overlapping_ints))) }
|
@@ -169,6 +256,7 @@ describe 'Puppet Type System' do
|
|
169
256
|
context 'NotUndef type' do
|
170
257
|
let!(:nununu) { tf.not_undef(tf.not_undef(tf.not_undef(tf.any))) }
|
171
258
|
let!(:nuopt) { tf.not_undef(tf.optional(tf.any)) }
|
259
|
+
let!(:nuoptint) { tf.not_undef(tf.optional(tf.integer)) }
|
172
260
|
|
173
261
|
context 'when normalizing' do
|
174
262
|
it 'compacts NotUndef in NotUndef in NotUndef to just NotUndef' do
|
@@ -178,6 +266,10 @@ describe 'Puppet Type System' do
|
|
178
266
|
it 'compacts Optional in NotUndef to just NotUndef' do
|
179
267
|
expect(nuopt.normalize).to eq(tf.not_undef(tf.any))
|
180
268
|
end
|
269
|
+
|
270
|
+
it 'compacts NotUndef[Optional[Integer]] in NotUndef to just Integer' do
|
271
|
+
expect(nuoptint.normalize).to eq(tf.integer)
|
272
|
+
end
|
181
273
|
end
|
182
274
|
end
|
183
275
|
|
@@ -235,6 +327,129 @@ describe 'Puppet Type System' do
|
|
235
327
|
)
|
236
328
|
end
|
237
329
|
end
|
330
|
+
|
331
|
+
context 'when generalizing' do
|
332
|
+
it 'will generalize and compact contained types' do
|
333
|
+
expect(tf.variant(tf.string(tf.range(3,3)), tf.string(tf.range(5,5))).generalize).to eq(tf.variant(tf.string))
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
context 'Type aliases' do
|
339
|
+
include PuppetSpec::Compiler
|
340
|
+
|
341
|
+
it 'will resolve nested objects using self recursion' do
|
342
|
+
code = <<-CODE
|
343
|
+
type Tree = Hash[String,Variant[String,Tree]]
|
344
|
+
notice({a => {b => {c => d}}} =~ Tree)
|
345
|
+
CODE
|
346
|
+
expect(eval_and_collect_notices(code)).to eq(['true'])
|
347
|
+
end
|
348
|
+
|
349
|
+
it 'will find mismatches using self recursion' do
|
350
|
+
code = <<-CODE
|
351
|
+
type Tree = Hash[String,Variant[String,Tree]]
|
352
|
+
notice({a => {b => {c => 1}}} =~ Tree)
|
353
|
+
CODE
|
354
|
+
expect(eval_and_collect_notices(code)).to eq(['false'])
|
355
|
+
end
|
356
|
+
|
357
|
+
it 'will not allow an alias chain to only contain aliases' do
|
358
|
+
code = <<-CODE
|
359
|
+
type Foo = Bar
|
360
|
+
type Fee = Foo
|
361
|
+
type Bar = Fee
|
362
|
+
notice(0 =~ Bar)
|
363
|
+
CODE
|
364
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias 'Foo' cannot be resolved to a real type/)
|
365
|
+
end
|
366
|
+
|
367
|
+
it 'will not allow an alias chain that contains nothing but aliases and variants' do
|
368
|
+
code = <<-CODE
|
369
|
+
type Foo = Bar
|
370
|
+
type Fee = Foo
|
371
|
+
type Bar = Variant[Fee,Foo]
|
372
|
+
notice(0 =~ Bar)
|
373
|
+
CODE
|
374
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias 'Foo' cannot be resolved to a real type/)
|
375
|
+
end
|
376
|
+
|
377
|
+
it 'will not allow an alias to directly reference itself' do
|
378
|
+
code = <<-CODE
|
379
|
+
type Foo = Foo
|
380
|
+
notice(0 =~ Foo)
|
381
|
+
CODE
|
382
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias 'Foo' cannot be resolved to a real type/)
|
383
|
+
end
|
384
|
+
|
385
|
+
it 'will allow an alias to directly reference itself in a variant with other types' do
|
386
|
+
code = <<-CODE
|
387
|
+
type Foo = Variant[Foo,String]
|
388
|
+
notice(a =~ Foo)
|
389
|
+
CODE
|
390
|
+
expect(eval_and_collect_notices(code)).to eq(['true'])
|
391
|
+
end
|
392
|
+
|
393
|
+
it 'will allow an alias where a variant references an alias with a variant that references itself' do
|
394
|
+
code = <<-CODE
|
395
|
+
type X = Variant[Y, Integer]
|
396
|
+
type Y = Variant[X, String]
|
397
|
+
|
398
|
+
notice(X >= X)
|
399
|
+
notice(X >= Y)
|
400
|
+
notice(Y >= X)
|
401
|
+
CODE
|
402
|
+
expect(eval_and_collect_notices(code)).to eq(['true','true','true'])
|
403
|
+
end
|
404
|
+
|
405
|
+
it 'will detect a mismatch in an alias that directly references itself in a variant with other types' do
|
406
|
+
code = <<-CODE
|
407
|
+
type Foo = Variant[Foo,String]
|
408
|
+
notice(3 =~ Foo)
|
409
|
+
CODE
|
410
|
+
expect(eval_and_collect_notices(code)).to eq(['false'])
|
411
|
+
end
|
412
|
+
|
413
|
+
it 'will normalize a Variant containing a self reference so that the self reference is removed' do
|
414
|
+
code = <<-CODE
|
415
|
+
type Foo = Variant[Foo,String,Integer]
|
416
|
+
assert_type(Foo, /x/)
|
417
|
+
CODE
|
418
|
+
expect { eval_and_collect_notices(code) }.to raise_error(/expected a value of type String or Integer, got Regexp/)
|
419
|
+
end
|
420
|
+
|
421
|
+
it 'will handle a scalar correctly in combinations of nested aliased variants' do
|
422
|
+
code = <<-CODE
|
423
|
+
type Bar = Variant[Foo,Integer]
|
424
|
+
type Foo = Variant[Bar,String]
|
425
|
+
notice(a =~ Foo)
|
426
|
+
notice(1 =~ Foo)
|
427
|
+
notice(/x/ =~ Foo)
|
428
|
+
CODE
|
429
|
+
expect(eval_and_collect_notices(code)).to eq(['true', 'true', 'false'])
|
430
|
+
end
|
431
|
+
|
432
|
+
it 'will handle a non scalar correctly in combinations of nested aliased array with nested variants' do
|
433
|
+
code = <<-CODE
|
434
|
+
type Bar = Variant[Foo,Integer]
|
435
|
+
type Foo = Array[Variant[Bar,String]]
|
436
|
+
notice([a] =~ Foo)
|
437
|
+
notice([1] =~ Foo)
|
438
|
+
notice([/x/] =~ Foo)
|
439
|
+
CODE
|
440
|
+
expect(eval_and_collect_notices(code)).to eq(['true', 'true', 'false'])
|
441
|
+
end
|
442
|
+
|
443
|
+
it 'will handle a non scalar correctly in combinations of nested aliased variants with array' do
|
444
|
+
code = <<-CODE
|
445
|
+
type Bar = Variant[Foo,Array[Integer]]
|
446
|
+
type Foo = Variant[Bar,Array[String]]
|
447
|
+
notice([a] =~ Foo)
|
448
|
+
notice([1] =~ Foo)
|
449
|
+
notice([/x/] =~ Foo)
|
450
|
+
CODE
|
451
|
+
expect(eval_and_collect_notices(code)).to eq(['true', 'true', 'false'])
|
452
|
+
end
|
238
453
|
end
|
239
454
|
end
|
240
455
|
end
|
File without changes
|
File without changes
|
File without changes
|