Merge pull request #1489 from adrienthebo/maint/master/parsedfile-human-readable-match-variables

(maint) Use MatchData object over ruby global vars
(#14093) Cleanup tests for template functionality

Some of the previous tests were unneeded (check for simple existance) or
mis-named. This cleans those up. A few other tests were trying to
indirectly test many things at once (the ones about access to instance
variables). Instead of the indirect test this splits it into much more
specific tests and statement of behavior.
(#14093) Remove unsafe attributes from TemplateWrapper

The attribute accessor for the :string attribute in the TemplateWrapper
conflicted with a variable being in scope that is named string. The
variable would take precedence and because of the way the
TemplateWrapper accessed the value of the attribute, the variable's
value would be used as the template.

This changes the TemplateWrapper to completely remove :string as an
attribute and only use local variables. This also removes the :file
attribute in favor of a "private"-style naming of the instance variable.
There are no collisions with @__file__ that would cause problems, but
this should reduce the likelihood of them happening in the first place.
(Maint) Remove special handling for symbols in scope

The Puppet::Parser::Scope no longer allows variable names that are not
String objects, so the extra code to handle non-string variable names is
no longer needed.
(#14093) Restore access to the filename in the template

The change to fix certain variables interfering with template evaluation
also removed the accessor method for file. It appears that this is a
mechanism that had been used by others for identifying the name of the
template being evaluated so that they can trace back from a file on a
node to the module and template that created it. This restores that
functionality.
(Maint) Add YARD to TemplateWrapper

This tries to document the methods that should be available to template
authors. Not all methods are listed, since there may be some things that
are mixed in somehow and there are all of the variable accesses provided
via method_missing.
(maint) Kill Puppet::Parser::TemplateWrapper#scope=

This is dead code that is never called based on `ack` and replacing the
method body with an thrown exception.  The scope instance var is stored
in @__scope__ not @scope.
Merge branch 'zaphod42-issue/master/14093-string-overrides-all-template-output'

* zaphod42-issue/master/14093-string-overrides-all-template-output:
  (maint) Kill Puppet::Parser::TemplateWrapper#scope=
  (Maint) Add YARD to TemplateWrapper
  (#14093) Restore access to the filename in the template
  (Maint) Remove special handling for symbols in scope
  (#14093) Remove unsafe attributes from TemplateWrapper
  (#14093) Cleanup tests for template functionality
Merge pull request #11 from puppetlabs/safely-yaml

(#19393) Safely load YAML from the network
(#14093) Cleanup tests for template functionality

Some of the previous tests were unneeded (check for simple existance) or
mis-named. This cleans those up. A few other tests were trying to
indirectly test many things at once (the ones about access to instance
variables). Instead of the indirect test this splits it into much more
specific tests and statement of behavior.
(#14093) Remove unsafe attributes from TemplateWrapper

The attribute accessor for the :string attribute in the TemplateWrapper
conflicted with a variable being in scope that is named string. The
variable would take precedence and because of the way the
TemplateWrapper accessed the value of the attribute, the variable's
value would be used as the template.

This changes the TemplateWrapper to completely remove :string as an
attribute and only use local variables. This also removes the :file
attribute in favor of a "private"-style naming of the instance variable.
There are no collisions with @__file__ that would cause problems, but
this should reduce the likelihood of them happening in the first place.
(maint) Add some YARD to Puppet::Forge
(#19409) Raise Puppet::Forge::Errors::ForgeError on bad HTTP response from forge

When a bad HTTP response indicating an error, or an "error" string in the
response is received from the forge, raise Puppet::Forge::Errors::ForgeError
subclases rather than RuntimeErrors.

This allows the error to be caught by the module face and the error rendered
appropriately, i.e. as JSON if requested by the user.  Else fallback code for
unhandled exceptions is used, causing the exception to only be written via
logging.
Merge pull request #1492 from domcleal/tickets/master/19409-module-errors

(#19409) Raise Puppet::Forge::Error::ForgeError on bad HTTP response from forge
(#14093) Restore access to the filename in the template

The change to fix certain variables interfering with template evaluation
also removed the accessor method for file. It appears that this is a
mechanism that had been used by others for identifying the name of the
template being evaluated so that they can trace back from a file on a
node to the module and template that created it. This restores that
functionality.
Merge branch 'zaphod42-issue/3.1.0/14093-string-overrides-all-template-output' into security/3.1.0/february_code_orange

* zaphod42-issue/3.1.0/14093-string-overrides-all-template-output:
  (#14093) Restore access to the filename in the template
  (#14093) Remove unsafe attributes from TemplateWrapper
  (#14093) Cleanup tests for template functionality
(#16553) Exclude portmap-wait from upstart services

The portmap-wait upstart service is not a service by itself (it's a helper for
the portmap service) and does not respond to the status command, it returns 1
along with an error message. This commit adds portmap-wait to the excludes
method of the init provider, which is also used by the upstart provider to
exclude services from self.instances. This also adds the portmap-wait service
to the upstart provider spec test to verify that it is correctly excluded from
self.instances.
Refactor the ParsedFile provider unit test

The initial implementation of the unit tests for a simple provider
inheriting ParsedFile was imperfect and full of repitition. The
restructuring makes the code reflect the semantics a lot better.

Based on suggestions from Adrien Thebo.
(#14093) Remove unsafe attributes from TemplateWrapper

The attribute accessor for the :string attribute in the TemplateWrapper
conflicted with a variable being in scope that is named string. The
variable would take precedence and because of the way the
TemplateWrapper accessed the value of the attribute, the variable's
value would be used as the template.

This changes the TemplateWrapper to completely remove :string as an
attribute and only use local variables. This also removes the :file
attribute in favor of a "private"-style naming of the instance variable.
There are no collisions with @__file__ that would cause problems, but
this should reduce the likelihood of them happening in the first place.

This commit is modified from the original version to exclude changes to
the specs that were not related to issue #14903, due to the scope code
being so different in 2.7.x than 3.x.
(#14093) Restore access to the filename in the template

The change to fix certain variables interfering with template evaluation
also removed the accessor method for file. It appears that this is a
mechanism that had been used by others for identifying the name of the
template being evaluated so that they can trace back from a file on a
node to the module and template that created it. This restores that
functionality.