(PUP-2432) Simplify spec_helper in module skeleton
(PUP-2871) Add :install_options and :uninstall_options to the pacman provider

Without this patch, a user unfamiliar with the pacman provider might write
attempt to add flags to install and uninstall, not knowing that they will fail.
This patch adds support for these two flags to ensure a more cohesive experience
across puppet.
(PUP-2878) file conflict upgrading from 2.7.26 to 3.6.2

Currently, upgrades from 2.7.26 to 3.6.2 break because of a file
conflict. It seems that as of Puppet 3.3.0, the manpages changed from
being owned by the puppet package, to being owned by the puppet-common
package. This change was initially done to allow upgrades from Debian
packages to ours. However, changing which package owns a given file
makes upgrades difficult. This commit adds in conflicts to allow smooth
upgrades from puppet packages prior to the manpage change to the current
version.
(PUP-2732) Use less restrictive exec user validation

Without this patch Puppet agent validates the user attribute of exec resource that way, that it's fully unsupported if running without root user. Doing so, the following error message is printed and execution aborted:
"Only root can execute commands as other users". This patch ignores a given user to run the exec as if it's the same as the user actually running the Puppet agent process.
See https://tickets.puppetlabs.com/browse/PUP-2732 for more information.
(maint) Add real case for autosign cert generation test

Nate Wolfe noticed what looks like a copy paste error in my original
ssl/puppet_cert_generate_and_autosign.rb test that was repeating the
cert generate with autosign false and dns_alt_names case for the
autosign true and dns_alt_names case. This commit replaces that with
tests using autosign true, which on master with ca fails, and requires
manual signing with --allow-dns-alt-names flag.
(PUP-2918) Clarify missing Modulefile error

Prior to this commit, when building a module without a Modulefile or metadata.json,
the builder would blow up with a cryptic 'Unable to find module root at DIRECTORY'
It's not entirely clear what that means to an end user.
This commit clarifies that metadata.json or a Modulefile are what need to be found
at the module root. Also removes some duplicated logic for checking module root.
(doc) Document user :system param only applies on create
(maint) Always pass an arg to shared behavior block
(maint) Require rspec/mocks over deprecated spec/mocks
Merge pull request #2831 from melissaanne/ticket/stable/fix-conflict

(PUP-2878) file conflict upgrading from 2.7.26 to 3.6.2
(maint) Never require rspec/mocks

We use mocha for stubbing and mocking; requiring the rspec mocks as well
will break things in RSpec 2.14.
(maint) Avoid rspec examples using variable behavior

Given an object with an attr_accessor and using an example shortcut like so:

    subject { metadata.to_hash }

    its(:keys) do
      subject.sort.should == %w[ name version author summary license source issues_url project_page dependencies ].sort
    end

The value of subject in the example varies between RSpec 2.11 and 2.13.
This commit removes the shortcut in favor of a slightly longer but more
compatible test that explicitly invokes the #keys method and does an
expectation on that.
(maint) Remove deprecated `.to_not raise_error(args)` calls

From RSpec:

    DEPRECATION: `expect { }.not_to raise_error(SpecificErrorClass, message)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead.

This commit removes all args from `.to_not raise_error` expectations.
(maint) Remove nonfunctional directoryservice test

It's not possible to test
Puppet::Provider::NameService::DirectoryService without stubbing out a
huge amount of code, which is done by a different test. The removed test
behaved almost identically like the following test so we can remove this
without losing test coverage.
(maint) Replace invocations of `subject` and `let` in `before(:all)`
(maint) Update rspec version to 2.14
(PUP-2919) Enable win32-taskscheduler Ruby2 specs

 - Previously removed in 76cde1ba547b6aed12e8de0b4ec3d7339789ce01 as
   part of https://github.com/puppetlabs/puppet/pull/2846
 - Win32-taskscheduler is Windows x64 / Ruby 2 compatible, and therefore
   these tests can be re-enabled
(PUP-2919) Enable win32-eventlog Ruby2 specs

 - Previously removed in 9449105658cf9789b94cdae096fd904b92828fb8 as
   part of https://github.com/puppetlabs/puppet/pull/2846
 - Win32-eventlog is Windows x64 / Ruby 2 compatible, and therefore
   these tests can be re-enabled
(PUP-2732) Add tests for user validation

This addes some tests around the validation for the user of the exec
type. The user is only allowed to be set to a user different from the
current user if it is running as root on a POSIX system.
(maint) Use parameter matchers in tests

This uses the mocha parameter matchers in the tests rather than a custom
with() block. This is a little shorter and should provide better error
messages when it fails.