Commit graph

355 commits

Author SHA1 Message Date
Patrick Carlisle
b93a38c005 Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  Disable tests that fail on 2.6.x due to #15912
2012-08-10 11:52:03 -07:00
Patrick Carlisle
e27eccb356 Disable tests that fail on 2.6.x due to #15912
In Puppet 2.6.x there is a bug where a function may be incorrectly detected as
an rvalue when it is not, or not detected when it is. This means that in tests
the correct syntax for calling a function will be rejected. This disables
those tests on 2.6.x, as there is no straightforward way to write them to be
compatible with both 2.6.x and newer versions of Puppet.
2012-08-10 11:43:36 -07:00
Patrick Carlisle
424b56da61 Make sure functions are loaded for each test
The test_helper code in Puppet now resets function state between each test.
This patch fixes two spec files where the function was not actually loaded in
the tests, causing them to fail.
2012-08-09 14:51:37 -07:00
Patrick Carlisle
94c96f8035 Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  Use rvalue functions correctly
2012-08-09 14:51:33 -07:00
Patrick Carlisle
09322ad943 Use rvalue functions correctly
A bug fix in Puppet exposed that several tests were using rvalue functions
incorrectly (this was not properly checked by puppet before). This fixes those
tests.
2012-08-09 14:49:51 -07:00
Jeff McCune
effdfb8450 Merge branch 'maint/2.3.x/fix_rspec_puppet_load_order_issue' into 2.3.x
* maint/2.3.x/fix_rspec_puppet_load_order_issue:
  (Maint) Don't mock with mocha
2012-07-23 15:55:08 -07:00
Jeff McCune
fd2ce0d247 (Maint) Don't mock with mocha
Without this patch applied the stdlib module has load-order issues with mocha
and rspec-puppet.  The root cause has yet to be determined, but we've narrowed
it down to this description:

  "If any rspec-puppet example groups run before parser function example groups
   and the parser function example groups use mock() then you'll get this error:"

You can exercise this explicitly with:

    rspec -fd spec/unit/puppet/{provider,type,parser}

This will ensure rspec runs all of the provider and type spec tests, which are
rspec-puppet ones, before the parser function specs are run.  I should also
note we empted out the test in the file_line provider to be nothing except an
empty describe block and this was still sufficient to trigger the load order
error described here.

    Failures:

      1) function_get_module_path when locating a module should be able to find module paths from the modulepath setting
         Failure/Error: mod = mock("Puppet::Module")
         NoMethodError:
           undefined method `mock' for #<RSpec::Core::ExampleGroup::Nested_14::Nested_1:0x107b946c0>
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:21
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:29

      2) function_get_module_path when locating a module should be able to find module paths when the modulepath is a list
         Failure/Error: mod = mock("Puppet::Module")
         NoMethodError:
           undefined method `mock' for #<RSpec::Core::ExampleGroup::Nested_14::Nested_1:0x107b81ea8>
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:21
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:34

      3) function_get_module_path when locating a module should respect the environment
         Failure/Error: mod = mock("Puppet::Module")
         NoMethodError:
           undefined method `mock' for #<RSpec::Core::ExampleGroup::Nested_14::Nested_1:0x107b6e808>
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:21
         # ./spec/unit/puppet/parser/functions/get_module_path_spec.rb:40

    Finished in 1.53 seconds
    326 examples, 3 failures, 1 pending

Paired-with: Andrew Parker <andy@puppetlabs.com>
2012-07-23 15:47:51 -07:00
Jeff McCune
731c07e876 Merge pull request #80 from jeffmccune/fix/2.3.x/go_green
Fix up 2.3.x for new scope
2012-07-23 09:25:34 -07:00
Jeff McCune
c1297755d4 (Maint) Fix up the get_module_path parser function
This patch switches the spec tests for the get_module_path function to
use mock objects.  The underlying Puppet::Module.find method has
reasonable test coverage inside of Puppet core so we might as well break
the tight dependency while we're fixing up the specs to use the new
parser scope.

The behavior of the parser function itself should still have complete
coverage even though the tests have switched to mock the implementation
inside of Puppet.
2012-07-23 09:21:22 -07:00
Jeff McCune
98ff3abd09 (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (2.3.x)
This patch is the same approach as the one that want into 2.2.x.  It
covers the functions in 2.3.x that do not exist in 2.2.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.
2012-07-23 09:13:08 -07:00
Jeff McCune
f3caf5f493 Merge branch '2.2.x' into maint/2.3.x/merge_up_2.2.x
* 2.2.x:
  (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
  (Maint) Fix interpreter lines
2012-07-23 09:00:11 -07:00
Jeff McCune
a1bab586ba Merge pull request #81 from jeffmccune/maint/2.2.x/rename_seams_to_internals
(Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
2012-07-23 08:51:13 -07:00
Jeff McCune
99f084868b (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
The module PuppetlabsSpec::PuppetSeams has been renamed in the
puppetlabs_spec_helper gem to PuppetlabsSpec::PuppetInternals.

The method to obtain a scope object has also changed slightly.  Without
this patch the spec tests will fail because the stdlib module is not
aligned with the spec helper gem.  This patch fixes the problem by
matching up messages with their receivers in the spec helper library.

Paired-with: Andrew Parker <andy@puppetlabs.com>
2012-07-23 08:35:00 -07:00
Jeff McCune
6a63fdfa53 Merge branch 'fix/2.2.x/make_it_green' into 2.2.x
* fix/2.2.x/make_it_green:
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
  (Maint) Fix interpreter lines
2012-07-19 16:36:26 -07:00
Jeff McCune
8a4e115ccb (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
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::PuppetSeams.parser_scope }

This patch simply implements this across the board.
2012-07-19 16:24:57 -07:00
Jeff McCune
f604bae98c (Maint) Fix interpreter lines
This time around I actually know why I'm doing this thanks to the
reminder from Nick Lewis.

Ruby will replace itself in memory with the executable listed in the
interpreter line if the string "ruby" is not in there.

Since /usr/bin/env rspec doesn't contain the substring "ruby", you can't
actually run ruby -W1 or whatever on the file.

This patch fixes the problem by making sure "ruby" is present,
preventing ruby from replacing itself in memory.
2012-07-19 15:41:41 -07:00
Jeff McCune
730aee4ef9 Update CHANGELOG, Modulefile for 2.3.3 2012-05-23 10:52:41 -07:00
Jeff McCune
92e3e5c0ec Merge pull request #70 from duritong/2.3.x
fix regression in #11017 properly
2012-05-23 10:45:35 -07:00
Peter Meier
f0a62c7dba fix regression in #11017 properly
We need the defaultvalues for that.
2012-05-23 08:17:57 +02:00
Jeff McCune
b4343e67fd Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  Fix spec tests using the new spec_helper
2012-05-11 00:03:31 -07:00
Jeff McCune
7d3433345e Fix spec tests using the new spec_helper
This patch back ports the file from the master branch.  The spec tests
fail without this patch applied.  This should make it easier to setup
Puppet settings using the puppet_spec_helper project.
2012-05-11 00:01:32 -07:00
Jeff McCune
beaa812e10 Update CHANGELOG for 2.3.2 release 2012-05-10 22:19:24 -07:00
Jeff McCune
fb43a6ff2f Merge branch 'fix/2.3.x/file_line_ensure' into 2.3.x
* fix/2.3.x/file_line_ensure:
  Make file_line default to ensure => present
  Memoize file_line spec instance variables
  Fix spec tests using the new spec_helper
2012-05-10 22:13:46 -07:00
Jeff McCune
1373e70639 Make file_line default to ensure => present
The examples in the file_line resource documentation state the following
resource should work:

    file_line { 'sudo_rule':
      path => '/etc/sudoers',
      line => '%sudo ALL=(ALL) ALL',
    }

Without this patch the example does not work because ensure is not set
to present.

This patch fixes the problem by setting the default value of ensure to
present.
2012-05-10 22:04:58 -07:00
Jeff McCune
20aacc5a29 Memoize file_line spec instance variables
This just changes the instance variables to a memoized let block and
gets ride of the before :each block.

The patch has no change in behavior.
2012-05-10 22:04:58 -07:00
Jeff McCune
1ebfa5daea Fix spec tests using the new spec_helper
This patch back ports the file from the master branch.  The spec tests
fail without this patch applied.  This should make it easier to setup
Puppet settings using the puppet_spec_helper project.
2012-05-10 22:04:58 -07:00
Jeff McCune
f84c02011f Merge branch '2.2.x' into 2.3.x
* 2.2.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
2012-04-13 09:56:41 -07:00
Jeff McCune
98aa06468a Revert "Merge remote-tracking branch 'eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests' into 2.2.x"
This reverts commit 40da421c04, reversing
changes made to 69465b0f3e.
2012-04-04 08:56:35 -04:00
Jeff McCune
40da421c04 Merge remote-tracking branch 'eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests' into 2.2.x
* eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests:
  (#13595) initialize_everything_for_tests couples modules Puppet ver
2012-04-04 08:47:06 -04:00
Eric Shamow
3222f35de8 (#13595) initialize_everything_for_tests couples modules Puppet ver
Replace regex used in spec_helper.rb to disallow both Puppet 2.6 and any
2.7 prior to 13.
2012-04-03 23:26:36 -04:00
Jeff McCune
56092811b5 Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  (#13439) Fix MRI 1.9 issue with spec_helper
2012-03-29 23:20:32 -07:00
Jeff McCune
69465b0f3e Merge branch 'ticket/2.2.x/13439_fix_spec_helper_try3' into 2.2.x
* ticket/2.2.x/13439_fix_spec_helper_try3:
  (#13439) Fix MRI 1.9 issue with spec_helper
2012-03-29 23:18:39 -07:00
Jeff McCune
15c5fd1f41 (#13439) Fix MRI 1.9 issue with spec_helper
When using MRI 1.9.x the stdlib spec helper does not invoke because
Puppet.settings.private_methods returns symbols instead of strings.

This is a problem because we need to set default configuration settings
like Puppet[:vardir] when using the compiler.

This patch fixes the issue by simply checking the Puppet version.  This
seems a better choice than rescuing NoMethodError since the method might
be renamed or removed in the future.
2012-03-29 23:18:15 -07:00
Jeff McCune
6065628493 Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  (#13439) Fix test failures with Puppet 2.6.x
2012-03-29 16:55:46 -07:00
Jeff McCune
d22fbe32cd Merge branch 'ticket/2.2.x/13439_fix_spec_helper_try2' into 2.2.x
* ticket/2.2.x/13439_fix_spec_helper_try2:
  (#13439) Fix test failures with Puppet 2.6.x
2012-03-29 16:54:42 -07:00
Jeff McCune
665610baaf (#13439) Fix test failures with Puppet 2.6.x
Without this patch the spec_helper sends a message named
initialize_everything_for_tests to Puppet.settings.  This is a problem
because Puppet 2.6.x does not have this method, only Puppet 2.7.x and
Puppet master have this method at this time and we're getting false
positive test failures.

This patch fixes the problem by looking before we leap.  We test if the
private method exists before calling it.  This works with Ruby 1.8.5 and
onwards and Puppet 2.6, 2.7 and master.

This should fix all of the failures I've caused in Jenkins today.
2012-03-29 16:52:15 -07:00
Jeff McCune
4ab56c385a Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  (#13439) refactor spec helper for compatibility with both puppet 2.7 and master
2012-03-29 16:26:13 -07:00
Jeff McCune
cbdffb711f Merge branch 'ticket/2.2.x/13439_fix_spec_helper' into 2.2.x
* ticket/2.2.x/13439_fix_spec_helper:
  (#13439) refactor spec helper for compatibility with both puppet 2.7 and master
2012-03-29 16:25:55 -07:00
cprice
82194ca7e7 (#13439) refactor spec helper for compatibility with both puppet 2.7 and
master
2012-03-29 16:25:09 -07:00
Jeff McCune
fea0b06bc8 Merge branch '2.2.x' into 2.3.x
* 2.2.x:
  (#13494) Specify the behavior of zero padded strings
  Update CHANGELOG, Modulefile for 2.1.3

Conflicts:
	CHANGELOG
	Modulefile
2012-03-29 15:20:28 -07:00
Jeff McCune
10c793f8f0 Merge branch '2.1.x' into 2.2.x
* 2.1.x:
  Update CHANGELOG, Modulefile for 2.1.3

Conflicts:
	CHANGELOG
	Modulefile
2012-03-29 15:19:21 -07:00
Jeff McCune
60afdeda17 Merge branch 'maint/2.2.x/range_spec_tests' into 2.2.x
* maint/2.2.x/range_spec_tests:
  (#13494) Specify the behavior of zero padded strings
2012-03-29 15:17:48 -07:00
Jeff McCune
61891bbe61 (#13494) Specify the behavior of zero padded strings
Without this patch the specified behavior of strings that are numeric
only and zero padded is unclear and untested in the spec tests.  This is
a problem because it's not clear that range('00', '10') will actually
return [ "0", "1", ..., "10" ] instead of [ "00", "01", ..., "10" ]

This patch addresses the issue by providing explicit test coverage.  If
the string conversion behavior of puppet changes, this test will begin
to fail.
2012-03-29 15:17:30 -07:00
Jeff McCune
a033450ab3 Update CHANGELOG, Modulefile for 2.1.3 2012-03-29 09:43:20 -07:00
Jeff McCune
6b8f9dd329 Update CHANGELOG and Modulefile for 2.3.1 2012-03-13 17:35:43 -07:00
Ken Barber
b4b809ef12 Merge pull request #50 from jeffmccune/ticket/2.3.x/13091_stdlib_throws_a_loaderror_when_running_with_puppet_apply
(#13091) Fix LoadError exception with puppet apply
2012-03-13 17:30:44 -07:00
Jeff McCune
ea43e86516 (#13091) Fix LoadError exception with puppet apply
Puppet apply does not add the stdlib lib directory to the $LOAD_PATH.
This is a problem because the puppet_vardir fact requires the
puppet_settings library to be available for the `with_puppet` utility
method.

Without this patch, puppet apply will result in the following error:

    $ puppet apply --modulepath=/vagrant/modules -e 'notice $puppet_vardir'
    warning: Could not load fact file stdlib/lib/facter/puppet_vardir.rb: no such file to load -- facter/util/puppet_settings
    notice: Scope(Class[main]):
    notice: Finished catalog run in 0.01 seconds

With this patch applied, puppet apply works as expected:

    $ puppet apply --modulepath=/vagrant/modules.pe -e 'notice $puppet_vardir'
    notice: Scope(Class[main]): /Users/jeff/.puppet/var
    notice: Finished catalog run in 0.01 seconds

This patch defensively tries to load facter/util/puppet_settings.  If it cannot
load it, it falls back to trying to explicitly locate and load the library.

Once puppet is fixed such that a modules lib directory is truly in the
$LOAD_PATH, the fall back implementation will no longer be exercised since the
LoadError should not be raised.
2012-03-13 16:44:21 -07:00
Jeff McCune
f7b8ab71cc Update CHANGELOG, Modulefile for 2.3.0 release 2012-03-12 17:45:12 -07:00
Ken Barber
5d1cec8a66 Merge pull request #49 from jeffmccune/bug/2.3.x/fix_absolute_path_error_with_puppet26
(#12357) Fix broken compatibility with Puppet 2.6
2012-03-12 16:12:36 -07:00
Jeff McCune
31944c9863 (#12357) Fix broken compatibility with Puppet 2.6
Without this patch, the previous change set to the
validate_absolute_path() parser function contains Puppet 2.6
incompatible changes.  stdlib 2.x is compatible with Puppet 2.6.  These
changes are a problem because we cannot introduce backwards incompatible
changes in a minor release.

This patch fixes the problem by back porting the implementation of the
`Puppet::Util.absolute_path?` from 2.7.x to the function block itself.

The function block tests to see if `Puppet::Util.absolute_path?` will
respond and if not, falls back to the inline back ported implementation.

The spec tests have been updated to simulate the behavior of Puppet 2.6
even when running with Puppet 2.7.
2012-03-12 15:59:50 -07:00