systemd unit files added on own branch for pull request to satisfy issue 16144 : https://projects.puppetlabs.com/issues/16144
(#16144) Update puppet spec file for fedora 17 and systemd changes

This commit adds some conditional logic to puppet's spec file for fedora 17 and
greater. Specifically, fedora 17 has systemd as the default service, so the
spec will install systemd service files on fedora >= 17, and make sure systemd
reloads its daemons to notice the new puppet service. The same changes are
applied to the puppet-server subpackage. On removal, the systemd services
are removed.
(#15190) Avoid deprecated iconv on Ruby 1.9

This rewrites the encoding conversion in PSON to use `String#encode` rather
than iconv when transforming strings under Ruby 1.9.  That avoids a
deprecation warning.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
(Maint) Make puppet module install --confdir=foo puppetlabs-stdlib work

Without this patch I've been annoyed for quite some time that a simple
`puppet module --confdir=/tmp/puppet install puppetlabs-stdlib` errors
out with the message:

    Err: 'module' has no 'default' action.  See `puppet help module`.

The root cause of this issue is that we overlooked the situation where a
long-form argument such as `--confdir` contains the mandatory argument
in its own string.  We assume the mandatory argument is the next item in
the argument vector, but it may not be the next item if the user
specified the mandatory argument as `--confdir=/tmp/foo`.

This patch fixes the problem by not skipping the next item in this
scenario.
Merge branch 'feature/3.x/15190-avoid-iconv-on-ruby-193' of https://github.com/daniel-pittman/puppet into 3.x

* 'feature/3.x/15190-avoid-iconv-on-ruby-193' of https://github.com/daniel-pittman/puppet:
  (#15190) Avoid deprecated iconv on Ruby 1.9
(Maint) Add test coverage for --confdir=/tmp/puppet patch

I patched --confdir=/tmp/puppet to work but didn't include any test
coverage.  Worse, I didn't figure out why the existing test wasn't
catching the error.

This patch adds two tests.  The first passes with the previous behavior
of `puppet module --confdir /tmp/puppet list`.  The second test failed
without my patch applied for the `puppet module --confdir=/tmp/puppet
list` case, and passes now that the maintenance patch is applied.

There was no test coverage for the situation where global settings such
as `confdir` were provided, only mandatory face specific settings were
covered.
Merge pull request #1166 from haus/ticket/3.x/16144_add_systemd_to_puppet

Ticket/3.x/16144 add systemd to puppet
(Maint) Add tests of passing undef as parameter.

The semantics of passing undef has changed from 2.7, to 3.x. These tests
assert that the behavior is the expected behavior of 3.x.

Reviewed-by: Jeff McCune <jeff@puppetlabs.com>
Merge branch 'undef-parameter-tests' into 3.x

* undef-parameter-tests:
  (Maint) Add tests of passing undef as parameter.
(maint) convert user_role_add_spec to the new format of writing test cases.

This patch converts user_role_add_spec from earlier format of rspec cases
to the new one.
(maint) use described_class.new for getting the provider instance.

Earlier, the provider was instanciated with resource.provider but
the correct style of instanciation is described_class.new(resource)
(maint) add hiera to ext/envpuppet path and libpath

Adding hiera to ext/envpuppet path and libpath so that it wont complain.