Merge branch '2.7rc' into 2.7.x
Merge pull request #1034 from vrthra/maint_fix_locale

(Maint) Fix assertion about locale to correct value.
(#11870) Pass a list of Arrays to multiple_yields

Previously, I was passing a list of packages to mocha's multiple_yields,
which on ruby 1.9.3-p0 results in an unexpected call to the `to_a`
method on the mock object, but on 1.8.7 and later versions of 1.9.3 does
not.

The real issue is that I'm not calling multiple_yields correctly:

  Note that each +parameter_group+ should be an Array representing the
  parameters to be passed to the block for a single yield.

This commit changes it to pass a list of Arrays, where each element in
the array is yielded in turn (as opposed to the Array itself).

This commit also adds names to the mock objects to assist with debugging
when the expectation fails.
Merge branch 'maint/3.x/ruby193p0' into 3.x

* maint/3.x/ruby193p0:
  (#11870) Pass a list of Arrays to multiple_yields
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  (#11870) Pass a list of Arrays to multiple_yields
  (Maint) Fix assertion about locale to correct value.
(Maint) Include the registry key path in the exception

Previously, it wasn't clear from the exception message which registry key
we failed to open.

This commit adds the registry key path to the message to debug issues we
are seeing in CI, but is also generally helpful.
Merge branch 'maint/3.x/include_key_path' into 3.x

* maint/3.x/include_key_path:
  (Maint) Include the registry key path in the exception
(#11870) Ignore uninstall keys that don't exist

Previously, we assumed the 4 combinations of (HKLM or HKCU) and (32 or
64) registry paths always existed. When running puppet in an interactive
logon session, this assumption appears to hold. However, when puppet
runs as a service (under LocalSystem), the assumption fails as the
registry key `Software\Microsoft\Windows\CurrentVersion\Uninstall`
typically does not exist within the HKEY_CURRENT_USER hive. In that
case, we would fail to enumerate the set of installed products.

This commit changes the enumeration code to ignore errors that occur
when the Uninstall key for a particular combination does not exist. This
corresponds the Windows error code ERROR_FILE_NOT_FOUND[1]

However, if an exception occurs for other reasons, e.g.
ERROR_ACCESS_DENIED, then we re-raise the exception and fail.

Also, the inner `open` call should never fail with ERROR_FILE_NOT_FOUND
because we get a list of subkeys for the Uninstall key, and then open each
subkey in turn.

[1] http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Merge branch 'ticket/3.x/11870-skip-absent-keys' into 3.x

* ticket/3.x/11870-skip-absent-keys:
  (#11870) Ignore uninstall keys that don't exist
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  (#11870) Ignore uninstall keys that don't exist
  (Maint) Include the registry key path in the exception
Fix missing forge stub and directory check due to test change in 3.x branch rollup

This fixes a test error that was being thrown by the
modules/install/nonexistent_directory.rb file.

In recent commits we added a more clever way to stub the forge host in 2.7.x,
and obtain a forge hostname. This test however went from being a non-network
capable test to a networked one in 3.x, so the rollup from 2.7.x->3.x meant our
changes weren't applied to this particular case. This patch fixes that by
adding the correct stubbing method 'stub_forge_on' to the top of the file.

It also corrects a negated directory check which creaped in during merge up and
ensures proper cleanup using the new teardown mechanism (like the other tests).
Merge branch 'kbarber-ticket/3.x/pmt_missing_stub_on_test_nonexistent_dir' into 3.x

* kbarber-ticket/3.x/pmt_missing_stub_on_test_nonexistent_dir:
  Fix missing forge stub and directory check due to test change in 3.x branch rollup
Merge branch '3.x'

* 3.x:
  Fix missing forge stub and directory check due to test change in 3.x branch rollup
Merge pull request #1025 from joshcooper/ticket/2.7.x/14283-filetype-uid

(#14283) Fix suntab and aixtab when run as unprivileged user
(Maint) Skip crontab filetype tests on Windows

The tests were failing due to `Puppet::Util.uid` not being implemented on
Windows. Since crontab filetypes are not something that will ever be
supported on Windows, this commit skips those specific tests.
Merge pull request #1036 from haus/ticket/3.x/15852_allow_rc_version_strings

(#15852) Allow rc in Puppet and Facter version strings
(#15852) Remove version check from puppet_spec.rb

This commit removes the version test from puppet, as it doesn't ensure any
functionality of puppet, but only that the version string matches certain
criteria.
Merge pull request #1044 from haus/ticket/3.x/15852_allow_rc_version_strings

(#15852) Remove version check from puppet_spec.rb
(#15752) Remove ca_days

Remove `ca_days` as it has been deprecated and should now be removed
for 3.0. `ca_ttl` should be used in it's place.
(#15750) Remove setting `cacrl` to false

Remove support for setting cacrl to false. Puppet will now just
ignore the CRL.