puppet 5.4.0 → 5.5.0
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 +71 -11
- checksums.yaml +0 -7
@@ -174,6 +174,59 @@ describe Puppet::Face[:epp, :current] do
|
|
174
174
|
expect(@logs[0].message).to match(/Syntax error at 'b'/)
|
175
175
|
expect(@logs[0].level).to eq(:err)
|
176
176
|
end
|
177
|
+
|
178
|
+
context "using 'pn' format" do
|
179
|
+
it "prints the AST of the given expression in PN format" do
|
180
|
+
expect(eppface.dump({ :format => 'pn', :e => 'hello world' })).to eq(
|
181
|
+
'(lambda {:body [(epp (render-s "hello world"))]})')
|
182
|
+
end
|
183
|
+
|
184
|
+
it "pretty prints the AST of the given expression in PN format when --pretty is given" do
|
185
|
+
expect(eppface.dump({ :pretty => true, :format => 'pn', :e => 'hello world' })).to eq(<<-RESULT.unindent[0..-2])
|
186
|
+
(lambda
|
187
|
+
{
|
188
|
+
:body [
|
189
|
+
(epp
|
190
|
+
(render-s
|
191
|
+
"hello world"))]})
|
192
|
+
RESULT
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "using 'json' format" do
|
197
|
+
it "prints the AST of the given expression in JSON based on the PN format" do
|
198
|
+
expect(eppface.dump({ :format => 'json', :e => 'hello world' })).to eq(
|
199
|
+
'{"^":["lambda",{"#":["body",[{"^":["epp",{"^":["render-s","hello world"]}]}]]}]}')
|
200
|
+
end
|
201
|
+
|
202
|
+
it "pretty prints the AST of the given expression in JSON based on the PN format when --pretty is given" do
|
203
|
+
expect(eppface.dump({ :pretty => true, :format => 'json', :e => 'hello world' })).to eq(<<-RESULT.unindent[0..-2])
|
204
|
+
{
|
205
|
+
"^": [
|
206
|
+
"lambda",
|
207
|
+
{
|
208
|
+
"#": [
|
209
|
+
"body",
|
210
|
+
[
|
211
|
+
{
|
212
|
+
"^": [
|
213
|
+
"epp",
|
214
|
+
{
|
215
|
+
"^": [
|
216
|
+
"render-s",
|
217
|
+
"hello world"
|
218
|
+
]
|
219
|
+
}
|
220
|
+
]
|
221
|
+
}
|
222
|
+
]
|
223
|
+
]
|
224
|
+
}
|
225
|
+
]
|
226
|
+
}
|
227
|
+
RESULT
|
228
|
+
end
|
229
|
+
end
|
177
230
|
end
|
178
231
|
|
179
232
|
context "render" do
|
@@ -307,7 +360,6 @@ describe Puppet::Face[:epp, :current] do
|
|
307
360
|
end
|
308
361
|
|
309
362
|
it "renders multiple files separated by headers by default" do
|
310
|
-
modules_dir = File.join(dir, 'environments', 'production', 'modules')
|
311
363
|
# chomp the last newline, it is put there by heredoc
|
312
364
|
expect(eppface.render('m1/greetings.epp', 'm2/goodbye.epp')).to eq(<<-EOT.chomp)
|
313
365
|
--- m1/greetings.epp
|
@@ -318,7 +370,6 @@ goodbye world
|
|
318
370
|
end
|
319
371
|
|
320
372
|
it "outputs multiple files verbatim when --no-headers is given" do
|
321
|
-
modules_dir = File.join(dir, 'environments', 'production', 'modules')
|
322
373
|
expect(eppface.render('m1/greetings.epp', 'm2/goodbye.epp', :header => false)).to eq("hello worldgoodbye world")
|
323
374
|
end
|
324
375
|
end
|
@@ -1,9 +1,62 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
3
|
require 'puppet/face'
|
4
|
+
require 'puppet/indirector/facts/facter'
|
5
|
+
require 'puppet/indirector/facts/rest'
|
4
6
|
|
5
7
|
describe Puppet::Face[:facts, '0.0.1'] do
|
6
8
|
describe "#find" do
|
7
9
|
it { is_expected.to be_action :find }
|
8
10
|
end
|
11
|
+
|
12
|
+
describe '#upload' do
|
13
|
+
let(:model) { Puppet::Node::Facts }
|
14
|
+
let(:test_data) { model.new('puppet.node.test', {test_fact: 'test value'}) }
|
15
|
+
let(:facter_terminus) { model.indirection.terminus(:facter) }
|
16
|
+
let(:rest_terminus) { model.indirection.terminus(:rest) }
|
17
|
+
|
18
|
+
before(:each) do
|
19
|
+
Puppet.settings.parse_config(<<-CONF)
|
20
|
+
[main]
|
21
|
+
server=puppet.server.invalid
|
22
|
+
certname=puppet.node.invalid
|
23
|
+
[agent]
|
24
|
+
server=puppet.server.test
|
25
|
+
node_name_value=puppet.node.test
|
26
|
+
CONF
|
27
|
+
|
28
|
+
# Faces start in :user run mode
|
29
|
+
Puppet.settings.preferred_run_mode = :user
|
30
|
+
|
31
|
+
facter_terminus.stubs(:find).with(instance_of(Puppet::Indirector::Request)).returns(test_data)
|
32
|
+
rest_terminus.stubs(:save).with(instance_of(Puppet::Indirector::Request)).returns(nil)
|
33
|
+
end
|
34
|
+
|
35
|
+
it { is_expected.to be_action :upload }
|
36
|
+
|
37
|
+
it "finds facts from terminus_class :facter" do
|
38
|
+
facter_terminus.expects(:find).with(instance_of(Puppet::Indirector::Request)).returns(test_data)
|
39
|
+
|
40
|
+
subject.upload
|
41
|
+
end
|
42
|
+
|
43
|
+
it "saves facts to terminus_class :rest" do
|
44
|
+
rest_terminus.expects(:save).with(instance_of(Puppet::Indirector::Request)).returns(nil)
|
45
|
+
|
46
|
+
subject.upload
|
47
|
+
end
|
48
|
+
|
49
|
+
it "uses settings from the agent section of puppet.conf" do
|
50
|
+
facter_terminus.expects(:find).with(responds_with(:key, 'puppet.node.test')).returns(test_data)
|
51
|
+
|
52
|
+
subject.upload
|
53
|
+
end
|
54
|
+
|
55
|
+
it "logs the name of the server that received the upload" do
|
56
|
+
subject.upload
|
57
|
+
|
58
|
+
expect(@logs).to be_any {|log| log.level == :notice &&
|
59
|
+
log.message =~ /Uploading facts for '.*' to: 'puppet\.server\.test'/}
|
60
|
+
end
|
61
|
+
end
|
9
62
|
end
|
data/spec/unit/face/help_spec.rb
CHANGED
@@ -3,31 +3,30 @@ require 'spec_helper'
|
|
3
3
|
require 'puppet/face'
|
4
4
|
|
5
5
|
describe Puppet::Face[:help, '0.0.1'] do
|
6
|
-
it
|
6
|
+
it 'has a help action' do
|
7
7
|
expect(subject).to be_action :help
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'has a default action of help' do
|
11
11
|
expect(subject.get_action('help')).to be_default
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'accepts a call with no arguments' do
|
15
15
|
expect {
|
16
16
|
subject.help()
|
17
17
|
}.to_not raise_error
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
20
|
+
it 'accepts a face name' do
|
21
21
|
expect { subject.help(:help) }.to_not raise_error
|
22
22
|
end
|
23
23
|
|
24
|
-
it
|
24
|
+
it 'accepts a face and action name' do
|
25
25
|
expect { subject.help(:help, :help) }.to_not raise_error
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
29
|
-
expect { subject.help(:help, :help, :for_the_love_of_god) }.
|
30
|
-
to raise_error ArgumentError
|
28
|
+
it 'fails if more than a face and action are given' do
|
29
|
+
expect { subject.help(:help, :help, :for_the_love_of_god) }.to raise_error ArgumentError
|
31
30
|
end
|
32
31
|
|
33
32
|
it "treats :current and 'current' identically" do
|
@@ -36,37 +35,48 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
36
35
|
)
|
37
36
|
end
|
38
37
|
|
39
|
-
it
|
38
|
+
it 'raises an error when the face is unavailable' do
|
40
39
|
expect {
|
41
40
|
subject.help(:huzzah, :bar, :version => '17.0.0')
|
42
41
|
}.to raise_error(ArgumentError, /Could not find version 17\.0\.0/)
|
43
42
|
end
|
44
43
|
|
45
|
-
it
|
44
|
+
it 'finds a face by version' do
|
46
45
|
face = Puppet::Face[:huzzah, :current]
|
47
46
|
expect(subject.help(:huzzah, :version => face.version)).
|
48
47
|
to eq(subject.help(:huzzah, :version => :current))
|
49
48
|
end
|
50
49
|
|
51
|
-
|
52
|
-
face
|
53
|
-
|
50
|
+
context 'rendering has an error' do
|
51
|
+
it 'raises an ArgumentError if the face raises a StandardError' do
|
52
|
+
face = Puppet::Face[:module, :current]
|
53
|
+
face.stubs(:short_description).raises(StandardError, 'whoops')
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
expect {
|
56
|
+
subject.help(:module)
|
57
|
+
}.to raise_error(ArgumentError, /Detail: "whoops"/)
|
58
|
+
end
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
it 'raises an ArgumentError if the face raises a LoadError' do
|
61
|
+
face = Puppet::Face[:module, :current]
|
62
|
+
face.stubs(:short_description).raises(LoadError, 'cannot load such file -- yard')
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
expect {
|
65
|
+
subject.help(:module)
|
66
|
+
}.to raise_error(ArgumentError, /Detail: "cannot load such file -- yard"/)
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'with face actions' do
|
70
|
+
it 'returns an error if we can not get an action for the module' do
|
71
|
+
face = Puppet::Face[:module, :current]
|
72
|
+
face.stubs(:get_action).returns(nil)
|
73
|
+
|
74
|
+
expect {subject.help('module', 'list')}.to raise_error(ArgumentError, /Unable to load action list from Puppet::Face/)
|
75
|
+
end
|
76
|
+
end
|
67
77
|
end
|
68
78
|
|
69
|
-
context
|
79
|
+
context 'when listing subcommands' do
|
70
80
|
subject { Puppet::Face[:help, :current].help }
|
71
81
|
|
72
82
|
RSpec::Matchers.define :have_a_summary do
|
@@ -78,13 +88,13 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
78
88
|
# Check a precondition for the next block; if this fails you have
|
79
89
|
# something odd in your set of face, and we skip testing things that
|
80
90
|
# matter. --daniel 2011-04-10
|
81
|
-
it
|
91
|
+
it 'has at least one face with a summary' do
|
82
92
|
expect(Puppet::Face.faces).to be_any do |name|
|
83
93
|
Puppet::Face[name, :current].summary
|
84
94
|
end
|
85
95
|
end
|
86
96
|
|
87
|
-
it
|
97
|
+
it 'lists all faces which are runnable from the command line' do
|
88
98
|
help_face = Puppet::Face[:help, :current]
|
89
99
|
# The main purpose of the help face is to provide documentation for
|
90
100
|
# command line users. It shouldn't show documentation for faces
|
@@ -102,36 +112,17 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
102
112
|
end
|
103
113
|
end
|
104
114
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
expect(subject).to match(/agent\s+! Subcommand unavailable due to error\. Check error logs\./)
|
109
|
-
end
|
110
|
-
|
111
|
-
it "returns an 'unavailable' summary if the legacy application raises a LoadError" do
|
112
|
-
Puppet::Application['agent'].class.any_instance.stubs(:summary).raises(LoadError, "cannot load such file -- yard")
|
113
|
-
|
114
|
-
expect(subject).to match(/agent\s+! Subcommand unavailable due to error\. Check error logs\./)
|
115
|
-
end
|
116
|
-
|
117
|
-
context "face summaries" do
|
118
|
-
it "can generate face summaries" do
|
115
|
+
context 'face summaries' do
|
116
|
+
it 'can generate face summaries' do
|
119
117
|
faces = Puppet::Face.faces
|
120
118
|
expect(faces.length).to be > 0
|
121
119
|
faces.each do |name|
|
122
120
|
expect(Puppet::Face[name, :current]).to have_a_summary
|
123
121
|
end
|
124
122
|
end
|
125
|
-
|
126
|
-
it "returns an 'unavailable' summary if the face application raises a LoadError" do
|
127
|
-
face = Puppet::Face[:module, :current]
|
128
|
-
face.stubs(:summary).raises(LoadError, "cannot load such file -- yard")
|
129
|
-
|
130
|
-
expect(Puppet::Face[:help, :current].help).to match(/module\s+! Subcommand unavailable due to error\. Check error logs\./)
|
131
|
-
end
|
132
123
|
end
|
133
124
|
|
134
|
-
it
|
125
|
+
it 'lists all legacy applications' do
|
135
126
|
Puppet::Face[:help, :current].legacy_applications.each do |appname|
|
136
127
|
expect(subject).to match(%r{ #{appname} })
|
137
128
|
|
@@ -141,24 +132,24 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
141
132
|
end
|
142
133
|
end
|
143
134
|
|
144
|
-
context
|
145
|
-
it
|
135
|
+
context 'deprecated faces' do
|
136
|
+
it 'prints a deprecation warning for deprecated faces' do
|
146
137
|
Puppet::Face[:module, :current].stubs(:deprecated?).returns(true)
|
147
138
|
expect(Puppet::Face[:help, :current].help(:module)).to match(/Warning: 'puppet module' is deprecated/)
|
148
139
|
end
|
149
140
|
end
|
150
141
|
|
151
|
-
context
|
152
|
-
it
|
142
|
+
context '#all_application_summaries' do
|
143
|
+
it 'appends a deprecation warning for deprecated faces' do
|
153
144
|
# Stub the module face as deprecated
|
154
145
|
Puppet::Face[:module, :current].expects(:deprecated?).returns(true)
|
155
|
-
|
146
|
+
Puppet::Face[:help, :current].all_application_summaries.each do |appname,summary|
|
156
147
|
expect(summary).to match(/Deprecated/) if appname == 'module'
|
157
148
|
end
|
158
149
|
end
|
159
150
|
end
|
160
151
|
|
161
|
-
context
|
152
|
+
context '#legacy_applications' do
|
162
153
|
subject { Puppet::Face[:help, :current].legacy_applications }
|
163
154
|
|
164
155
|
# If we don't, these tests are ... less than useful, because they assume
|
@@ -175,7 +166,7 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
175
166
|
end
|
176
167
|
end
|
177
168
|
|
178
|
-
context
|
169
|
+
context 'help for legacy applications' do
|
179
170
|
subject { Puppet::Face[:help, :current] }
|
180
171
|
let :appname do subject.legacy_applications.first end
|
181
172
|
|
@@ -183,7 +174,7 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
183
174
|
# we don't get into a loop where we either test a face-based replacement
|
184
175
|
# and fail to notice breakage, or where we have to constantly rewrite this
|
185
176
|
# test and all. --daniel 2011-04-11
|
186
|
-
it
|
177
|
+
it 'returns the legacy help when given the subcommand' do
|
187
178
|
help = subject.help(appname)
|
188
179
|
expect(help).to match(/puppet-#{appname}/)
|
189
180
|
%w{SYNOPSIS USAGE DESCRIPTION OPTIONS COPYRIGHT}.each do |heading|
|
@@ -191,25 +182,27 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
191
182
|
end
|
192
183
|
end
|
193
184
|
|
194
|
-
it
|
185
|
+
it 'fails when asked for an action on a legacy command' do
|
195
186
|
expect { subject.help(appname, :whatever) }.
|
196
|
-
to raise_error
|
187
|
+
to raise_error(ArgumentError, /The legacy subcommand '#{appname}' does not support supplying an action/)
|
197
188
|
end
|
198
189
|
|
199
|
-
|
200
|
-
|
190
|
+
context 'rendering has an error' do
|
191
|
+
it 'raises an ArgumentError if a legacy application raises a StandardError' do
|
192
|
+
Puppet::Application[appname].class.any_instance.stubs(:help).raises(StandardError, 'whoops')
|
201
193
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
194
|
+
expect {
|
195
|
+
subject.help(appname)
|
196
|
+
}.to raise_error(ArgumentError, /Detail: "whoops"/)
|
197
|
+
end
|
206
198
|
|
207
|
-
|
208
|
-
|
199
|
+
it 'raises an ArgumentError if a legacy application raises a LoadError' do
|
200
|
+
Puppet::Application[appname].class.any_instance.stubs(:help).raises(LoadError, 'cannot load such file -- yard')
|
209
201
|
|
210
|
-
|
211
|
-
|
212
|
-
|
202
|
+
expect {
|
203
|
+
subject.help(appname)
|
204
|
+
}.to raise_error(ArgumentError, /Detail: "cannot load such file -- yard"/)
|
205
|
+
end
|
213
206
|
end
|
214
207
|
end
|
215
208
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/face'
|
4
|
+
|
5
|
+
describe Puppet::Face[:man, '0.0.1'] do
|
6
|
+
it 'should be deprecated' do
|
7
|
+
expect(subject.deprecated?).to be_truthy
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'has a man action' do
|
11
|
+
expect(subject).to be_action(:man)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'has a default action of man' do
|
15
|
+
expect(subject.get_action('man')).to be_default
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'accepts a call with no arguments' do
|
19
|
+
expect { subject.man() }.to have_printed(/USAGE: puppet man <action>/)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'raises an ArgumentError when given to many arguments' do
|
23
|
+
subject.stubs(:print_man_help)
|
24
|
+
expect { subject.man(:man, 'cert', 'extra') }.to raise_error(ArgumentError)
|
25
|
+
end
|
26
|
+
end
|
@@ -83,7 +83,6 @@ describe "puppet module list" do
|
|
83
83
|
it "prefers a given modulepath over the modulepath from the given environment" do
|
84
84
|
foomod = PuppetSpec::Modules.create('foo', @modpath1)
|
85
85
|
barmod = PuppetSpec::Modules.create('bar', @modpath2)
|
86
|
-
env = Puppet::Node::Environment.create(:myenv, ['/tmp/notused'])
|
87
86
|
|
88
87
|
modules = Puppet::Face[:module, :current].list(:environment => 'myenv', :modulepath => "#{@modpath1}#{File::PATH_SEPARATOR}#{@modpath2}")[:modules_by_path]
|
89
88
|
|
@@ -145,6 +145,84 @@ describe Puppet::Face[:parser, :current] do
|
|
145
145
|
parser.dump(manifest)
|
146
146
|
}.to_not raise_error
|
147
147
|
end
|
148
|
+
|
149
|
+
context "using 'pn' format" do
|
150
|
+
it "prints the AST of the given expression in PN format" do
|
151
|
+
expect(parser.dump({ :format => 'pn', :e => 'if $x { "hi ${x[2]}" }' })).to eq(
|
152
|
+
'(if {:test (var "x") :then [(concat "hi " (str (access (var "x") 2)))]})')
|
153
|
+
end
|
154
|
+
|
155
|
+
it "pretty prints the AST of the given expression in PN format when --pretty is given" do
|
156
|
+
expect(parser.dump({ :pretty => true, :format => 'pn', :e => 'if $x { "hi ${x[2]}" }' })).to eq(<<-RESULT.unindent[0..-2])
|
157
|
+
(if
|
158
|
+
{
|
159
|
+
:test (var
|
160
|
+
"x")
|
161
|
+
:then [
|
162
|
+
(concat
|
163
|
+
"hi "
|
164
|
+
(str
|
165
|
+
(access
|
166
|
+
(var
|
167
|
+
"x")
|
168
|
+
2)))]})
|
169
|
+
RESULT
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context "using 'json' format" do
|
174
|
+
it "prints the AST of the given expression in JSON based on the PN format" do
|
175
|
+
expect(parser.dump({ :format => 'json', :e => 'if $x { "hi ${x[2]}" }' })).to eq(
|
176
|
+
'{"^":["if",{"#":["test",{"^":["var","x"]},"then",[{"^":["concat","hi ",{"^":["str",{"^":["access",{"^":["var","x"]},2]}]}]}]]}]}')
|
177
|
+
end
|
178
|
+
|
179
|
+
it "pretty prints the AST of the given expression in JSON based on the PN format when --pretty is given" do
|
180
|
+
expect(parser.dump({ :pretty => true, :format => 'json', :e => 'if $x { "hi ${x[2]}" }' })).to eq(<<-RESULT.unindent[0..-2])
|
181
|
+
{
|
182
|
+
"^": [
|
183
|
+
"if",
|
184
|
+
{
|
185
|
+
"#": [
|
186
|
+
"test",
|
187
|
+
{
|
188
|
+
"^": [
|
189
|
+
"var",
|
190
|
+
"x"
|
191
|
+
]
|
192
|
+
},
|
193
|
+
"then",
|
194
|
+
[
|
195
|
+
{
|
196
|
+
"^": [
|
197
|
+
"concat",
|
198
|
+
"hi ",
|
199
|
+
{
|
200
|
+
"^": [
|
201
|
+
"str",
|
202
|
+
{
|
203
|
+
"^": [
|
204
|
+
"access",
|
205
|
+
{
|
206
|
+
"^": [
|
207
|
+
"var",
|
208
|
+
"x"
|
209
|
+
]
|
210
|
+
},
|
211
|
+
2
|
212
|
+
]
|
213
|
+
}
|
214
|
+
]
|
215
|
+
}
|
216
|
+
]
|
217
|
+
}
|
218
|
+
]
|
219
|
+
]
|
220
|
+
}
|
221
|
+
]
|
222
|
+
}
|
223
|
+
RESULT
|
224
|
+
end
|
225
|
+
end
|
148
226
|
end
|
149
227
|
|
150
228
|
def from_an_interactive_terminal
|