Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix up 2.3.x for new scope #80

Merged
merged 8 commits into from Jul 23, 2012

Conversation

jeffmccune
Copy link
Contributor

b20d0da (Jeff McCune, 27 minutes ago)
(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.

8fb0a46 (Jeff McCune, 2 hours ago)
(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::PuppetSeams.parser_scope }

This patch simply implements this across the board.

Jeff McCune added 6 commits July 19, 2012 15:41
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.
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.
* fix/2.2.x/make_it_green:
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
  (Maint) Fix interpreter lines
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>
…eams_to_internals

(Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
* 2.2.x:
  (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}
  (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope
  (Maint) Fix interpreter lines
@jeffmccune
Copy link
Contributor Author

This needs a rebase now that the rename from Seams to Internals has gone into the spec_helper master branch.

Jeff McCune added 2 commits July 23, 2012 09:13
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.
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.
jeffmccune pushed a commit that referenced this pull request Jul 23, 2012
@jeffmccune jeffmccune merged commit 731c07e into puppetlabs:2.3.x Jul 23, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants