summaryrefslogtreecommitdiff
path: root/spec/unit/puppet
AgeCommit message (Collapse)Author
2013-09-17(#20681) fix behaviour of delete_valuesLeonardo Rodrigues de Mello
The issue #20681 describe the error of delete() function removing the elements from the origin array/hash/string. This issue affected other delete functions. Because ruby delete and delete_if functions make destructive changes to the origin array/hash. The delete_undef_values removed elements from the origin hash and this is not the desired behaviour. To solve this, we should dup or clone the hash before using the delete or delete_if ruby functions. This fix the problem and add unit tests, so we could enforce this behaviour and prevent regressions.
2013-09-16Merge pull request #179 from lmello/function_pick_error_msgAdrien Thebo
enhanced the error message of pick function.
2013-09-16bug # 20681 delete() function should not remove elements from original listLeonardo Rodrigues de Mello
The setup: list with 3 elements, delete one: $test_list = [‘a’, ‘b’, ‘c’] $test_deleted = delete($test_list, ‘a’) Print out the elements in ‘test_deleted’: notify { ‘group_output2’: withpath => true, name => “$cfeng::test_deleted”, } Notice: /Stage[main]/Syslog/Notify[group_output2]/message: bc Good! Run-on output shows that ‘a’ was deleted Print out the elements in ‘test_list’: notify { ‘group_output1’: withpath => true, name => “$cfeng::test_list”, } Notice: /Stage[main]/Syslog/Notify[group_output1]/message: bc WHAT!? 'a' was deleted from ‘test_list’ as well! Expected abc as output! This behaviour is confirmed for string, hash and array. This is fixed on this commit, I had added two spec tests to cover that cases. bug #20681 spec test for delete() function. I had forgot in the last commit the spec test for hash in the delete function. bug # 20681 delete() function change aproach. Instead of rejecting elements from the original list, we use collection = arguments[0].dup . then latter we could continue to use delete and gsub! on collection without impact on original argument. this is a better solution than the previous one, and works on ruby 1.8.7, 1.9.3 and 2.0.0. The previous solution does not work on ruby 1.8.7. delete function remove typo whitespace. fix typo whitespaces.
2013-09-16enhanced the error message of pick function.Leonardo Rodrigues de Mello
When pick function fail return a better error message like the other stdlib functions, indicating that the error is on function pick. This would help people that see the error to identity it is related to a incorrect use of stdlib function pick, instead of having to grep all puppet libraries and manifests source for the old message. I had also changed the spec test. pick function change spec as suggested GH-179 Fix the spec test to use expect {}.to instead of lambda {}.should as explained by Adrienthebo. "Using expect { }.to is preferred over lambda { }.should. In addition it's best practice to do a string match against the error message to ensure that we're catching the right error, instead of any error of the right type." Also fixed a typo on the error message, it was missing one space. pick function stylish fix as suggested on GH179
2013-08-29(maint) Improve the tests and readability of file_lineJeff McCune
Without this patch the implementation of the file_line provider is a bit convoluted with respect to the newly introduced "after" parameter. This patch addresses the problem by separating out the concerns of each case into their own methods of handling the behavior with the match parameter, handling the behavior with the after parameter, or simply appending the line.
2013-08-29Update file_line resource to support 'after'.Dan Prince
When adding new lines to a file the 'after' option can be useful when you need to insert file lines into the middle of a file. This is particularly helpful when using file_line with sectioned config files. NOTE: the after option only works when adding new lines. If you are updating an existing (matched) line it will simply modify it in place. This assumes it was in the right place to begin with.
2013-08-28Merge pull request #172 from ptomulik/fix/delete_xxx_specAdrien Thebo
small fix to delete_values_spec.rb and README.markdown
2013-08-14small fix to delete_values_spec.rb and README.markdownPaweł Tomulik
2013-08-12(maint) refactor validate_slength testsAdrien Thebo
2013-08-06Merge pull request #167 from mhellmic/minlengthAdrien Thebo
extend the validate_slength function to accept a minimum length
2013-08-06changed the validate_slength function to accept a min lengthMartin Hellmich
An optional third parameter can be given a min length. The function then only passes successfully, if all strings are in the range min_length <= string <= max_length update and fix function and unit tests the check for the minlength has to be written differently because 0 values should be possible. We now check a) if the input is convertible, and throw a ParseError and b) if the input .is_a?(Numeric) and ask for a positive number it's not as clean as for maxlength, but keeps a similar behaviour refined the error checking for the min length try to convert to Integer(args[2]) and fail, if it's not possible changed the tests accordingly to the new parameter checking
2013-08-05added delete_values() and delete_undef_values() functionsPaweł Tomulik
2013-07-22Adjust to use default URI.escape escape listTomas Doran
Conform to RFC per comments on: https://github.com/puppetlabs/puppetlabs-stdlib/pull/164 Conflicts: lib/puppet/parser/functions/uriescape.rb spec/unit/puppet/parser/functions/uriescape_spec.rb
2013-07-11(#21416) Allow file_line to match multiple linesAlex O'Rielly
Without this commit the file_line type will outright fail if multiple lines match the given regex. This commit allows the file_line type and provider to optionally match and modify all matching lines. Changeset rebased into a single commit by Adrien Thebo <adrien@puppetlabs.com>
2013-06-07Merge pull request #158 from wfarr/validate_ipAdrien Thebo
[#20862] Add functions to validate ipv4 and ipv6 addresses
2013-05-28(maint) Remove syntax decoration from range_specAdrien Thebo
2013-05-28(maint) Clean up range_spec error expectationAdrien Thebo
Replace `lambda` with `expect` for making an error expectation Add an explicit error message in expectation
2013-05-28(maint) Use present tense in range_spec messagesAdrien Thebo
2013-05-28(maint) split up range spec with describe blocksAdrien Thebo
2013-05-28Merge remote-tracking branch 'pr/56' into pull-56Adrien Thebo
Conflicts: lib/puppet/parser/functions/range.rb spec/unit/puppet/parser/functions/range_spec.rb
2013-05-24Adding base64 functionfiddyspence
Adding base64 function and spec test. Included a bonus fix to validate_slength_spec.rb to put the expectation message in the right place.
2013-05-22Don't run certain tests under 1.8.7Will Farrington
2013-05-22Update ipv6 examplesWill Farrington
2013-05-22Add functions to validate ipv4 and ipv6 addressesWill Farrington
2013-05-15Merge pull request #155 from AlexCline/feature/master/array_comparison_functionsHailee Kenney
(#20684) Add array comparison functions, difference, intersection and union
2013-05-15Merge pull request #147 from mhellmic/masterAdrien Thebo
don't fail on undef variable in merge
2013-05-13(#20684) Add array comparison functions, difference, intersection and union.Alex Cline
Included is code, tests and documentation for the difference, intersection and union functions for comparing arrays.
2013-05-08Added rspec tests for the new behaviour of merge accepting empty stringsMartin Hellmich
added test that '' is accepted changed a test that a number is correctly rejected with a type error
2013-05-02Add a dirname functionRaphaël Pinson
2013-04-10(maint) Add the behavior for count() with arrays and hashesJeff McCune
Without this patch the expected behavior of the count() function when dealing with an out of bound array index and with a hash key that does not exist is implicitly encoded in the spec examples. This is a problem because the expected behavior is not clear for something similar to the following example: node default { $ary = [ 1, 2, 3 ] $ary_undef = $ary[100] $hsh = { 'one' => 1 } $hsh_undef = $hsh['dne'] $count = count(['hi', $ary_undef, $hsh_undef]) notice "Count is ${count}" } This patch addresses the problem by making the expected behavior explicit in the examples.
2013-04-10Add a count functionErik Dalén
Similar to the ruby count method on arrays.
2013-04-03(#19998) Implement any2arrayAmos Shapira
This change is to implement a new function "any2array", which will take any argument or arguments and create an array which contains it. If the argument is a single array then it will be returned as-is. If the argument is a single hash then it will be converted into an array. Otherwise (if there are more than one argument, or the only argument is not an array or a hash) the function will return an array containing all the arguments.
2013-04-01Cleanup per adrianthebo suggestionsSteve Huff
* use Float() to process string arguments * get rid of doubly nested arrays * removing needless ternary operator * improving error message handling
2013-03-29(19864) num2bool match fixSteve Huff
This is a bit more heavy-handed than I might like, but it does appear to do the right things: * accepts numeric input appropriately, truncating floats * matches string input against a regex, then coerces number-looking strings to int * makes a best effort to coerce anything else to a string, then subjects it to the same treatment * raises an error in the event of incorrect number of arguments or non-number-looking strings I've also included some additional unit tests.
2013-03-29Reworked number-handling logicSteve Huff
No more coercing to String and regex matching. Instead, we now coerce to Integer at the beginning or raise an error if we cannot coerce to Integer. A consequence of this change is that the function will now accept blatantly non-numeric strings as input, and return false. This seems a bit goofy to me, but it's how String#to_i works. If we really don't like this, then I'm open to suggestions.
2013-03-29Enable num2bool to accept numeric inputSteve Huff
Also ignore rspec fixtures directory
2013-03-27Merge branch '4.x'Adrien Thebo
2013-03-27Merge branch '2.x' into 3.xAdrien Thebo
2013-03-27Allow comparisons of Numeric and number as StringErik Dalén
Puppet passes numbers as String to functions, but it makes more sense to compare them as Numeric. But sometimes Puppet passes them as the wrong type, see: https://projects.puppetlabs.com/issues/19812
2013-03-26add suffix function to accompany the prefix functionRichard Soderberg
2013-03-19Add floor function implementation and unit testsKristof Willaert
2013-03-18(#13610) Add is_function_available to stdlibEric Shamow
This function provides a simple wrapper around Puppet::Parser::Functions.function for access within Puppet manifests. This will allow users to check whether or not a plugin or functionality such as hiera is installed on the server.
2013-03-18Merge branch '4.x'Adrien Thebo
2013-03-18Merge branch '2.x' into 3.xAdrien Thebo
2013-03-18str2bool should return a boolean if called with a booleanJustin Lambert
2013-03-18Fix number of arguments check in flatten()Uwe Stuehler
The function only uses the first argument, so raise an error with too few arguments *and* with too many arguments.
2013-03-18Merge branch '2.x' into 3.xAdrien Thebo
2013-03-18Fix number of arguments check in flatten()Uwe Stuehler
The function only uses the first argument, so raise an error with too few arguments *and* with too many arguments.
2013-02-15Revert "Merge pull request #130 from jhoblitt/has_element"Jeff McCune
This reverts commit f7a18189ec338b01b0fc89d75def832753af3868, reversing changes made to 36a7b29630a4d4de17af79b5dd4e9491ec20b123. I'm reverting this change because of concerns raised by Peter Meier that it duplicates the "in" operator in the DSL. The "in" operator is new information that I did not posses when I made the decision to merge. Because of this new information I'm un-merging and continuing the discussion in the comments of https://projects.puppetlabs.com/issues/19272 Reference: GH-130
2013-02-14(#19272) Add has_element() functionJoshua Hoblitt
It is exceptionally difficult to determine if an array contains an element matching a specific value without an iteration or loop construct. This function is the Puppet equivalent of Array.includes?(foo) in Ruby. The implementation is a verbatim copy of has_key() with the minor modifications needed to support arrays instead of hashes.