summaryrefslogtreecommitdiff
path: root/spec
AgeCommit message (Collapse)Author
2012-07-23(Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (2.3.x)Jeff McCune
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-23Merge branch '2.2.x' into maint/2.3.x/merge_up_2.2.xJeff McCune
* 2.2.x: (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals} (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (Maint) Fix interpreter lines
2012-07-23(Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals}Jeff McCune
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-19(Maint) use PuppetlabsSpec::PuppetSeams.parser_scopeJeff McCune
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(Maint) Fix interpreter linesJeff McCune
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-05-11Fix spec tests using the new spec_helperJeff McCune
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-10Make file_line default to ensure => presentJeff McCune
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-10Memoize file_line spec instance variablesJeff McCune
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-10Fix spec tests using the new spec_helperJeff McCune
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-04-04Revert "Merge remote-tracking branch ↵Jeff McCune
'eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests' into 2.2.x" This reverts commit 40da421c0480f940638d0db9aabf180500d6ae5c, reversing changes made to 69465b0f3e0c0c5284812bfa76ab8d3c254d10a9.
2012-04-03(#13595) initialize_everything_for_tests couples modules Puppet verEric Shamow
Replace regex used in spec_helper.rb to disallow both Puppet 2.6 and any 2.7 prior to 13.
2012-03-29Merge branch '2.2.x' into 2.3.xJeff McCune
* 2.2.x: (#13439) Fix MRI 1.9 issue with spec_helper
2012-03-29(#13439) Fix MRI 1.9 issue with spec_helperJeff McCune
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-29Merge branch '2.2.x' into 2.3.xJeff McCune
* 2.2.x: (#13439) Fix test failures with Puppet 2.6.x
2012-03-29(#13439) Fix test failures with Puppet 2.6.xJeff McCune
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-29Merge branch '2.2.x' into 2.3.xJeff McCune
* 2.2.x: (#13439) refactor spec helper for compatibility with both puppet 2.7 and master
2012-03-29(#13439) refactor spec helper for compatibility with both puppet 2.7 andcprice
master
2012-03-29Merge branch '2.2.x' into 2.3.xJeff McCune
* 2.2.x: (#13494) Specify the behavior of zero padded strings Update CHANGELOG, Modulefile for 2.1.3 Conflicts: CHANGELOG Modulefile
2012-03-29(#13494) Specify the behavior of zero padded stringsJeff McCune
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-12(#12357) Fix broken compatibility with Puppet 2.6Jeff McCune
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-07(#12357) Add ability to display an error message from validate_reJeff McCune
I've seen a number of times the following error displayed to the end user: validate_re(): "" does not match "^true$|^false$" at /p/t/f.pp:40 This is an absolutely horrific error message. I'm to blame for it. Users stumble over this quite often and they shouldn't have to go read the code to sort out what's happening. This patch makes an effort to fix the problem by adding a third, optional, argument to validate_re(). This third argument will be the message thrown back in the exception which will be displayed to the end user. This sets the stage for nicer error messages coming from modules we write. This patch is backwards compatible but is a new feature.
2012-03-07(#12357) Add validate_absolute_path() functionJeff McCune
This patch adds a new function to validate if a string is an absolute filesystem path or not. The intent of this is to make this functionality generic and reusable. Josh left a comment in another pull request I had: If node_installdir or $node_vardir is not defined, then we should raise an error, otherwise we may create a scheduled task to an untrusted directory. One solution to this comment is to validate the Puppet variable is an absolute path. Examples of this function look like: function_validate_absolute_path Using Puppet::Parser::Scope.new Garbage inputs validate_absolute_path(nil) should fail validate_absolute_path([nil]) should fail validate_absolute_path({"foo"=>"bar"}) should fail validate_absolute_path({}) should fail validate_absolute_path("") should fail relative paths validate_absolute_path("relative1") should fail validate_absolute_path(".") should fail validate_absolute_path("..") should fail validate_absolute_path("./foo") should fail validate_absolute_path("../foo") should fail validate_absolute_path("etc/puppetlabs/puppet") should fail validate_absolute_path("opt/puppet/bin") should fail absolute paths validate_absolute_path("C:/") should not fail validate_absolute_path("C:\\") should not fail validate_absolute_path("C:\\WINDOWS\\System32") should not fail validate_absolute_path("C:/windows/system32") should not fail validate_absolute_path("X:/foo/bar") should not fail validate_absolute_path("X:\\foo\\bar") should not fail validate_absolute_path("/var/tmp") should not fail validate_absolute_path("/var/lib/puppet") should not fail validate_absolute_path("/var/opt/../lib/puppet") should not fail validate_absolute_path("C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise") should not fail validate_absolute_path("C:/Program Files (x86)/Puppet Labs/Puppet Enterprise") should not fail Finished in 0.05637 seconds 23 examples, 0 failures
2012-03-07(maint) Stop printing the directory of spec_helperJeff McCune
Without this patch every rspec run prints out the directory of the spec_helper script. I think this was just a debugging line or whatever that accidentally got added.
2012-03-06Merge pull request #44 from ↵Josh Cooper
jeffmccune/ticket/2.3.x/12357_add_puppet_settings_facts (#12357) Make facter_dot_d look in Puppet[:confdir]/facts.d
2012-03-05(#12357) Add puppet_vardir custom factJeff McCune
Without this patch the PE modules don't have a way to identify a filesystem path where it's OK to place variable data related to managing the target node. This is a problem when a module like pe_compliance needs to write a wrapper script to the node's filesystem. This patch addresses the problem by exposing the node's Puppet[:vardir] setting as a Facter fact. This fact value will be set to `nil` if Puppet is not loaded into memory. If Puppet is loaded, e.g. using `facter --puppet` or using `puppet agent` or `puppet apply` then the fact will automatically set the value to Puppet[:vardir] The value of this setting is subject to Puppet's run_mode. This patch implements a new utility method in the standard library module named `Facter::Util::PuppetSettings.with_puppet`. The method accepts a block and will only invoke the block if the Puppet library is loaded into the Ruby process. If Puppet is not loaded, the method always returns nil. This makes it easy to define Facter facts that only give values if Puppet is loaded in memory.
2012-03-05(#12357) Fix root_home fact on WindowsJeff McCune
Without this patch the root_home fact fails on windows. This patch fixes the problem by only calling methods on the object returned by the `getent passwd root` command if the object evaluates to true. Because there is no root account on Windows the code block simply returns `nil` which makes the Facter fact undefined on Windows platforms. The root cause of the failure is that we always expected the command to succeed and return something useful, and it may not on all supported platforms.
2012-02-22(#12776) Added validate_slength function and rspec testChris Spence
This function is used to validate a string is less than a maximum length. The string, or array of strings, is passed as the first argument to the function. The maximum length of the string is passed as the second argument. It is useful to validate, for example, that Puppet is not sending a username to a downstream system that the system cannot cope with, but that might not cause an error message - for example, MySQL will not accept a username of more than 16 characters. This enables a Puppet administrator to validate the data that it may have been passed from upstream through, for example, Hiera.
2012-02-09implement #11017 - make file_line type ensurablePeter Meier
* Implement a simple destroy method. * Add tests for it * Refactor code, so file is actually read only once. However, due to the nature how provider tests are run, we need to ensure that the file is read before we open it to write it.
2012-01-11Merge branch '2.2.x'Jeff McCune
* 2.2.x: Check according to rfc1035 Add additional domain name tests (maint) Memoize scope in domain_name spec
2012-01-11Add additional domain name testsJeff McCune
Without this patch some valid domain names are not covered in the spec tests as Stig Sandbeck Mathisen <ssm@debian.org> points out. This patch adds spec tests for the domains "." and "x.com" which are both valid.
2012-01-11(maint) Memoize scope in domain_name specJeff McCune
This is an opportunity improvement since I'm in the code. Get rid of instance variables in the spec test and replace them with a memo let method block.
2012-01-11Merge branch '2.2.x'Jeff McCune
* 2.2.x: (#11901) Fix sort order error in tests for 'keys' and 'values'
2012-01-11(#11901) Fix sort order error in tests for 'keys' and 'values'Jeff McCune
Between Ruby 1.8.7 p352 and p357 the way arrays were returned when using keys and values in Ruby changed, and due to assumption about the ordering our tests are now failing. This patch fixes the issue by using the =~ operator matcher in rspec. This matcher is implemented as RSpec::Matchers::MatchArray and performs multiset equality matching of arrays. Order doesn't matter, but duplicate values do. This patch also switches @scope instance variables to memoized let methods for clarity in the code. Original Author: Ken Barber Reviewed-by: Nick Lewis This commit closes GH-29
2012-01-11Merge branch '2.2.x'Ken Barber
* 2.2.x: (#11873) time function spec failure on Fixnum matcher
2012-01-10(#11873) time function spec failure on Fixnum matcherKen Barber
The rspec code for the time function was trying to match the type to be a 'Fixnum'. Ruby will sometimes make this a 'Bignum' depending on its internals and we can't rely on this to be true all the time. This patch just makes sure the type is an integer instead.
2012-01-09New str2saltedsha512 function for OS X PasswordsGary Larizza
OS X 10.7 introduced salted-SHA512 password hashes as opposed to the older LANMAN + SHA1 hashes. To assist in generating properly-formatted password hashes, this commit adds the str2saltedsha512() function which accepts a single string argument (the password) and returns a salted-SHA512 password hash which can be fed as the password attribute of a user resource in OS X 10.7. Spec tests are also added to ensure that functionality isn't broken with future commits.
2011-11-14(#10802) add new function get_module_pathDan Bode
This commit adds a new function called get_module_path. get_module_path returns the absolute path of a specified module. The code and functionality is very similar to how templates and files are detected inside of modules. the function has been tested against puppet 2.6.10 and 2.7.x
2011-10-10(Maint) Add watchr autotest scriptJeff McCune
This patch adds a watchr script to autotest the stdlib module. To use: % watchr spec/watchr.rb
2011-10-10(Maint) Make rspec tests work with Puppet 2.6.4Jeff McCune
The behavior without this patch applied is that the rspec tests do not function with Puppet 2.6.4. This patch back-ports some fixes introduced in Puppet 2.7.x to the spec_helper to make the tests work as expected on Puppet 2.6.4. The specific patches back ported from Puppet are: * 2ae88067 (Puppet::Util::ExecutionStub.reset) * cf183534 (Switched spec tests to use a class rather than Array as the log destination.)
2011-10-10(#10007) Revert "Merge pull request #13 from ↵Jeff McCune
kbarber/issue/master/8925-user_ssl_certs" This reverts commit 14852e0259e1e43371dbcb2675e00c6d6e614f05, reversing changes made to a95dccd464b55945feb8bcf7483f777c25164115. This is to fix the broken build (failing tests) as per #8925 and #10007
2011-10-04Merge pull request #13 from kbarber/issue/master/8925-user_ssl_certsJames Turnbull
(#8925) Added new function called 'get_certificate' for retrieving
2011-10-03(#9859) Add root_home fact and testsJeff McCune
Without this patch applied, the stdlib module does not provide a root_home fact. This fact is necessary to easily determine the root account home directory on platforms Puppet is supported on. The major variations this fact address are: --- solaris: / linux: /root macosx: /var/root Spec tests using rspec have been provided as well to cover these three general cases. Windows tests are marked as pending.
2011-08-17(#8925) Added new function called 'get_certificate' for retrievingKen Barber
certificates from a CA (or locally). This function works by either obtaining the file locally or remotely based on Puppets configuration. Also added get_pubkey which wraps get_certificate and extracts the public key.
2011-08-08Merge branch 'issue/master/8797_puppetlabs-functions_merge'Jeff McCune
Closes pull request #12 Reviewed-by: Jeff McCune Verified all spec tests pass using rspec **/*_spec.rb * issue/master/8797_puppetlabs-functions_merge: (164 commits) * Moved kwalify to puppetlabs-kwalify project * Re-arranged tests in line with puppetlabs-stdlib Prep for stdlib merge * Renamed load_yaml & load_json to parseyaml & parsejson * Renamed is_valid_* functions and remove the 'valid_' Fix some ruby 1.9.2 issues. (#3) Provide documentation for remaining functions. (#3) Apply missing documentation to more functions. Remove rand. Some improvements to values_at tests. (#1) provide some more detailed tests for a number of functions. Removed date stub since this functinality is available in strftime anyway. (#2) fix is_string finally so it also makes sure numbers return false. (#2) unstub is_valid_domain_name Added doc strings for first five functions Removed join_with_prefix. (#2) unstub is_valid_mac_address. Allow sort for strings. Count functionality overlaps with size - so removing it. Removed crontab functions instead of unstubbing them. Removed load_variables. load_yaml is sufficient to solve this problem on its own. Remove is_valid_netmask instead of unstubbing. Doesn't seem like a sensible function on its own. (#2) unstub is_numeric function. ...
2011-08-05(#8797) Merge puppetlabs-functions into puppetlabs-stdlibKen Barber
It was decided that maintaining puppetlabs-functions and puppetlabs-stdlib was duplication as both are trying to achieve the same goal. This patch provides a merge of the puppetlabs-functions into the puppetlabs-stdlib repository, with history preservation. The following conflicts were found and resolved: * LICENSE file from functions was used as it aligns with ASL usage instructions and contains relevant copyright information: http://www.apache.org/licenses/LICENSE-2.0.html * Used spec_helper.rb from functions - this is what Puppet core uses and doesn't break tests. * Merged .gitignore and spec.opts options.
2011-08-05* Moved kwalify to puppetlabs-kwalify projectKen Barber
* Re-arranged tests in line with puppetlabs-stdlib
2011-08-05Prep for stdlib mergeKen Barber
* Renamed load_yaml & load_json to parseyaml & parsejson * Renamed is_valid_* functions and remove the 'valid_'
2011-08-04(#8792) Rename whole_line type to file_lineJeff McCune
Without this patch the resource whole_line would be included in the stable stdlib module shipping in PE 1.2. Ideally the name will be stable and unchanging in the future. There was quite a bit of concern over whole_line being an unwise name. file_line appears to be the most suitable name and least likely to need another rename in the future.
2011-08-04Merge branch 'refactor/master/8665_whole_line'Jeff McCune
* refactor/master/8665_whole_line: (#8665) Change type from append_line to whole_line
2011-08-04(#8678) Add validate_array and validate_string functionsJeff McCune
The accounts module is making use of validate_array() and validate_string() which do not exist int he stdlib module without this patch. This patch adds the two functions to the stdlib with unit tests. Reviewed-by: Dan Bode