puppet 5.4.0-x64-mingw32 → 5.5.0-x64-mingw32
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/Gemfile +3 -3
- data/MAINTAINERS +0 -19
- data/README.md +5 -5
- data/Rakefile +26 -0
- data/conf/auth.conf +5 -0
- data/ext/project_data.yaml +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +3 -1
- data/lib/puppet/application/device.rb +100 -13
- data/lib/puppet/application/facts.rb +5 -0
- data/lib/puppet/application/lookup.rb +12 -2
- data/lib/puppet/configurer.rb +37 -17
- data/lib/puppet/confine.rb +4 -1
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +6 -3
- data/lib/puppet/external/dot.rb +0 -7
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face/config.rb +92 -10
- data/lib/puppet/face/epp.rb +31 -6
- data/lib/puppet/face/facts.rb +49 -0
- data/lib/puppet/face/help.rb +33 -35
- data/lib/puppet/face/help/action.erb +1 -1
- data/lib/puppet/face/help/face.erb +1 -1
- data/lib/puppet/face/man.rb +55 -12
- data/lib/puppet/face/parser.rb +30 -3
- data/lib/puppet/file_bucket/file.rb +0 -2
- data/lib/puppet/file_serving/base.rb +10 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/functions.rb +1 -3
- data/lib/puppet/functions/alert.rb +1 -1
- data/lib/puppet/functions/all.rb +6 -6
- data/lib/puppet/functions/annotate.rb +10 -10
- data/lib/puppet/functions/any.rb +6 -6
- data/lib/puppet/functions/assert_type.rb +4 -4
- data/lib/puppet/functions/binary_file.rb +14 -2
- data/lib/puppet/functions/break.rb +31 -2
- data/lib/puppet/functions/call.rb +4 -4
- data/lib/puppet/functions/contain.rb +19 -3
- data/lib/puppet/functions/convert_to.rb +6 -5
- data/lib/puppet/functions/crit.rb +1 -1
- data/lib/puppet/functions/debug.rb +1 -1
- data/lib/puppet/functions/defined.rb +11 -9
- data/lib/puppet/functions/dig.rb +26 -2
- data/lib/puppet/functions/each.rb +8 -8
- data/lib/puppet/functions/emerg.rb +1 -1
- data/lib/puppet/functions/empty.rb +79 -0
- data/lib/puppet/functions/err.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
- data/lib/puppet/functions/filter.rb +7 -7
- data/lib/puppet/functions/find_file.rb +15 -1
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/hiera.rb +6 -6
- data/lib/puppet/functions/hiera_array.rb +6 -6
- data/lib/puppet/functions/hiera_hash.rb +6 -6
- data/lib/puppet/functions/hiera_include.rb +8 -8
- data/lib/puppet/functions/include.rb +28 -2
- data/lib/puppet/functions/info.rb +1 -1
- data/lib/puppet/functions/inline_epp.rb +2 -2
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +2 -2
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +39 -1
- data/lib/puppet/functions/lookup.rb +2 -1
- data/lib/puppet/functions/map.rb +10 -9
- data/lib/puppet/functions/match.rb +6 -6
- data/lib/puppet/functions/new.rb +995 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/notice.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/regsubst.rb +9 -3
- data/lib/puppet/functions/require.rb +36 -2
- data/lib/puppet/functions/return.rb +1 -1
- data/lib/puppet/functions/reverse_each.rb +71 -2
- data/lib/puppet/functions/slice.rb +23 -9
- data/lib/puppet/functions/split.rb +12 -10
- data/lib/puppet/functions/step.rb +73 -1
- data/lib/puppet/functions/strftime.rb +176 -2
- data/lib/puppet/functions/then.rb +65 -2
- data/lib/puppet/functions/tree_each.rb +19 -19
- data/lib/puppet/functions/type.rb +42 -1
- data/lib/puppet/functions/unique.rb +13 -13
- data/lib/puppet/functions/unwrap.rb +8 -4
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/functions/warning.rb +1 -1
- data/lib/puppet/functions/with.rb +6 -4
- data/lib/puppet/functions/yaml_data.rb +3 -1
- data/lib/puppet/indirector/certificate_status/file.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +1 -3
- data/lib/puppet/indirector/facts/rest.rb +21 -0
- data/lib/puppet/indirector/facts/yaml.rb +0 -4
- data/lib/puppet/indirector/rest.rb +2 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module/task.rb +2 -3
- data/lib/puppet/module_tool/applications/application.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/network/authconfig.rb +1 -1
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +5 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
- data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/error.rb +3 -3
- data/lib/puppet/network/resolver.rb +1 -2
- data/lib/puppet/parser/compiler.rb +12 -5
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
- data/lib/puppet/parser/functions/new.rb +31 -46
- data/lib/puppet/parser/parser_factory.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +11 -11
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/issue_reporter.rb +18 -1
- data/lib/puppet/pops/issues.rb +6 -3
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
- data/lib/puppet/pops/loaders.rb +18 -7
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
- data/lib/puppet/pops/model/factory.rb +6 -3
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/model/pn_transformer.rb +400 -0
- data/lib/puppet/pops/parser/egrammar.ra +1 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer_support.rb +3 -2
- data/lib/puppet/pops/parser/locator.rb +0 -2
- data/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/lib/puppet/pops/pcore.rb +17 -17
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/serialization/json.rb +7 -7
- data/lib/puppet/pops/types/class_loader.rb +6 -3
- data/lib/puppet/pops/types/implementation_registry.rb +28 -35
- data/lib/puppet/pops/types/p_object_type.rb +3 -3
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
- data/lib/puppet/pops/types/ruby_generator.rb +3 -4
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_factory.rb +0 -4
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +14 -7
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +3 -1
- data/lib/puppet/provider/group/windows_adsi.rb +4 -7
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/package/pacman.rb +4 -4
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgutil.rb +2 -2
- data/lib/puppet/provider/package/portage.rb +9 -9
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +6 -2
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/type.rb +11 -11
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +5 -5
- data/lib/puppet/resource/catalog.rb +6 -3
- data/lib/puppet/resource/status.rb +9 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings.rb +31 -19
- data/lib/puppet/settings/base_setting.rb +5 -0
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +5 -0
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +0 -2
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +18 -12
- data/lib/puppet/type.rb +9 -13
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +11 -6
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file.rb +4 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/k5login.rb +30 -54
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +12 -12
- data/lib/puppet/type/scheduled_task.rb +2 -2
- data/lib/puppet/type/ssh_authorized_key.rb +5 -5
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +26 -5
- data/lib/puppet/util.rb +0 -4
- data/lib/puppet/util/backups.rb +1 -1
- data/lib/puppet/util/inifile.rb +3 -4
- data/lib/puppet/util/json.rb +68 -0
- data/lib/puppet/util/json_lockfile.rb +3 -3
- data/lib/puppet/util/log.rb +2 -5
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -8
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +0 -2
- data/lib/puppet/util/windows/adsi.rb +15 -18
- data/lib/puppet/util/windows/com.rb +2 -1
- data/lib/puppet/util/windows/file.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +7 -6
- data/lib/puppet/util/windows/sid.rb +60 -7
- data/lib/puppet/util/windows/taskscheduler.rb +0 -9
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +53 -48
- data/locales/ja/puppet.po +1357 -912
- data/locales/puppet.pot +549 -466
- data/man/man5/puppet.conf.5 +103 -20
- data/man/man8/puppet-agent.8 +6 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +35 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +33 -11
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +34 -12
- data/man/man8/puppet-facts.8 +50 -1
- data/man/man8/puppet-filebucket.8 +38 -11
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +10 -4
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +15 -6
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +31 -8
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +67 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +3 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
- data/spec/integration/application/apply_spec.rb +15 -15
- data/spec/integration/application/lookup_spec.rb +21 -0
- data/spec/integration/faces/config_spec.rb +16 -4
- data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +17 -18
- data/spec/integration/parser/pcore_resource_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +2 -2
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/key_spec.rb +1 -1
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +0 -1
- data/spec/integration/type/file_spec.rb +10 -11
- data/spec/integration/type_spec.rb +1 -2
- data/spec/integration/util/windows/adsi_spec.rb +86 -1
- data/spec/integration/util/windows/principal_spec.rb +11 -2
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/lib/matchers/json.rb +4 -4
- data/spec/lib/puppet_spec/language.rb +34 -35
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/shared_behaviours/file_server_terminus.rb +0 -2
- data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/application/cert_spec.rb +21 -9
- data/spec/unit/application/device_spec.rb +96 -2
- data/spec/unit/application/face_base_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +0 -1
- data/spec/unit/configurer_spec.rb +14 -0
- data/spec/unit/confine_spec.rb +16 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
- data/spec/unit/datatypes_spec.rb +49 -0
- data/spec/unit/environments_spec.rb +7 -0
- data/spec/unit/face/config_spec.rb +116 -12
- data/spec/unit/face/epp_face_spec.rb +53 -2
- data/spec/unit/face/facts_spec.rb +53 -0
- data/spec/unit/face/help_spec.rb +62 -69
- data/spec/unit/face/man_spec.rb +26 -0
- data/spec/unit/face/module/list_spec.rb +0 -1
- data/spec/unit/face/parser_spec.rb +78 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -4
- data/spec/unit/file_serving/content_spec.rb +0 -1
- data/spec/unit/file_serving/fileset_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +0 -1
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
- data/spec/unit/forge_spec.rb +1 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +77 -0
- data/spec/unit/functions/epp_spec.rb +1 -1
- data/spec/unit/functions/flatten_spec.rb +31 -0
- data/spec/unit/functions/include_spec.rb +2 -2
- data/spec/unit/functions/inline_epp_spec.rb +1 -1
- data/spec/unit/functions/join_spec.rb +33 -0
- data/spec/unit/functions/keys_spec.rb +31 -0
- data/spec/unit/functions/length_spec.rb +50 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
- data/spec/unit/functions/lookup_spec.rb +52 -0
- data/spec/unit/functions/shared.rb +1 -1
- data/spec/unit/functions/values_spec.rb +30 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +30 -32
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
- data/spec/unit/indirector/facts/rest_spec.rb +45 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +2 -2
- data/spec/unit/indirector/request_spec.rb +0 -2
- data/spec/unit/indirector/rest_spec.rb +2 -2
- data/spec/unit/indirector_spec.rb +0 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +1 -1
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/module_spec.rb +0 -5
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
- data/spec/unit/network/formats_spec.rb +5 -13
- data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/handler_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/node_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/environment_compiler_spec.rb +8 -8
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/fail_spec.rb +1 -1
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
- data/spec/unit/parser/functions/realize_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +0 -1
- data/spec/unit/parser/scope_spec.rb +3 -3
- data/spec/unit/parser/type_loader_spec.rb +1 -1
- data/spec/unit/pops/adaptable_spec.rb +0 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
- data/spec/unit/pops/factory_rspec_helper.rb +1 -1
- data/spec/unit/pops/factory_spec.rb +5 -5
- data/spec/unit/pops/issues_spec.rb +23 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
- data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
- data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
- data/spec/unit/pops/pn_spec.rb +148 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
- data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
- data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
- data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
- data/spec/unit/pops/types/string_converter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +3 -1
- data/spec/unit/property_spec.rb +2 -2
- data/spec/unit/provider/aixobject_spec.rb +1 -1
- data/spec/unit/provider/cron/crontab_spec.rb +3 -3
- data/spec/unit/provider/exec/posix_spec.rb +6 -6
- data/spec/unit/provider/group/groupadd_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
- data/spec/unit/provider/ldap_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +3 -4
- data/spec/unit/provider/package/yum_spec.rb +6 -2
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/init_spec.rb +2 -2
- data/spec/unit/provider/service/openrc_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_spec.rb +7 -7
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +15 -9
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/resource/catalog_spec.rb +8 -3
- data/spec/unit/resource/status_spec.rb +15 -4
- data/spec/unit/resource/type_spec.rb +2 -3
- data/spec/unit/settings_spec.rb +9 -4
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
- data/spec/unit/ssl/certificate_request_spec.rb +1 -2
- data/spec/unit/transaction/report_spec.rb +41 -0
- data/spec/unit/transaction_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +7 -9
- data/spec/unit/type/file/selinux_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +4 -3
- data/spec/unit/type/k5login_spec.rb +79 -10
- data/spec/unit/type/mount_spec.rb +1 -1
- data/spec/unit/type/nagios_spec.rb +6 -6
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +18 -0
- data/spec/unit/type/zfs_spec.rb +1 -1
- data/spec/unit/type_spec.rb +14 -15
- data/spec/unit/util/docs_spec.rb +1 -1
- data/spec/unit/util/execution_spec.rb +0 -1
- data/spec/unit/util/inifile_spec.rb +35 -4
- data/spec/unit/util/log/destinations_spec.rb +2 -2
- data/spec/unit/util/log_spec.rb +6 -5
- data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +1 -7
- data/spec/unit/util/windows/adsi_spec.rb +31 -27
- data/spec/unit/util/windows/sid_spec.rb +86 -15
- data/spec/unit/util_spec.rb +2 -2
- data/spec/watchr.rb +0 -1
- data/tasks/benchmark.rake +37 -0
- data/tasks/manpages.rake +1 -1
- metadata +83 -11
- checksums.yaml +0 -7
@@ -13,7 +13,7 @@ describe 'egrammar parsing function definitions' do
|
|
13
13
|
|
14
14
|
context 'with return type' do
|
15
15
|
it 'function foo() >> Integer { 1 }' do
|
16
|
-
expect(dump(parse('function foo() >> Integer { 1 }'))).to eq("(function foo (return_type
|
16
|
+
expect(dump(parse('function foo() >> Integer { 1 }'))).to eq("(function foo (return_type Integer) (block\n 1\n))")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -66,7 +66,7 @@ describe "egrammar parsing heredoc" do
|
|
66
66
|
CODE
|
67
67
|
expect(dump(parse(src))).to eq([
|
68
68
|
"(@()",
|
69
|
-
" (sublocated (cat 'Hello ' (str $name)
|
69
|
+
" (sublocated (cat 'Hello ' (str $name)))",
|
70
70
|
")"
|
71
71
|
].join("\n"))
|
72
72
|
end
|
@@ -79,7 +79,7 @@ describe "egrammar parsing heredoc" do
|
|
79
79
|
CODE
|
80
80
|
expect(dump(parse(src))).to eq([
|
81
81
|
"(@()",
|
82
|
-
" (sublocated (cat 'Hello \\' (str $name)
|
82
|
+
" (sublocated (cat 'Hello \\' (str $name)))",
|
83
83
|
")"
|
84
84
|
].join("\n"))
|
85
85
|
end
|
@@ -92,7 +92,7 @@ describe "egrammar parsing heredoc" do
|
|
92
92
|
CODE
|
93
93
|
expect(dump(parse(src))).to eq([
|
94
94
|
"(@()",
|
95
|
-
" (sublocated (cat 'Hello \\' (str $name)
|
95
|
+
" (sublocated (cat 'Hello \\' (str $name)))",
|
96
96
|
")"
|
97
97
|
].join("\n"))
|
98
98
|
end
|
@@ -13,7 +13,7 @@ describe 'egrammar parsing lambda definitions' do
|
|
13
13
|
|
14
14
|
context 'with return type' do
|
15
15
|
it 'f() |$x| >> Integer { 1 }' do
|
16
|
-
expect(dump(parse('f() |$x| >> Integer { 1 }'))).to eq("(invoke f (lambda (parameters x) (return_type
|
16
|
+
expect(dump(parse('f() |$x| >> Integer { 1 }'))).to eq("(invoke f (lambda (parameters x) (return_type Integer) (block\n 1\n)))")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -12,14 +12,14 @@ describe "egrammar parsing resource declarations" do
|
|
12
12
|
["File", "file"].each do |word|
|
13
13
|
it "#{word} { 'title': }" do
|
14
14
|
expect(dump(parse("#{word} { 'title': }"))).to eq([
|
15
|
-
"(resource
|
15
|
+
"(resource #{word}",
|
16
16
|
" ('title'))"
|
17
17
|
].join("\n"))
|
18
18
|
end
|
19
19
|
|
20
20
|
it "#{word} { 'title': path => '/somewhere', mode => '0777'}" do
|
21
21
|
expect(dump(parse("#{word} { 'title': path => '/somewhere', mode => '0777'}"))).to eq([
|
22
|
-
"(resource
|
22
|
+
"(resource #{word}",
|
23
23
|
" ('title'",
|
24
24
|
" (path => '/somewhere')",
|
25
25
|
" (mode => '0777')))"
|
@@ -28,7 +28,7 @@ describe "egrammar parsing resource declarations" do
|
|
28
28
|
|
29
29
|
it "#{word} { 'title': path => '/somewhere', }" do
|
30
30
|
expect(dump(parse("#{word} { 'title': path => '/somewhere', }"))).to eq([
|
31
|
-
"(resource
|
31
|
+
"(resource #{word}",
|
32
32
|
" ('title'",
|
33
33
|
" (path => '/somewhere')))"
|
34
34
|
].join("\n"))
|
@@ -36,21 +36,21 @@ describe "egrammar parsing resource declarations" do
|
|
36
36
|
|
37
37
|
it "#{word} { 'title': , }" do
|
38
38
|
expect(dump(parse("#{word} { 'title': , }"))).to eq([
|
39
|
-
"(resource
|
39
|
+
"(resource #{word}",
|
40
40
|
" ('title'))"
|
41
41
|
].join("\n"))
|
42
42
|
end
|
43
43
|
|
44
44
|
it "#{word} { 'title': ; }" do
|
45
45
|
expect(dump(parse("#{word} { 'title': ; }"))).to eq([
|
46
|
-
"(resource
|
46
|
+
"(resource #{word}",
|
47
47
|
" ('title'))"
|
48
48
|
].join("\n"))
|
49
49
|
end
|
50
50
|
|
51
51
|
it "#{word} { 'title': ; 'other_title': }" do
|
52
52
|
expect(dump(parse("#{word} { 'title': ; 'other_title': }"))).to eq([
|
53
|
-
"(resource
|
53
|
+
"(resource #{word}",
|
54
54
|
" ('title')",
|
55
55
|
" ('other_title'))"
|
56
56
|
].join("\n"))
|
@@ -59,7 +59,7 @@ describe "egrammar parsing resource declarations" do
|
|
59
59
|
# PUP-2898, trailing ';'
|
60
60
|
it "#{word} { 'title': ; 'other_title': ; }" do
|
61
61
|
expect(dump(parse("#{word} { 'title': ; 'other_title': ; }"))).to eq([
|
62
|
-
"(resource
|
62
|
+
"(resource #{word}",
|
63
63
|
" ('title')",
|
64
64
|
" ('other_title'))"
|
65
65
|
].join("\n"))
|
@@ -67,7 +67,7 @@ describe "egrammar parsing resource declarations" do
|
|
67
67
|
|
68
68
|
it "#{word} { 'title1': path => 'x'; 'title2': path => 'y'}" do
|
69
69
|
expect(dump(parse("#{word} { 'title1': path => 'x'; 'title2': path => 'y'}"))).to eq([
|
70
|
-
"(resource
|
70
|
+
"(resource #{word}",
|
71
71
|
" ('title1'",
|
72
72
|
" (path => 'x'))",
|
73
73
|
" ('title2'",
|
@@ -77,7 +77,7 @@ describe "egrammar parsing resource declarations" do
|
|
77
77
|
|
78
78
|
it "#{word} { title: * => {mode => '0777'} }" do
|
79
79
|
expect(dump(parse("#{word} { title: * => {mode => '0777'}}"))).to eq([
|
80
|
-
"(resource
|
80
|
+
"(resource #{word}",
|
81
81
|
" (title",
|
82
82
|
" (* => ({} (mode '0777')))))"
|
83
83
|
].join("\n"))
|
@@ -87,19 +87,19 @@ describe "egrammar parsing resource declarations" do
|
|
87
87
|
|
88
88
|
context "When parsing (type based) resource defaults" do
|
89
89
|
it "File { }" do
|
90
|
-
expect(dump(parse("File { }"))).to eq("(resource-defaults
|
90
|
+
expect(dump(parse("File { }"))).to eq("(resource-defaults File)")
|
91
91
|
end
|
92
92
|
|
93
93
|
it "File { mode => '0777' }" do
|
94
94
|
expect(dump(parse("File { mode => '0777'}"))).to eq([
|
95
|
-
"(resource-defaults
|
95
|
+
"(resource-defaults File",
|
96
96
|
" (mode => '0777'))"
|
97
97
|
].join("\n"))
|
98
98
|
end
|
99
99
|
|
100
100
|
it "File { * => {mode => '0777'} } (even if validated to be illegal)" do
|
101
101
|
expect(dump(parse("File { * => {mode => '0777'}}"))).to eq([
|
102
|
-
"(resource-defaults
|
102
|
+
"(resource-defaults File",
|
103
103
|
" (* => ({} (mode '0777'))))"
|
104
104
|
].join("\n"))
|
105
105
|
end
|
@@ -107,12 +107,12 @@ describe "egrammar parsing resource declarations" do
|
|
107
107
|
|
108
108
|
context "When parsing resource override" do
|
109
109
|
it "File['x'] { }" do
|
110
|
-
expect(dump(parse("File['x'] { }"))).to eq("(override (slice
|
110
|
+
expect(dump(parse("File['x'] { }"))).to eq("(override (slice File 'x'))")
|
111
111
|
end
|
112
112
|
|
113
113
|
it "File['x'] { x => 1 }" do
|
114
114
|
expect(dump(parse("File['x'] { x => 1}"))).to eq([
|
115
|
-
"(override (slice
|
115
|
+
"(override (slice File 'x')",
|
116
116
|
" (x => 1))"
|
117
117
|
].join("\n"))
|
118
118
|
end
|
@@ -120,14 +120,14 @@ describe "egrammar parsing resource declarations" do
|
|
120
120
|
|
121
121
|
it "File['x', 'y'] { x => 1 }" do
|
122
122
|
expect(dump(parse("File['x', 'y'] { x => 1}"))).to eq([
|
123
|
-
"(override (slice
|
123
|
+
"(override (slice File ('x' 'y'))",
|
124
124
|
" (x => 1))"
|
125
125
|
].join("\n"))
|
126
126
|
end
|
127
127
|
|
128
128
|
it "File['x'] { x => 1, y => 2 }" do
|
129
129
|
expect(dump(parse("File['x'] { x => 1, y=> 2}"))).to eq([
|
130
|
-
"(override (slice
|
130
|
+
"(override (slice File 'x')",
|
131
131
|
" (x => 1)",
|
132
132
|
" (y => 2))"
|
133
133
|
].join("\n"))
|
@@ -135,14 +135,14 @@ describe "egrammar parsing resource declarations" do
|
|
135
135
|
|
136
136
|
it "File['x'] { x +> 1 }" do
|
137
137
|
expect(dump(parse("File['x'] { x +> 1}"))).to eq([
|
138
|
-
"(override (slice
|
138
|
+
"(override (slice File 'x')",
|
139
139
|
" (x +> 1))"
|
140
140
|
].join("\n"))
|
141
141
|
end
|
142
142
|
|
143
143
|
it "File['x'] { * => {mode => '0777'} } (even if validated to be illegal)" do
|
144
144
|
expect(dump(parse("File['x'] { * => {mode => '0777'}}"))).to eq([
|
145
|
-
"(override (slice
|
145
|
+
"(override (slice File 'x')",
|
146
146
|
" (* => ({} (mode '0777'))))"
|
147
147
|
].join("\n"))
|
148
148
|
end
|
@@ -173,28 +173,28 @@ describe "egrammar parsing resource declarations" do
|
|
173
173
|
|
174
174
|
it "parses global defaults with @ (even if validated to be illegal)" do
|
175
175
|
expect(dump(parse("@File { mode => '0777' }"))).to eq([
|
176
|
-
"(virtual-resource-defaults
|
176
|
+
"(virtual-resource-defaults File",
|
177
177
|
" (mode => '0777'))"
|
178
178
|
].join("\n"))
|
179
179
|
end
|
180
180
|
|
181
181
|
it "parses global defaults with @@ (even if validated to be illegal)" do
|
182
182
|
expect(dump(parse("@@File { mode => '0777' }"))).to eq([
|
183
|
-
"(exported-resource-defaults
|
183
|
+
"(exported-resource-defaults File",
|
184
184
|
" (mode => '0777'))"
|
185
185
|
].join("\n"))
|
186
186
|
end
|
187
187
|
|
188
188
|
it "parses override with @ (even if validated to be illegal)" do
|
189
189
|
expect(dump(parse("@File[foo] { mode => '0777' }"))).to eq([
|
190
|
-
"(virtual-override (slice
|
190
|
+
"(virtual-override (slice File foo)",
|
191
191
|
" (mode => '0777'))"
|
192
192
|
].join("\n"))
|
193
193
|
end
|
194
194
|
|
195
195
|
it "parses override combined with @@ (even if validated to be illegal)" do
|
196
196
|
expect(dump(parse("@@File[foo] { mode => '0777' }"))).to eq([
|
197
|
-
"(exported-override (slice
|
197
|
+
"(exported-override (slice File foo)",
|
198
198
|
" (mode => '0777'))"
|
199
199
|
].join("\n"))
|
200
200
|
end
|
@@ -253,19 +253,19 @@ describe "egrammar parsing resource declarations" do
|
|
253
253
|
|
254
254
|
context "When parsing Relationships" do
|
255
255
|
it "File[a] -> File[b]" do
|
256
|
-
expect(dump(parse("File[a] -> File[b]"))).to eq("(-> (slice
|
256
|
+
expect(dump(parse("File[a] -> File[b]"))).to eq("(-> (slice File a) (slice File b))")
|
257
257
|
end
|
258
258
|
|
259
259
|
it "File[a] <- File[b]" do
|
260
|
-
expect(dump(parse("File[a] <- File[b]"))).to eq("(<- (slice
|
260
|
+
expect(dump(parse("File[a] <- File[b]"))).to eq("(<- (slice File a) (slice File b))")
|
261
261
|
end
|
262
262
|
|
263
263
|
it "File[a] ~> File[b]" do
|
264
|
-
expect(dump(parse("File[a] ~> File[b]"))).to eq("(~> (slice
|
264
|
+
expect(dump(parse("File[a] ~> File[b]"))).to eq("(~> (slice File a) (slice File b))")
|
265
265
|
end
|
266
266
|
|
267
267
|
it "File[a] <~ File[b]" do
|
268
|
-
expect(dump(parse("File[a] <~ File[b]"))).to eq("(<~ (slice
|
268
|
+
expect(dump(parse("File[a] <~ File[b]"))).to eq("(<~ (slice File a) (slice File b))")
|
269
269
|
end
|
270
270
|
|
271
271
|
it "Should chain relationships" do
|
@@ -276,13 +276,13 @@ describe "egrammar parsing resource declarations" do
|
|
276
276
|
|
277
277
|
it "Should chain relationships" do
|
278
278
|
expect(dump(parse("File[a] -> File[b] ~> File[c] <- File[d] <~ File[e]"))).to eq(
|
279
|
-
"(<~ (<- (~> (-> (slice
|
279
|
+
"(<~ (<- (~> (-> (slice File a) (slice File b)) (slice File c)) (slice File d)) (slice File e))"
|
280
280
|
)
|
281
281
|
end
|
282
282
|
|
283
283
|
it "should create relationships between collects" do
|
284
284
|
expect(dump(parse("File <| mode == 0644 |> -> File <| mode == 0755 |>"))).to eq(
|
285
|
-
"(-> (collect
|
285
|
+
"(-> (collect File\n (<| |> (== mode 0644))) (collect File\n (<| |> (== mode 0755))))"
|
286
286
|
)
|
287
287
|
end
|
288
288
|
end
|
@@ -290,38 +290,38 @@ describe "egrammar parsing resource declarations" do
|
|
290
290
|
context "When parsing collection" do
|
291
291
|
context "of virtual resources" do
|
292
292
|
it "File <| |>" do
|
293
|
-
expect(dump(parse("File <| |>"))).to eq("(collect
|
293
|
+
expect(dump(parse("File <| |>"))).to eq("(collect File\n (<| |>))")
|
294
294
|
end
|
295
295
|
end
|
296
296
|
|
297
297
|
context "of exported resources" do
|
298
298
|
it "File <<| |>>" do
|
299
|
-
expect(dump(parse("File <<| |>>"))).to eq("(collect
|
299
|
+
expect(dump(parse("File <<| |>>"))).to eq("(collect File\n (<<| |>>))")
|
300
300
|
end
|
301
301
|
end
|
302
302
|
|
303
303
|
context "queries are parsed with correct precedence" do
|
304
304
|
it "File <| tag == 'foo' |>" do
|
305
|
-
expect(dump(parse("File <| tag == 'foo' |>"))).to eq("(collect
|
305
|
+
expect(dump(parse("File <| tag == 'foo' |>"))).to eq("(collect File\n (<| |> (== tag 'foo')))")
|
306
306
|
end
|
307
307
|
|
308
308
|
it "File <| tag == 'foo' and mode != '0777' |>" do
|
309
|
-
expect(dump(parse("File <| tag == 'foo' and mode != '0777' |>"))).to eq("(collect
|
309
|
+
expect(dump(parse("File <| tag == 'foo' and mode != '0777' |>"))).to eq("(collect File\n (<| |> (&& (== tag 'foo') (!= mode '0777'))))")
|
310
310
|
end
|
311
311
|
|
312
312
|
it "File <| tag == 'foo' or mode != '0777' |>" do
|
313
|
-
expect(dump(parse("File <| tag == 'foo' or mode != '0777' |>"))).to eq("(collect
|
313
|
+
expect(dump(parse("File <| tag == 'foo' or mode != '0777' |>"))).to eq("(collect File\n (<| |> (|| (== tag 'foo') (!= mode '0777'))))")
|
314
314
|
end
|
315
315
|
|
316
316
|
it "File <| tag == 'foo' or tag == 'bar' and mode != '0777' |>" do
|
317
317
|
expect(dump(parse("File <| tag == 'foo' or tag == 'bar' and mode != '0777' |>"))).to eq(
|
318
|
-
"(collect
|
318
|
+
"(collect File\n (<| |> (|| (== tag 'foo') (&& (== tag 'bar') (!= mode '0777')))))"
|
319
319
|
)
|
320
320
|
end
|
321
321
|
|
322
322
|
it "File <| (tag == 'foo' or tag == 'bar') and mode != '0777' |>" do
|
323
323
|
expect(dump(parse("File <| (tag == 'foo' or tag == 'bar') and mode != '0777' |>"))).to eq(
|
324
|
-
"(collect
|
324
|
+
"(collect File\n (<| |> (&& (|| (== tag 'foo') (== tag 'bar')) (!= mode '0777'))))"
|
325
325
|
)
|
326
326
|
end
|
327
327
|
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/pops'
|
4
|
+
require 'puppet/pops/pn'
|
5
|
+
|
6
|
+
module Puppet::Pops
|
7
|
+
module Parser
|
8
|
+
|
9
|
+
describe 'Puppet::Pops::Parser::PNParser' do
|
10
|
+
context 'parses the text' do
|
11
|
+
it '"true" to PN::Literal(true)' do
|
12
|
+
expect(PNParser.new.parse('true')).to eql(lit(true))
|
13
|
+
end
|
14
|
+
|
15
|
+
it '"false" to PN::Literal(false)' do
|
16
|
+
expect(PNParser.new.parse('false')).to eql(lit(false))
|
17
|
+
end
|
18
|
+
|
19
|
+
it '"nil" to PN::Literal(nil)' do
|
20
|
+
expect(PNParser.new.parse('nil')).to eql(lit(nil))
|
21
|
+
end
|
22
|
+
|
23
|
+
it '"123" to PN::Literal(123)' do
|
24
|
+
expect(PNParser.new.parse('123')).to eql(lit(123))
|
25
|
+
end
|
26
|
+
|
27
|
+
it '"-123" to PN::Literal(-123)' do
|
28
|
+
expect(PNParser.new.parse('-123')).to eql(lit(-123))
|
29
|
+
end
|
30
|
+
|
31
|
+
it '"123.45" to PN::Literal(123.45)' do
|
32
|
+
expect(PNParser.new.parse('123.45')).to eql(lit(123.45))
|
33
|
+
end
|
34
|
+
|
35
|
+
it '"-123.45" to PN::Literal(-123.45)' do
|
36
|
+
expect(PNParser.new.parse('-123.45')).to eql(lit(-123.45))
|
37
|
+
end
|
38
|
+
|
39
|
+
it '"123.45e12" to PN::Literal(123.45e12)' do
|
40
|
+
expect(PNParser.new.parse('123.45e12')).to eql(lit(123.45e12))
|
41
|
+
end
|
42
|
+
|
43
|
+
it '"123.45e+12" to PN::Literal(123.45e+12)' do
|
44
|
+
expect(PNParser.new.parse('123.45e+12')).to eql(lit(123.45e+12))
|
45
|
+
end
|
46
|
+
|
47
|
+
it '"123.45e-12" to PN::Literal(123.45e-12)' do
|
48
|
+
expect(PNParser.new.parse('123.45e-12')).to eql(lit(123.45e-12))
|
49
|
+
end
|
50
|
+
|
51
|
+
it '"hello" to PN::Literal("hello")' do
|
52
|
+
expect(PNParser.new.parse('"hello"')).to eql(lit('hello'))
|
53
|
+
end
|
54
|
+
|
55
|
+
it '"\t" to PN::Literal("\t")' do
|
56
|
+
expect(PNParser.new.parse('"\t"')).to eql(lit("\t"))
|
57
|
+
end
|
58
|
+
|
59
|
+
it '"\r" to PN::Literal("\r")' do
|
60
|
+
expect(PNParser.new.parse('"\r"')).to eql(lit("\r"))
|
61
|
+
end
|
62
|
+
|
63
|
+
it '"\n" to PN::Literal("\n")' do
|
64
|
+
expect(PNParser.new.parse('"\n"')).to eql(lit("\n"))
|
65
|
+
end
|
66
|
+
|
67
|
+
it '"\"" to PN::Literal("\"")' do
|
68
|
+
expect(PNParser.new.parse('"\""')).to eql(lit('"'))
|
69
|
+
end
|
70
|
+
|
71
|
+
it '"\\\\" to PN::Literal("\\")' do
|
72
|
+
expect(PNParser.new.parse('"\\\\"')).to eql(lit("\\"))
|
73
|
+
end
|
74
|
+
|
75
|
+
it '"\o024" to PN::Literal("\u{14}")' do
|
76
|
+
expect(PNParser.new.parse('"\o024"')).to eql(lit("\u{14}"))
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'parses elements enclosed in brackets to a PN::List' do
|
81
|
+
expect(PNParser.new.parse('[1 "2" true false nil]')).to eql(PN::List.new([lit(1), lit('2'), lit(true), lit(false), lit(nil)]))
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'parses elements enclosed in parenthesis to a PN::Call' do
|
85
|
+
expect(PNParser.new.parse('(+ 1 2)')).to eql(PN::Call.new('+', lit(1), lit(2)))
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'parses entries enclosed in curly braces to a PN::Map' do
|
89
|
+
expect(PNParser.new.parse('{:a 1 :b "2" :c true}')).to eql(PN::Map.new([entry('a', 1), entry('b', '2'), entry('c', true)]))
|
90
|
+
end
|
91
|
+
|
92
|
+
def entry(k, v)
|
93
|
+
PN::Entry.new(k, lit(v))
|
94
|
+
end
|
95
|
+
|
96
|
+
def lit(v)
|
97
|
+
PN::Literal.new(v)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/pops'
|
4
|
+
require 'puppet/pops/pn'
|
5
|
+
|
6
|
+
module Puppet::Pops
|
7
|
+
module PN
|
8
|
+
|
9
|
+
describe 'Puppet::Pops::PN' do
|
10
|
+
context 'Literal' do
|
11
|
+
context 'containing the value' do
|
12
|
+
it 'true produces the text "true"' do
|
13
|
+
expect(lit(true).to_s).to eql('true')
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'false produces the text "false"' do
|
17
|
+
expect(lit(false).to_s).to eql('false')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'nil produces the text "nil"' do
|
21
|
+
expect(lit(nil).to_s).to eql('nil')
|
22
|
+
end
|
23
|
+
|
24
|
+
it '34 produces the text "34"' do
|
25
|
+
expect(lit(34).to_s).to eql('34')
|
26
|
+
end
|
27
|
+
|
28
|
+
it '3.0 produces the text "3.0"' do
|
29
|
+
expect(lit(3.0).to_s).to eql('3.0')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'produces a double quoted text from a string such that' do
|
34
|
+
it '"plain" produces "plain"' do
|
35
|
+
expect(lit('plain').to_s).to eql('"plain"')
|
36
|
+
end
|
37
|
+
|
38
|
+
it '"\t" produces a text containing a tab character' do
|
39
|
+
expect(lit("\t").to_s).to eql('"\t"')
|
40
|
+
end
|
41
|
+
|
42
|
+
it '"\r" produces a text containing a return character' do
|
43
|
+
expect(lit("\r").to_s).to eql('"\r"')
|
44
|
+
end
|
45
|
+
|
46
|
+
it '"\n" produces a text containing a newline character' do
|
47
|
+
expect(lit("\n").to_s).to eql('"\n"')
|
48
|
+
end
|
49
|
+
|
50
|
+
it '"\"" produces a text containing a double quote' do
|
51
|
+
expect(lit("\"").to_s).to eql('"\""')
|
52
|
+
end
|
53
|
+
|
54
|
+
it '"\\" produces a text containing a backslash' do
|
55
|
+
expect(lit("\\").to_s).to eql('"\\\\"')
|
56
|
+
end
|
57
|
+
|
58
|
+
it '"\u{14}" produces "\o024"' do
|
59
|
+
expect(lit("\u{14}").to_s).to eql('"\o024"')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'List' do
|
65
|
+
it 'produces a text where its elements are enclosed in brackets' do
|
66
|
+
expect(List.new([lit(3), lit('a'), lit(true)]).to_s).to eql('[3 "a" true]')
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'produces a text where the elements of nested lists are enclosed in brackets' do
|
70
|
+
expect(List.new([lit(3), lit('a'), List.new([lit(true), lit(false)])]).to_s).to eql('[3 "a" [true false]]')
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'with indent' do
|
74
|
+
it 'produces a text where the each element is on an indented line ' do
|
75
|
+
s = ''
|
76
|
+
List.new([lit(3), lit('a'), List.new([lit(true), lit(false)])]).format(Indent.new(' '), s)
|
77
|
+
expect(s).to eql(<<-RESULT.unindent[0..-2]) # unindent and strip last newline
|
78
|
+
[
|
79
|
+
3
|
80
|
+
"a"
|
81
|
+
[
|
82
|
+
true
|
83
|
+
false]]
|
84
|
+
RESULT
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'Map' do
|
90
|
+
it 'raises error when illegal keys are used' do
|
91
|
+
expect { Map.new([Entry.new('123', lit(3))]) }.to raise_error(ArgumentError, /key 123 does not conform to pattern/)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'produces a text where entries are enclosed in curly braces' do
|
95
|
+
expect(Map.new([Entry.new('a', lit(3))]).to_s).to eql('{:a 3}')
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'produces a text where the entries of nested maps are enclosed in curly braces' do
|
99
|
+
expect(Map.new([
|
100
|
+
Map.new([Entry.new('a', lit(3))]).with_name('o')]).to_s).to eql('{:o {:a 3}}')
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'with indent' do
|
104
|
+
it 'produces a text where the each element is on an indented line ' do
|
105
|
+
s = ''
|
106
|
+
Map.new([
|
107
|
+
Map.new([Entry.new('a', lit(3)), Entry.new('b', lit(5))]).with_name('o')]).format(Indent.new(' '), s)
|
108
|
+
expect(s).to eql(<<-RESULT.unindent[0..-2]) # unindent and strip last newline
|
109
|
+
{
|
110
|
+
:o {
|
111
|
+
:a 3
|
112
|
+
:b 5}}
|
113
|
+
RESULT
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'Call' do
|
119
|
+
it 'produces a text where elements are enclosed in parenthesis' do
|
120
|
+
expect(Call.new('+', lit(3), lit(5)).to_s).to eql('(+ 3 5)')
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'produces a text where the elements of nested calls are enclosed in parenthesis' do
|
124
|
+
expect(Map.new([
|
125
|
+
Call.new('+', lit(3), lit(5)).with_name('o')]).to_s).to eql('{:o (+ 3 5)}')
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'with indent' do
|
129
|
+
it 'produces a text where the each element is on an indented line ' do
|
130
|
+
s = ''
|
131
|
+
Call.new('+', lit(3), lit(Call.new('-', lit(10), lit(5)))).format(Indent.new(' '), s)
|
132
|
+
expect(s).to eql(<<-RESULT.unindent[0..-2]) # unindent and strip last newline
|
133
|
+
(+
|
134
|
+
3
|
135
|
+
(-
|
136
|
+
10
|
137
|
+
5))
|
138
|
+
RESULT
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def lit(v)
|
144
|
+
v.is_a?(PN) ? v : Literal.new(v)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|