Merge branch '2.4.x'

* 2.4.x:
  (#13439) Fix test failures with Puppet 2.6.x
  (#13439) refactor spec helper for compatibility with both puppet 2.7 and master
Merge branch '2.4.x'

* 2.4.x:
  (#13439) Fix MRI 1.9 issue with spec_helper
add a "step" argument to range()

This patch adds an optional "step" argument to the stdlib range()
function.  There is no change to the default behavior of the function;
however, passing a numeric "step" argument invokes the Ruby Range#step
method, e.g.

    range("0", "9", "2")

returns

    [0,2,4,6,8]
(#13693) moving logic from local spec_helper to puppetlabs_spec_helper

This should simplify future compatibility between various versions
of stdlib and various versions of puppet core.
Merge pull request #61 from cprice-puppet/ticket/master/13693-use-puppetlabs-spec-helper

(#13693) moving logic from local spec_helper to puppetlabs_spec_helper
Merge branch '2.3.x'

* 2.3.x:
  Revert "Merge remote-tracking branch 'eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests' into 2.2.x"
  (#13595) initialize_everything_for_tests couples modules Puppet ver
Merge branch '2.3.x'

* 2.3.x:
  Update CHANGELOG for 2.3.2 release
  Make file_line default to ensure => present
  Memoize file_line spec instance variables
  Fix spec tests using the new spec_helper
Merge branch '2.3.x'

* 2.3.x:
  Fix spec tests using the new spec_helper
Merge branch '2.3.x'

* 2.3.x:
  fix regression in #11017 properly
Merge branch '2.3.x'

* 2.3.x:
  Update CHANGELOG, Modulefile for 2.3.3
Update for new gem version of puppetlabs_spec_helper

This updates the Rakefile and spec_helper to use the common versions
available in the puppetlabs_spec_helper rubygem branch. This mostly
just removes a bunch of duplicated code, but it also gives us more
flexibility in how the module is tested in the future.
Require the new puppetlabs_spec_helper gem name
Add support for a 'match' parameter to file_line

This commit adds a new parameter called "match"
to the file_line resource type, and support for
this new parameter to the corresponding ruby
provider.

This parameter is optional; file_line should work
just as before if you do not specify this parameter...
so this change should be backwards-compatible.

If you do specify the parameter, it is treated
as a regular expression that should be used when
looking through the file for a line.  This allows
you to do things like find a line that begins with
a certain prefix (e.g., "foo=.*"), and *replace*
the existing line with the line you specify in your
"line" parameter.  Without this capability, if you
already had a line "foo=bar" in your file and your
"line" parameter was set to "foo=baz", you'd end up
with *both* lines in the final file.  In many cases
this is undesirable.
Merge pull request #75 from cprice-puppet/feature/master/regex-support-for-file-line

Add support for a 'match' parameter to file_line
Merge pull request #73 from branan/use_spechelper_gem

Update for new gem version of puppetlabs_spec_helper
(#2157) Remove facter_dot_d for compatibility with external facts

Since external facts does the same thing as facts_dot_d (except
allow ttl for external facts and allow some Windows executable
external facts), and external facts is the prefered solution,
remove facts_dot_d in the next major relase of stdlib.
(#2157) Update README about facts_dot_d
Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'

* hkenney-ticket/master/2157_remove_facts_dot_d:
  (#2157) Update README about facts_dot_d
  (#2157) Remove facter_dot_d for compatibility with external facts
Merge branch '2.3.x'

* 2.3.x:
  (Maint) Don't mock with mocha
  (Maint) Fix up the get_module_path parser function
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (2.3.x)
  (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
  (Maint) Fix interpreter lines

Conflicts:
	spec/spec_helper.rb
	spec/unit/puppet/parser/functions/get_module_path_spec.rb
(Maint) use PuppetlabsSpec::PuppetInternals.scope (master)

This patch is the same approach as the one that want into 2.3.x.  It
covers the functions in master that do not exist in 2.3.x.

Without this patch all of the spec tests for parser functions in stdlib
would instantiate their own scope instances.  This is a problem because
the standard library is tightly coupled with the internal behavior of
Puppet.  Tight coupling like this creates failures when we change the
internal behavior of Puppet.  This is exactly what happened recently
when we changed the method signature for the initializer of
Puppet::Parser::Scope instances.

This patch fixes the problem by creating scope instances using the
puppet labs spec helper.  The specific method that provides scope
instances in Puppet-version-independent way is something like this:

    let(:scope) { PuppetlabsSpec::PuppetInternals.scope }

This patch simply implements this across the board.

Paired-with: Andrew Parker <andy@puppetlabs.com>