summaryrefslogtreecommitdiff
path: root/spec/unit/puppet
AgeCommit message (Collapse)Author
2013-02-06validate_cmd: Use Puppet::Util.executeRaphaël Pinson
2013-02-06ammend .should raise_error to .to raise_errorstephen
2013-01-18Add validate_augeas functionRaphaël Pinson
2013-01-18Add validate_cmd functionRaphaël Pinson
2013-01-03Merge branch '4.x'Jeff McCune
* 4.x: Add test/validation for is_float if created from an arithmetical operation Add test/validation for is_integer if created from an arithmetical operation Add test/validation for is_numeric if created from an arithmetical operation
2013-01-03Add test/validation for is_float if created from an arithmetical operationstephen
2013-01-03Add test/validation for is_integer if created from an arithmetical operationstephen
2013-01-03Add test/validation for is_numeric if created from an arithmetical operationstephen
2012-11-28Merge branch '4.x'Jeff McCune
* 4.x: Add reject() function
2012-11-28Add reject() functionPeter Meier
Like the grep function, but we can now reject members of an array based on a pattern.
2012-11-26Merge branch '4.x'Jeff McCune
* 4.x: (#17797) min() and max() functions
2012-11-26(#17797) min() and max() functionsErik Dalén
returns the min or max of all arguments given to them
2012-11-26Merge branch '4.x'Jeff McCune
* 4.x: (#14670) Fixup file_line autorequire specs (#14670) autorequire a file_line resource's path
2012-11-26(#14670) Fixup file_line autorequire specsJeff McCune
Without this patch applied the file_line autorequire examples are failing. This is a problem because the failures are false positives and should be passing given the implementation. This patch fixes the problem by changing the examples to directly test the existence of the relationship by finding it in the list of autorequire relationships.
2012-11-26(#14670) autorequire a file_line resource's pathPeter Meier
If we manage a file we edit with file_line, it should be autorequired by file_line. Without this patch applied the relationship is not automatically setup and the user is forced to manually manage the relationship.
2012-11-20Merge branch '4.x'Jeff McCune
* 4.x: Add join_keys_to_values function
2012-11-20Add join_keys_to_values functionJoshua Harlan Lifton
This commit adds a function that joins each of a hash's keys with that key's corresponding value, separated by a separator string. The arguments are a hash and separator string. The return value is an array of joined key/value pairs.
2012-11-19Merge branch 'jfryman-master'Jeff McCune
* jfryman-master: puppet-lint cleanup
2012-11-19Extend delete function for strings and hashesJoshua Harlan Lifton
Previous to this commit, the delete function only acted on arrays. This commit adds the same functionality for hashes and strings in the obvious way: delete(h, k) would delete the k key from the h hash and delete(s, sub) would delete all instances of the sub substring from the s string.
2012-11-15puppet-lint cleanupJames Fryman
2012-11-15Add the pick() functionGary Larizza
This function is similar to a coalesce function in SQL in that it will return the first value in a list of values that is not undefined or an empty string (two things in Puppet that will return a boolean false value). Typically, this function is used to check for a value in the Puppet Dashboard/Enterprise Console, and failover to a default value like the following: $real_jenkins_version = pick($::jenkins_version, '1.449') The value of $real_jenkins_version will first look for a top-scope variable called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ Enterprise Console are brought into Puppet as top-scope variables), and, failing that, will use a default value of 1.449.
2012-11-07(#13974) Add predicate functions for interface factsWil Cooley
If one wishes to test if a host has a particular IP address (such as a floating virtual address) or has an interface on a particular network (such as a secondary management network), the facts that provide this information are difficult to use within Puppet. This patch addresses these needs by implementing functions ‘has_ip_address(value)’ and ‘has_ip_network(value)’. These functions look through all interfaces for ipaddress_<interface> and network_<interface> (respectively) having the requested <value>. These functions are implemented on top of a lower-level predicate function, ‘has_interface_with(kind, value)’, which iterates through the interfaces in the ‘interfaces’ fact and checks the facts <kind>_<interface> looking for <value>. Additionally, the existence of a particular named interface can be checked for by calling with only a single argument: has_interface_with(interface). A Boolean is returned in all cases.
2012-11-07Add function, uriescape, to URI.escape strings. Redmine #17459Joe Julian
2012-08-20Merge branch '2.3.x' into 2.4.xJeff McCune
* 2.3.x: (Maint) Fix mis-use of rvalue functions as statements Add .rspec file to repo root
2012-08-20Merge branch '2.2.x' into 2.3.xJeff McCune
* 2.2.x: (Maint) Fix mis-use of rvalue functions as statements Add .rspec file to repo root
2012-08-20Merge branch '2.1.x' into 2.2.xJeff McCune
* 2.1.x: (Maint) Fix mis-use of rvalue functions as statements Add .rspec file to repo root Conflicts: spec/unit/puppet/parser/functions/getvar_spec.rb spec/unit/puppet/parser/functions/has_key_spec.rb spec/unit/puppet/parser/functions/merge_spec.rb
2012-08-20(Maint) Fix mis-use of rvalue functions as statementsJeff McCune
Without this patch applied the spec tests are invalid because they call rvalue functions as if they were statements. This is a problem because Puppet 2.7.x currently throws an exception if a rvalue function is invoked as if it were a statement function. This exception from Puppet is causing tests to fail. This patch fixes the problem by changing the tests to assign the return value of the functions to a variable. This fixes the problem by invoking the functions properly. Paired-with: Andrew Parker <andy@puppetlabs.com>
2012-08-14Add support for a 'match' parameter to file_lineChris Price
This commit adds a new parameter called "match" to the file_line resource type, and support for this new parameter to the corresponding ruby provider. This parameter is optional; file_line should work just as before if you do not specify this parameter... so this change should be backwards-compatible. If you do specify the parameter, it is treated as a regular expression that should be used when looking through the file for a line. This allows you to do things like find a line that begins with a certain prefix (e.g., "foo=.*"), and *replace* the existing line with the line you specify in your "line" parameter. Without this capability, if you already had a line "foo=bar" in your file and your "line" parameter was set to "foo=baz", you'd end up with *both* lines in the final file. In many cases this is undesirable.
2012-08-14(#15872) Add to_bytes functionErik Dalén
Converts a string like "2 MB" to the value in bytes. Useful for comparisons on facts that return a human readable number instead of machine readable.
2012-08-10(Maint) use PuppetlabsSpec::PuppetInternals.scope (master)Jeff McCune
This patch is the same approach as the one that want into 2.3.x. It covers the functions in master that do not exist in 2.3.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. Paired-with: Andrew Parker <andy@puppetlabs.com>
2012-08-10Merge branch '2.3.x' into 2.4.xPatrick Carlisle
* 2.3.x: Disable tests that fail on 2.6.x due to #15912
2012-08-10Merge branch '2.2.x' into 2.3.xPatrick Carlisle
* 2.2.x: Disable tests that fail on 2.6.x due to #15912
2012-08-10Disable tests that fail on 2.6.x due to #15912Patrick Carlisle
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-09Merge branch '2.3.x' into 2.4.xPatrick Carlisle
* 2.3.x: Make sure functions are loaded for each test Use rvalue functions correctly (Maint) Don't mock with mocha (Maint) Fix up the get_module_path parser function (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (2.3.x) (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals} (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (Maint) Fix interpreter lines Update CHANGELOG, Modulefile for 2.3.3 fix regression in #11017 properly Fix spec tests using the new spec_helper Update CHANGELOG for 2.3.2 release Make file_line default to ensure => present Memoize file_line spec instance variables Fix spec tests using the new spec_helper 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-08-09Make sure functions are loaded for each testPatrick Carlisle
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-09Merge branch '2.2.x' into 2.3.xPatrick Carlisle
* 2.2.x: Use rvalue functions correctly
2012-08-09Use rvalue functions correctlyPatrick Carlisle
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-07-23(Maint) Don't mock with mochaJeff McCune
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(Maint) Fix up the get_module_path parser functionJeff McCune
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(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-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-04-03add a "step" argument to range()Steve Huff
This patch adds an optional "step" argument to the stdlib range() function. There is no change to the default behavior of the function; however, passing a numeric "step" argument invokes the Ruby Range#step method, e.g. range("0", "9", "2") returns [0,2,4,6,8]
2012-03-29Merge pull request #53 from traylenator/fqdn_rotateJeff McCune
(#13205) Rotate array/string randomley based on fqdn, fqdn_rotate()
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.