-
Notifications
You must be signed in to change notification settings - Fork 583
Fix up 2.3.x for new scope #80
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 <[email protected]>
…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
This needs a rebase now that the rename from Seams to Internals has gone into the spec_helper master branch. |
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
Fix up 2.3.x for new scope
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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:
This patch simply implements this across the board.