Merge pull request #2579 from pvande/maint/master/removing_outdated_PMT_acceptance_test

(maint) Remove an outdated PMT acceptance test.
Merge pull request #2578 from pvande/maint/master/gnu_tar_spec_fails_on_windows

(maint) Adding File.expand_path to the Tar::Gnu specs.
(Maint) Don't expand tar cf - sourcedir path

The Gnu tar implementation executes `tar cf - #{sourcedir}`, which can be a
relative path. So it is not necessary to expand it, and doing so causes the
test to fail on windows.
(PUP-2073) fix for multiple diff_args

Previously, if you specified multiple arguments in the `diff_args`
setting, they would be considered a single argument and quoted to the
diff command. Puppet would then try to execute:

    diff '-u --strip-trailing-cr' pathA pathB

But would silently fail without showing any diffs.

This commit ensures we can handle multiple diff args.
Merge branch 'pr/2477'

* pr/2477:
  (PUP-2073) fix for multiple diff_args

Closes GH-2477
(maint) Update PMT to work around cross-platform issues in Dir.[]

The (unspecified) default behavior of the Dir.[] method, which will implicitly coerce non-String arguments into Strings.  The win32-dir gem
overrides this method and calls String specific methods on the arguments
before any conversions are done.  This change makes our use of the
method in question more explicit, passing Strings instead of Pathname
objects to avoid the interpreter's ire.
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.
(maint) Remove FS redefined constant warnings in spec runs

We define FS as an alias for Puppet::FileSystem in three separate
specs. Unfortunately, describe blocks do not provide any namespacing in
rspec, and this were colliding, issuing two separate warnings for a
redefined constant.  Wrapping each spec in its own module provides
separation and elliminates the warnings.
Merge branch 'pr/2584'

* pr/2584:
  (maint) Adding the Usertrust Network CA certificate.

Closes GH-2584
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.
Merge pull request #2585 from pvande/maint/master/work_around_platform_inconsistencies_in_Dir

(maint) Update PMT to work around cross-platform issues in Dir.[]
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (maint) Adding the Usertrust Network CA certificate.
Merge remote-tracking branch 'upstream/pr/2586'

* upstream/pr/2586:
  (maint) Remove FS redefined constant warnings in spec runs
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.
(PUP-2344) Fix issue with inter-module calls (visibility error)

This fixes the problem where inter-module function calls could
not be made. The main problem was that a function when loaded
was given the public loader and thus had no visibility into its
containing module's dependencies.

The design is that module resolution should be on-demand, only
when something actually needs the proviate loader should it be resolved.
The resolution is triggered by asking for the private loader,  but no
such call was made on the call-path when a function was loaded.

This commit adds the notion of private_loader to the loaders (those that
do not have one respond with self). Those that do either provide the
private loader explicitly (environment loader), or on demand (by
obtaining the private loader from loaders).

This change required tests to be modified since the logic now depends
on :loaders being bound in the Puppet context
logic that made this happen on demand was not implemented
(maint) Remove scaffolding test

This should be tested elsewhere or simply depended on.
(maint) Clean up loader tests a little

Just a bit of combining multiple asserts into one
(PUP-2344) Extract methods to make flow clearer

There were multiple levels happening in the different methods and some
LoD violations. By extracting some methods onto the LoaderModuleData
class and pulling out methods for the different kinds of dependency
loader creations the flow becomes a little clearer.

This also removes the TODOs since I think that the current
implementation is the right way to go.