Merge pull request #470 from daniel-pittman/bug/2.7.x/12479-bad-undef-vs-regex-match-behaviour

Bug/2.7.x/12479 bad undef vs regex match behaviour
Merge pull request #597 from stschulte/ticket/2.7.x/8193

ssh_authorized_keys should support new key types
(#13439) refactor spec helper for spec compatibility between 2.7 and
master
Merge pull request #602 from cprice-puppet/bug/2.7.x/13439-spec-api-incompatibility

(#13439) refactor spec helper for spec compatibility between 2.7 and master
Monkey patch FileUtils.mv in Ruby 1.8.5

The FileUtils.mv method in Ruby 1.8.5 can't mv directories across
devices.  File.rename causes "Invalid cross-device link" errors, which
is rescued, but in Ruby 1.8.5 it tries to recover with a copy and
unlink, but the unlink causes the error "Is a directory".  In newer
Rubies remove_entry is used, so the implementation in this patch is
what's used in Ruby 1.8.7 and Ruby 1.9

This was an issue in installing modules using `puppet module install`
since the module is extracted to a temporary directory and then moved to
the modulepath.
(#13367) Patch SemVer to permit ranges including pre-release components.
Make core changes needed for the puppet module tool

This includes changes to portions of the Puppet code base that have some
use by other parts of Puppet than the module tool, but are necessary for
the module tool work.
Add Module Tool

This rather large commit includes all the work needed to get the `puppet
module` face in Puppet with all it's actions.  I tried to break this up
into smaller commits, but it was difficult to do so and keep the
individual commits in a state that had passing specs since many changes
in shared module_tool code affected multiple actions.  This code was
developed in an integration branch over a few montsh and is now being
merged back into Puppet core in the same state that shipped with Puppet
Enterprise 2.5.

The work here was done by Pieter van de Bruggen <pieter@puppetlabs.com>,
Kelsey Hightower <kelsey@puppetlabs.com> and myself.
Merge pull request #613 from puppetlabs/geordi

Add Module Tool
(#9167) Do not send email when nothing changes

Without this patch the tagmail report sends an email even when there are
no changes or resources out of sync. This has the undesired effect of
sending emails after every Puppet run.

When there are no changes or out of sync resources, tagmail logs a
notice stating the fact and skips processing logs and sending emails.

This patch includes new spec tests for the changes in behavior.
(#13737) Swap build_tree and format_tree method names

The `Puppet::Module::Tool.build_tree` and
`Puppet::Module::Tool.format_tree` method names do not match their
behavior. Both methods actually do the inverse,
`Puppet::Module::Tool.build_tree` formats a tree for output and
`Puppet::Module::Tool.format_tree` builds the tree that is passed to
`Puppet::Module::Tool.build_tree`. Even this commit message is
confusing.

This patch swaps the names and updates the related specs.
(#13636) Update Module Face copyright date

Quite a bit of code changed for the module tool in 2012, updating the
copyright to reflect that fact.

This patch also loosens the restrictions on what is considered a valid
copyright date; removing the limited of 2011 to 20xx. Sucks for the
developer in the year 2100.
Merge pull request #623 from kelseyhightower/ticket/2.7.x/13636_update_module_face_copyright_date

(#13636) Update Module Face copyright date
(#13567) Fix create_resources name parameter bug

Previously, the create_resources function would inconsistently override
name parameters provided by the user, setting the name parameter equal
to the resource title. This commit modifies create_resources such that
when provided, user-supplied name parameters are used correctly and
consistently.

Add name parameter tests for create_resources.
Merge pull request #633 from cprice-puppet/bug/2.7.x/13567_fix_create_resources_name_param

(#13567) Fix create_resources name parameter bug
fix bug in Util#symbolizehash!

The method Puppet::Util.symbolizehash! was modifying a hash
during iteration; this is (sanely, thankfully) not legal
in ruby 1.9.  This has been broken in our code for quite
some time, but we hadn't noticed because nothing was calling
this method.  A recent commit introduced code that calls it,
highlighting the bug, which is fixed by this commit.
Merge pull request #635 from cprice-puppet/bug/2.7.x/util_symbolize_hash

fix 2.7.x specs on ruby 1.9
Merge pull request #528 from stschulte/ticket/2.7.x/1076

#1076: User Type: Show warning if an empty group is specified
Fixup tests to work on CentOS 5

Several tests were failing because the depended on being able to find a
user provider. On CentOS 5 this didn't work because the provider that
should be used (the useradd provider) is not considered suitable when it
gets run as a non-privaleged user because the useradd and related
commands are not executable.

The user_spec.rb and group_spec.rb test didn't need the tests that were
failing because they were testing functionality that is already tested
by the Type base class's own tests.

The ral_spec.rb needed more mocking of the things it was using in order
to abstract it from the system on which it is running.

The resources_spec.rb got a small cleanup and was fixed by reordering
the data loading in Puppet::Type::Resources so that it doesn't load
information about a user until it needs to.

Conflicts:

	spec/unit/type/resources_spec.rb
Merge pull request #638 from zaphod42/bug/2.7.x/13655-test-failures-on-centos5

(#13655) test failures on centos5 on 2.7.x branch