(PUP-2303) Fix arguments of ArgumentError

Yo dawg, I heard you like ArgumentErrors so I put an
ArgumentError in your ArgumentError.

This makes errors in fileserver config much more readable and
easier to find.
maint: relax spec test of resources

The resource_spec performs some comparisons by using the equal_attributes_of
matcher. This is mostly correct, but considers some instance variables that are
of no consequence to the resource, e.g. @rstype. As a result, internal changes
to Puppet::Resource that may lead to this attribute not being set in a resource
that is generated from YAML would break this expectation:

expected
Foo::Bar[xyzzy]{:name=>"xyzzy", :one=>"test", :two=>"other"}
to equal attributes of
Foo::Bar[xyzzy]{:name=>"xyzzy", :one=>"test", :two=>"other"}

This is not only difficult to debug, it first and foremost misses the intention
of the example, which is only concerned with RAL attributes, not "internal"
instance variables.
(PUP-1381) issue warnings to current users of cron purging

A behavioral fix is planned for the 4.0 release. The final
3.x point releases should issue early warnings to users who employ
the functionality that is about to change.
(PUP-1381) make file_setting spec test more robust

A new call to self.resource_type in Puppet::Resource#initialize can cause
the loading of type code as a side effect. This interfered with the mocking
for the test

Puppet::Settings::FileSetting when being converted to a resource
should manage existent files even if 'create_files' is not enabled

Add a stubs call to one of the uncritical expectations so that
additional calls are not considered as spurious.
(doc) Document key purging in the description of the ssh_authorized_key type

This commit puts an explanation of key purging over where people will likely be
looking for it. It also tightens up the description of the user type's
purge_ssh_keys attribute, and adds an example key to the ssh_authorized_key type
(since the way that type breaks up key lines is somewhat unintuitive).

The example public key is a dud, to prevent accidental access grants.
(PUP-2311) OpenBSD uninstall broken when multiple uninstall_options given
(PUP-2458) Tests for providers inheriting from providers of another type

It's sometimes desirable to create new providers that inherit from providers
of a different type to create more specialised types/providers from a common
base.  This adds tests around this already-present functionality.
(PUP-1597) Fix contain functions lookup of class with leading ::

When the contain function creates edges it looked up resources
without removing the leading :: in the name. The catalog never stores
these, and thus an edge was formed between a resource and nil.

This commit simply removes the ::. There is no checking that a resource
is actually returned since they should all be there due to the call to
include them in the catalog (which would fail if it was not possible to
include them).

A test is also added for the erronous (and now fixed case).
(PUP-2508) Ensure env & trn-uuid are sent when configurer failures occur

Any failure in the configurer #run code might cause the ensure block to
evaluate early, and a report might be sent missing the details of what
the environment and transaction_uuid should be.

This patch moves where the report fields 'environment' and
'transaction_uuid' are set in the configurer code to ensure they are
populated early.

It also ensures the report environment is modified if the catalog or
server specifies it is different to the launched environment. This is
because we change this mid-flight, so our code simplies updates the
report environment when this happens.

Signed-off-by: Ken Barber <ken@bob.sh>
(PUP-2214) Change doc application to use current environment
(PUP-2214) Change parser application to use current_environment

This changes the parser face to use the current_environment instead
of looking up the "configured environment" from settings and then
using that environment.

This also adjust the documentation for the command wrt. use
with --parser future.
(PUP-2214) Change node/clean face to use configured environment
(PUP-2214) Fix failing doc tests

Doc tests with mocking did not work, needed to use a real configured
env.
(PUP-2214) Add comment that node.environment is source of environment

This note is to ensure the lookup of :environment is not changed
to a lookup of :current_environment, since the node's environment
is what is used to determine what the current_environment should be.
(PUP-2014) Make module use current_environment

Module now uses current environment instead of configured
environment when being asked for a module and not supplying
an explicit environment name. It used to lookup to configured
environment giving invoking logic no chance to modify the
default without modifying the setting.
(PUP-2214) Make util rdoc and related parser use :current_environment
(PUP-2214) Add comment about looking up environment for requests.
(PUP-2214) Change autoloader to use current_environment for changed?

This changes the autoloader to use the current_environment as the
environment when performing a changed? operation. (It used to check
if the configured environment was changed).

The complicated bootstrap support still uses lookup of configured
environment as that is the fallback when booting.
(PUP-2214) Add comment what command_line "current_environment" means
(PUP-2214) Add comment about application's use of configured env