summaryrefslogtreecommitdiffstats
path: root/spec/unit/application
Commit message (Collapse)AuthorAgeFilesLines
...
* | | (#7329) Consistent naming for rendering formats and hooks.Daniel Pittman2011-05-031-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We refer to rendering formats pretty consistently as `json`, `yaml`, `s`, and so forth; unqualified names. On the other hand, we refer to the rendering hooks *mostly* as `to_*`, except the `:for_humans` and `:json` formats. Which is kind of confusing because of the internal inconsistency, and because it doesn't match the public name. Fix the code to resolve both, so the `to_*` format still works, but we mostly expect to use the `*` version, to match public expectation.
* | | Merge branch 'bug/2.7.x/7314-backtrace-when-face-has-syntax-error' into 2.7.xDaniel Pittman2011-05-021-2/+2
|\ \ \
| * | | maint: move the indirector face base out of puppet/faceDaniel Pittman2011-05-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to shove the base class Puppet::Face::Indirector next to the actual faces; this made a bunch of things, including testing, confusing. Instead, move it away into the indirector where it lives with the rest of the indirector related things. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
* | | | (#7317) better error handling in CLI face facade.Daniel Pittman2011-05-021-2/+2
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The error handling code in the face CLI facade was pretty terrible: it make a bunch of assumptions about the structure of the error message it got back, and used exceptions to communicate inside the same function. Instead, we handle errors uniformly without raising and catching in the same method, report more nicely, and exit cleanly in all cases. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
* | | (#7122) Enforce call arity on actions in the CLI wrapper.Daniel Pittman2011-04-282-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We had a problem, previously, in the generic translation of command line arguments to Ruby method calls: we could mistake the options, added by the CLI wrapper, for a positional argument to the action method. This was caused by a combination of factors, but primarily that the wrapper methods for actions are designed to present a friendly, helpful Ruby API for internal use. Consequently, they have a default value if you don't wish to pass options. Unfortunately, this meant that the options that the CLI *always* passed could be treated as a positional argument instead, and the default set of options added to the back of the call. To resolve this we now check the number of positional arguments in the CLI wrapper, and raise an exception if they are mismatched. This makes the generic CLI handling do the right thing in adapting the command line arguments to the Ruby API. (As an aside, we would have had a similar-but-different failure mode if we type-checked positional arguments: these calls would have failed with an invalid argument validation error.) Reviewed-By: Max Martin <max@puppetlabs.com>
* | | maint: add a 'print' matcher to rspec, to inspect std{out,err}Daniel Pittman2011-04-282-4/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You can now write expectations along the lines of: expect { ... }.to print /whatever/ This will do the expected thing, which is to require that we print something matching that regular expression during the block. The output itself is suppressed during operation of the matcher. Paired-With: Max Martin <max@puppetlabs.com>
* | | (#7269) Fix error reporting for bad render formats...Daniel Pittman2011-04-281-57/+57
| | | | | | | | | | | | | | | | | | | | | | | | The previous change was incomplete, and could result in internal errors with the wrong combination of inputs. Now we have more testing, and a logically consistent model, so all works. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | (#7269) Better error reporting for bad render formats.Daniel Pittman2011-04-281-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we would try and send `nil` to a class to render an unsupported format, which was bad. Worse, we would only discover this *after* the fact, when we tried to render, so the entire action had run and the result was lost to the world. Instead, validate the parameter early and fail during option parsing. This has less nice error reporting than we can get handling it later[1], but it gets us a much better overall set of behaviour. [1] puppet/application.rb will print and exit, rather than raising, when the option handler fails; this will improve when we unify face and application options properly. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | (#7160) Support 'json' as a rendering method for CLI faces.Daniel Pittman2011-04-281-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already had some specialized support for rendering JSON using the PSON libraries; this just extends that to recognize the request on the command line for json to be identical to a request for pson. Theoretically we should also support the format in our network rendering code, but that is a much bigger change, in established code, that has more chance of destabilizing the whole release. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | (#7157) Return a non-zero exit code on face failure.Daniel Pittman2011-04-221-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | When a face or action fails we should exit non-zero on the CLI to signal this to our caller. "Fails" is defined as "raises an exception"; we don't treat any return value as a significant failure. Reviewed-By: Jesse Wolf <jesse@puppetlabs.com>
* | | maint: use the exit_with helper everywhere...Daniel Pittman2011-04-2213-158/+72
| | | | | | | | | | | | | | | | | | | | | Now we have the exit_with matcher, we should use it everywhere that we previously stubbed, expected, or caught the exit status in an ad-hoc way. Reviewed-By: Jesse Wolf <jesse@puppetlabs.com>
* | | Merge remote-tracking branch ↵Daniel Pittman2011-04-211-0/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'remotes/lak/tickets/next/7118-summaries_for_all_faces' into 2.7.x Fix conflicts due to version drift in: lib/puppet/face/certificate.rb lib/puppet/face/facts.rb lib/puppet/face/node.rb lib/puppet/face/secret_agent.rb spec/lib/puppet/face/basetest.rb spec/unit/face/help_spec.rb Reviewed-By: Markus Roberts <markus@puppetlabs.com>
| * | | (7118) Adding summaries for all facesLuke Kanies2011-04-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's usually just a one-liner, but when I saw an obvious opportunity for longer docs, I've added a @longdocs variable that can be converted to longer forms when ready. Signed-off-by: Luke Kanies <luke@puppetlabs.com>
* | | | (#7181) Rename configurer face to secret_agent.Daniel Pittman2011-04-211-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a much more useful public name, especially given the code is aimed to eventually replace the agent entirely. Until then this is pleasant enough to talk about. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
* | | | maint: stop stubbing log level setting.Daniel Pittman2011-04-2010-76/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The underlying problem turned up when another test (as a side effect) changed the logging level to be more verbose, and a very distant test broke. This revealed that we didn't preserve that global state around tests. Fixing that further revealed that we stubbed setting that log level all over the place, as a point fix for the same problem, and to assert the operation of various tools. So, additionally, we strip out all that stubbing, and assert on the desired effect rather than the mechanism for achieving it. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (#7116) Handle application-level options in parse_optionsDaniel Pittman2011-04-201-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We hid another layer of per-application option in the class backing the application, which wasn't correctly handled in the parse_options method. They are now found and handled, so that global flags like --debug work as expected on the left of the action, not just the right. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | maint: remove redundant context from the test.Daniel Pittman2011-04-201-103/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We had a block of tests in a describe block inside a describe block; they were literally one hundred percent overlap. Eliminate that and just keep the outer. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (#7013) Wire up rendering hooks on the CLI.Daniel Pittman2011-04-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now find, and call, the appropriate rendering hooks on actions during the rendering phase. This allows the user to intercept and replace the result object that passes through the rest of the rendering system on the fly. Example usage: action :foo do when_rendering :pson do |result| { :whatever => result[a], :foobar => result[b], } end end Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (#7013) Handle rendering modes out in the application layer.Daniel Pittman2011-04-191-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We no longer establish the rendering mode in the actions; they just default to "nothing", and let that flow on out to the application layer. That lets the facade we put before the face determine the default behaviour. This is mostly a no-op down in the CLI side, but it makes it much easier to integrate into MCollective, HTTP-API, and for other non-CLI users of Faces. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (#7013) Strip out old face-wide rendering defaults.Daniel Pittman2011-04-191-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we want to support action-based rendering, it is super-hard to define the semantics around defaulting where things are unspecified: the execution context (CLI, HTTP, etc) vs the face, vs the action all have different semantics. Without solving the problem of how we express all that context and those semantics down in the action, especially one written by a third party, this just becomes a box of counter-intuitive and annoying semantics and edge-cases. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (#7013) better default rendering support for facesDaniel Pittman2011-04-191-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have some specific requirements around rendering, including the ability of authors of actions to add nice, custom rendering. To support that we want solid "basic" rendering for human-focused output. This implements that generic rendering correctly and to spec, to give a sound basis that we can build on for extensible rendering. (#7013) better default rendering support for faces We have some specific requirements around rendering, including the ability of authors of actions to add nice, custom rendering. To support that we want solid "basic" rendering for human-focused output. This implements that generic rendering correctly and to spec, to give a sound basis that we can build on for extensible rendering. Reviewed-By: Max Martin <max@puppetlabs.com>
* | | | (Maint) Fix a leaking spec, patching intermittent failures.Pieter van de Bruggen2011-04-181-7/+7
| | | | | | | | | | | | Reviewed-By: Matt Robinson.
* | | | Merge remote-tracking branch 'community/feature/puppet-device' into 2.7.xPieter van de Bruggen2011-04-181-0/+349
| | | | | | | | | | | | | | | | Reviewed-By: Mike Stahnke
* | | | (#7131) Remove support for optional arguments to optionsMax Martin2011-04-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per the design decision documented in #7131, optional arguments to options will no longer be supported. This patch causes such optional arguments to raise an error, and tests for this behavior. Also cleaned up some confusing use of the term "subject" in specs. Paired-with: Daniel Pittman
* | | | Merge branch ↵Daniel Pittman2011-04-151-4/+3
|\ \ \ \ | | | | | | | | | | | | | | | 'feature/2.7.x/6978-face-and-action-options-should-have-hooks-for-various-actions' into 2.7.x
| * | | | (#7059) Use option hooks for the indirector terminus option.Daniel Pittman2011-04-151-4/+3
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to open-code terminus setting, which had a bunch of duplicate code. Now, instead, we use the option hooks, resulting in the same behaviour with much less code. Paired-With: Max Martin <max@puppetlabs.com>
* / / / (#7115) Enable default actions.Pieter van de Bruggen2011-04-151-3/+34
|/ / / | | | | | | | | | | | | | | | | | | This also enables the 'help' action on the 'help' face to serve as a default action. Reviewed-By: Daniel Pittman Reviewed-By: Nick Lewis
* | | (#6928) Remove --parseonlyNick Lewis2011-04-132-85/+2
| | | | | | | | | | | | | | | | | | This has been removed in favor of 'puppet parser validate <manifest>'. Paired-With: Jesse Wolfe
* | | maint: clean up the spec test headers in bulk.Daniel Pittman2011-04-1315-29/+14
| | | | | | | | | | | | | | | | | | | | | We now use a shebang of: #!/usr/bin/env rspec This enables the direct execution of spec tests again, which was lost earlier during the transition to more directly using the rspec2 runtime environment.
* | | (#7056) Use 'face' rather than 'faces' in the production code.Daniel Pittman2011-04-134-17/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | After some discussion we decided that most uses of the Puppet Face infrastructure were about single faces on their own, not about the collection, and so we were better referring to Puppet::Face[...] in code. This implements that by translating names and references in the Ruby code to the new, s-less, name.
* | | (#6962) Move option handling into #parse_options, not #preinit.Daniel Pittman2011-04-122-27/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Logically, the extra work around option parsing for faces belongs in the application parse_options method, not hidden in the step before. This commit moves that to the right place and fixes the fallout from that strange early design decision. Along the way we unify error reporting for invalid options so that all the code paths result in the same externally detected failures. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | | (#6962) delegate global usage to the help face.Daniel Pittman2011-04-121-13/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The global --help handler (also invoked when puppet is run without any other command line options at all) used to spit out a brief and generally not so helpful message. Now that we have a help face that can provide the same information in a much more user-friendly form, we should delegate the function to that when required. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | | maint: avoid making temporary dirs during testing.Daniel Pittman2011-04-121-13/+1
| | | | | | | | | | | | | | | | | | | | | | | | We used to create temporary directories to have some support files on disk during testing of faces; we don't really need that most of the time, and this updates a test to reflect that reality. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | | (#6962) Implement 'summary' for faces.Daniel Pittman2011-04-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the methods to the summary builder and runtime instance to support setting and getting a summary of the face. This is a short description used to summarize the purpose of the face in help output. For example, from the help face: "Displays help about puppet subcommands" Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | | Fixing 'puppet faces' applicationLuke Kanies2011-04-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It only had one available method, and the errors incorrectly specified what it was. This just defaults to listing all the time, and I've updated the docs to be correct, too. Signed-off-by: Luke Kanies <luke@puppetlabs.com> Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
* | | maint: just require 'spec_helper', thanks rspec2Daniel Pittman2011-04-0816-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rspec2 automatically sets a bunch of load-path stuff we were by hand, so we can just stop. As a side-effect we can now avoid a whole pile of stupid things to try and include the spec_helper.rb file... ...and then we can stop protecting spec_helper from evaluating twice, since we now require it with a consistent name. Yay. Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
* | | maint: don't take over signal handling in tests...Daniel Pittman2011-04-081-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | We had a problem where we installed a signal handler during a :before block, which wasn't stubbed, so ended up leaving that in place forever. Which bites. We stub it out locally, which is ugly but functional. Paired-With: Matt Robinson <matt@puppetlabs.com>
* | | maint: Ruby < 1.8.7 knows size but not countMatt Robinson2011-04-081-4/+4
| | | | | | | | | | | | Reviewd-by: Nick Lewis
* | | maint: mark tests pending for a discovered bug...Daniel Pittman2011-04-081-0/+2
| | | | | | | | | | | | | | | | | | | | | Changes elsewhere in the tree break these two tests, but getting the merge in is worth marking them pending. :/ Paired-With: Nick Lewis <nick@puppetlabs.com>
* | | Merge puppet-interfaces into puppet.Daniel Pittman2011-04-076-0/+292
|\ \ \ | | | | | | | | | | | | | | | | This joins the two repositories, including full history, into a single run, as well as landing the interfaces work on the next branch ready for release.
| * | | (#7012) Update references in code to use face(s)Daniel Pittman2011-04-075-30/+27
| | | | | | | | | | | | | | | | | | | | The codebase is now using the new name, faces, uniformly to reference the objects contained. All tests pass.
| * | | (#7012) global rename of strings to faces.Daniel Pittman2011-04-072-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This just changes filenames and directories; files are exact copies rather than having additional modifications to make clearer each step of this process. This does leave a currently broken build. :/
| * | | (#6972) Handle ca-location in the certificate string.Daniel Pittman2011-04-061-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ports the existing certificate location configuration to be a string option, and then uses that to change the configuration. This will leak state between calls, which is somewhat unavoidable, but should at least get the basic stuff right for the CLI. We eventually need the CA string to be supported by a stateless internal CA implementation that allows us to do the right thing overall. Reviewed-By: Dan Bode <dan@puppetlabs.com>
| * | | (#6972) Recognize puppet global options in pre-parse.Daniel Pittman2011-04-061-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This extends the CLI pre-parse phase to identify both string *and* global options out of the Puppet settings/defaults system. This makes the regular CLI support for setting Puppet configuration globals work as expected. This moves us along the line of supporting these options more fully. Reviewed-By: Dan Bode <dan@puppetlabs.com>
| * | | (#6949) Fix passing positional arguments to actions.Daniel Pittman2011-04-041-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We had a logic failure that didn't pass positional arguments at all, but which our testing didn't verify. This entirely broke things. Now fixed, and a test added to ensure we don't bug out further... Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
| * | | (#6964) use 'when_invoked' rather than 'invoke' for actions.Daniel Pittman2011-04-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In the DSL we want to use 'when_invoked do' because it reads much more naturally for users. Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
| * | | (#6749) Handle options with inline arguments.Daniel Pittman2011-04-041-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We didn't correctly handle '--foo=bar' as having supplied an argument during the pre-parse phase. Now we have a test for it, and a fix in the code. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
| * | | (#6749) Extract the action from the arguments cleanly.Daniel Pittman2011-04-041-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a test to verify that we are correctly removing the action name from the set of arguments passed to the string action, then cleans up the previous code so we don't need to mutilate the command line arguments: we can just extract it from the resultant set of information. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
| * | | (#6749) Fix optional vs mandatory argument handling.Daniel Pittman2011-04-041-8/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | optparse will treat '--foo --bar' as "foo with the argument --bar" when foo takes a mandatory argument. We need to emulate that behaviour in our pre-parse of the command line. Incidentally, fix up a bug in boolean options, and improve our testing. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
| * | | (#6749) Polish the CLI option pre-parse implementationDaniel Pittman2011-04-041-49/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This improves handling of the pre-parse of the command line to be non-destructive, which cuts down the volume of garbage generated in the process. It also improves testing to verify that we get the darn thing right... Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>