puppet-debugger 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.gitlab-ci.yml +6 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -1
- data/Plugin_development.md +43 -1
- data/README.md +13 -1
- data/Rakefile +24 -0
- data/lib/plugins/puppet-debugger/input_responders/commands.rb +2 -20
- data/lib/plugins/puppet-debugger/input_responders/play.rb +1 -1
- data/lib/plugins/puppet-debugger/input_responders/set.rb +20 -0
- data/lib/puppet-debugger/cli.rb +19 -4
- data/lib/puppet-debugger/input_responder_plugin.rb +12 -0
- data/lib/version.rb +1 -1
- data/puppet-debugger.gemspec +1 -1
- data/spec/input_responders/benchmark_spec.rb +32 -0
- data/spec/input_responders/classes_spec.rb +22 -0
- data/spec/input_responders/classification_spec.rb +17 -0
- data/spec/input_responders/commands_spec.rb +22 -0
- data/spec/input_responders/datatypes_spec.rb +17 -0
- data/spec/input_responders/environment_spec.rb +13 -0
- data/spec/input_responders/exit_spec.rb +51 -0
- data/spec/input_responders/facterdb_filter_spec.rb +12 -0
- data/spec/input_responders/facts_spec.rb +20 -0
- data/spec/input_responders/functions_spec.rb +20 -0
- data/spec/input_responders/krt_spec.rb +1 -2
- data/spec/input_responders/play_spec.rb +14 -0
- data/spec/input_responders/reset_spec.rb +27 -0
- data/spec/input_responders/resources_spec.rb +13 -0
- data/spec/input_responders/set_spec.rb +18 -0
- data/spec/input_responders/types_spec.rb +22 -0
- data/spec/input_responders/vars_spec.rb +27 -0
- data/spec/input_responders/whereami_spec.rb +28 -0
- data/spec/puppet_debugger_spec.rb +12 -270
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06bfeaee11d72cc1f5e2a68a325bf5c892df207a
|
4
|
+
data.tar.gz: 3ddd0743cc4daa1079174a4477c4863a373c326b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07523f3f0f261e283c35c2d74f4feceba1f0d8a5b5416aa6b5f1206870fc28948fa231758ce41988c02788fc94ea7c5d11fcc17c2d922ef811e733c4a1959a20
|
7
|
+
data.tar.gz: accdd33ea736b3948e5191f27384135aada416962e740eaecde54a4147ed2bc4e0276c620272a725c5b5c6fca6f21df0e71a9111c73f2662e8bd5a26a268b93b
|
data/.gitignore
CHANGED
@@ -10,6 +10,7 @@ bundler
|
|
10
10
|
vendor
|
11
11
|
coverage
|
12
12
|
coverage.data
|
13
|
+
.DS*
|
13
14
|
|
14
15
|
# rdoc generated
|
15
16
|
rdoc
|
@@ -24,7 +25,7 @@ doc
|
|
24
25
|
# jeweler generated
|
25
26
|
pkg
|
26
27
|
|
27
|
-
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
28
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
28
29
|
#
|
29
30
|
# * Create a file at ~/.gitignore
|
30
31
|
# * Include files you want ignored
|
data/.gitlab-ci.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
|
+
## 0.8.0
|
4
|
+
* Fixes bug with playback of multiline input
|
5
|
+
* Updates pluginator Gem to 1.5.0
|
6
|
+
* Adds ability to provide command completion for plugins
|
7
|
+
* Fixes error with commands plugin where id didn't detect bad names
|
8
|
+
* Fixes #3 - Move old input responder test code to individual plugin tests
|
9
|
+
* Adds puppet 5 to testing matrix
|
3
10
|
## 0.7.0
|
4
11
|
* Adds new commands command
|
5
12
|
* Adds new help command
|
data/Gemfile
CHANGED
@@ -3,7 +3,8 @@ source 'http://rubygems.org'
|
|
3
3
|
gem 'awesome_print', '~> 1.7'
|
4
4
|
gem 'facterdb', '~> 0.3.8'
|
5
5
|
gem 'puppet', ENV['PUPPET_GEM_VERSION'] || '~> 4.10.1'
|
6
|
-
gem 'pluginator', '~> 1.
|
6
|
+
gem 'pluginator', '~> 1.5.0'
|
7
|
+
|
7
8
|
group :test, :development do
|
8
9
|
# ruby versions prior to 2.0 cannot install json_pure 2.0.2+
|
9
10
|
gem 'bundler'
|
data/Plugin_development.md
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
- [Calling other plugins](#calling-other-plugins)
|
21
21
|
- [Indirectly](#indirectly)
|
22
22
|
- [Directly](#directly)
|
23
|
+
- [Command Completion](#command-completion)
|
23
24
|
- [Testing your plugin code](#testing-your-plugin-code)
|
24
25
|
- [Examples](#examples)
|
25
26
|
|
@@ -199,6 +200,8 @@ Objects exposed that you might want access to:
|
|
199
200
|
* compiler (The puppet compiler object)
|
200
201
|
* catalog (The puppet catalog)
|
201
202
|
* function_map (Current map of functions)
|
203
|
+
* add_hook, delete_hook
|
204
|
+
* handle_input (use instead of debugger.handle_input)
|
202
205
|
|
203
206
|
While you do have access to the `debugger` object itself and everything inside this object. I would recommend not using the debugger
|
204
207
|
object directly since the debugger code base is changing rapidly. Usage can result in a broken plugin. If you are using
|
@@ -267,12 +270,51 @@ play_plugin = PuppetDebugger::InputResponders::Commands.plugin_from_command('pla
|
|
267
270
|
# execute the plugin
|
268
271
|
args = ['https://gists.github.com/sdalfsdfadsfds.txt']
|
269
272
|
# pass an instance of the debugger (always do this)
|
270
|
-
output =
|
273
|
+
output = play_plugin.execute(args, debugger)
|
271
274
|
|
272
275
|
```
|
273
276
|
|
274
277
|
If the command used to find the plugin is incorrect a `PuppetDebugger::Exception::InvalidCommand` error will be raised.
|
275
278
|
|
279
|
+
## Command Completion
|
280
|
+
If your plugin takes extra arguments you may want to incorporate command completion to help the user. This can be done
|
281
|
+
by overriding the `self.command_completion` function in your plugin. The return value of this method must return an
|
282
|
+
array of possible words.
|
283
|
+
|
284
|
+
```ruby
|
285
|
+
# @param buffer_words [Array[String]] a array of words the user has typed in
|
286
|
+
# @return Array[String] - an array of words that will help the user with word completion
|
287
|
+
# By default this returns an empty array, your plugin can chose to override this method in order to
|
288
|
+
# provide the user with a list of key words based on the user's input
|
289
|
+
def self.command_completion(buffer_words)
|
290
|
+
['one', 'two', 'three']
|
291
|
+
end
|
292
|
+
```
|
293
|
+
|
294
|
+
A real example of this can be found in the set plugin
|
295
|
+
|
296
|
+
```ruby
|
297
|
+
KEYWORDS = %w(node loglevel)
|
298
|
+
LOGLEVELS = %w(debug info)
|
299
|
+
|
300
|
+
def self.command_completion(buffer_words)
|
301
|
+
next_word = buffer_words.shift
|
302
|
+
case next_word
|
303
|
+
when 'loglevel'
|
304
|
+
if buffer_words.count > 0
|
305
|
+
LOGLEVELS.grep(/^#{Regexp.escape(buffer_words.first)}/)
|
306
|
+
else
|
307
|
+
LOGLEVELS
|
308
|
+
end
|
309
|
+
when 'debug', 'info','node'
|
310
|
+
[]
|
311
|
+
when nil
|
312
|
+
%w(node loglevel)
|
313
|
+
else
|
314
|
+
KEYWORDS.grep(/^#{Regexp.escape(next_word)}/)
|
315
|
+
end
|
316
|
+
end
|
317
|
+
```
|
276
318
|
## Testing your plugin code
|
277
319
|
1. Create a new rspec test file as `spec/input_responders/plugin_name_spec.rb`
|
278
320
|
|
data/README.md
CHANGED
@@ -42,7 +42,7 @@ to install on your production puppet master. Please do not install because of th
|
|
42
42
|
`gem install puppet-debugger`
|
43
43
|
|
44
44
|
## Load path
|
45
|
-
puppet-debugger will load all functions from your basemodulepath and environmentpath.
|
45
|
+
puppet-debugger will load all puppet functions from your basemodulepath and environmentpath.
|
46
46
|
|
47
47
|
This means if you run `puppet module install puppetlabs-stdlib` and they will be available
|
48
48
|
in the debugger.
|
@@ -267,6 +267,18 @@ https://www.puppet-debugger.com/play?content=vars
|
|
267
267
|
Please note the web based debugger only contains a minimal amount of puppet modules. So its likely
|
268
268
|
that your code may not work if using third party modules. This may change in the future though.
|
269
269
|
|
270
|
+
## Plugins
|
271
|
+
The puppet debugger has a plugin system that allows anyone to create new functionality
|
272
|
+
for the puppet debugger. By default the puppet debugger ships with serveral core
|
273
|
+
plugins that provide basic usage. Any non core plugin can be installed as a separate
|
274
|
+
gem. The following is a list of plugins we wrote or know about.
|
275
|
+
|
276
|
+
|
277
|
+
| Name | Project Url | Type | Description |
|
278
|
+
| ------------- |:-------------:| -----:| -------------:|
|
279
|
+
| playbooks | [playbooks](https://gitlab.com/puppet-debugger/puppet-debugger-playbooks) | editing | Allows group playback of scripted puppet commands |
|
280
|
+
|
281
|
+
|
270
282
|
## Development
|
271
283
|
* [Plugin Development Guide](Plugin_development.md)
|
272
284
|
|
data/Rakefile
CHANGED
@@ -31,3 +31,27 @@ Rake::RDocTask.new do |rdoc|
|
|
31
31
|
rdoc.rdoc_files.include('README*')
|
32
32
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
33
33
|
end
|
34
|
+
|
35
|
+
desc 'Creates generic input_responder spec files'
|
36
|
+
task :make_input_responder_tests do
|
37
|
+
files = Dir.glob("lib/plugins/**/*.rb")
|
38
|
+
new_files = files.collect do |pathname|
|
39
|
+
orig_file = File.basename(pathname, ".*")
|
40
|
+
test_file = File.join('spec', 'input_responders', "#{orig_file}_spec.rb")
|
41
|
+
unless File.exist?(test_file)
|
42
|
+
new_file = File.new(test_file, "w")
|
43
|
+
contents = <<-EOS
|
44
|
+
require 'spec_helper'
|
45
|
+
require 'puppet-debugger'
|
46
|
+
require 'puppet-debugger/plugin_test_helper'
|
47
|
+
|
48
|
+
describe :#{orig_file} do
|
49
|
+
include_examples 'plugin_tests'
|
50
|
+
let(:args) { [] }
|
51
|
+
|
52
|
+
end
|
53
|
+
EOS
|
54
|
+
File.write(test_file, contents)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -68,28 +68,10 @@ module PuppetDebugger
|
|
68
68
|
# @return [PuppetDebugger::InputResponders::InputResponderPlugin]
|
69
69
|
def self.plugin_from_command(name)
|
70
70
|
p = plugins.find {|p| p::COMMAND_WORDS.include?(name)}
|
71
|
-
raise PuppetDebugger::Exception::InvalidCommand.new(message: "invalid command #{
|
71
|
+
raise PuppetDebugger::Exception::InvalidCommand.new(message: "invalid command #{name}") unless p
|
72
72
|
p
|
73
73
|
end
|
74
74
|
|
75
75
|
end
|
76
76
|
end
|
77
|
-
end
|
78
|
-
|
79
|
-
module Pluginator
|
80
|
-
# a helper for handling name / file / class conversions
|
81
|
-
module NameConverter
|
82
|
-
private
|
83
|
-
# full_name => class
|
84
|
-
def name2class(name)
|
85
|
-
klass = Kernel
|
86
|
-
name.to_s.split(%r{/}).each do |part|
|
87
|
-
klass = klass.const_get(
|
88
|
-
part.capitalize.gsub(/[_-](.)/) { |match| match[1].upcase }
|
89
|
-
)
|
90
|
-
end
|
91
|
-
klass
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
end
|
77
|
+
end
|
@@ -5,6 +5,26 @@ module PuppetDebugger
|
|
5
5
|
COMMAND_WORDS = %w(set :set)
|
6
6
|
SUMMARY = 'Set the a puppet debugger config'
|
7
7
|
COMMAND_GROUP = :scope
|
8
|
+
KEYWORDS = %w(node loglevel)
|
9
|
+
LOGLEVELS = %w(debug info)
|
10
|
+
|
11
|
+
def self.command_completion(buffer_words)
|
12
|
+
next_word = buffer_words.shift
|
13
|
+
case next_word
|
14
|
+
when 'loglevel'
|
15
|
+
if buffer_words.count > 0
|
16
|
+
LOGLEVELS.grep(/^#{Regexp.escape(buffer_words.first)}/)
|
17
|
+
else
|
18
|
+
LOGLEVELS
|
19
|
+
end
|
20
|
+
when 'debug', 'info','node'
|
21
|
+
[]
|
22
|
+
when nil
|
23
|
+
%w(node loglevel)
|
24
|
+
else
|
25
|
+
KEYWORDS.grep(/^#{Regexp.escape(next_word)}/)
|
26
|
+
end
|
27
|
+
end
|
8
28
|
|
9
29
|
def run(args = [])
|
10
30
|
handle_set(args)
|
data/lib/puppet-debugger/cli.rb
CHANGED
@@ -29,12 +29,9 @@ module PuppetDebugger
|
|
29
29
|
@source_file = options[:source_file] || nil
|
30
30
|
@source_line_num = options[:source_line] || nil
|
31
31
|
@in_buffer = options[:in_buffer] || $stdin
|
32
|
-
comp = proc do |s|
|
33
|
-
key_words.grep(/^#{Regexp.escape(s)}/)
|
34
|
-
end
|
35
32
|
Readline.completion_append_character = ''
|
36
33
|
Readline.basic_word_break_characters = ' '
|
37
|
-
Readline.completion_proc =
|
34
|
+
Readline.completion_proc = command_completion
|
38
35
|
AwesomePrint.defaults = {
|
39
36
|
html: @html_mode,
|
40
37
|
sort_keys: true,
|
@@ -42,6 +39,24 @@ module PuppetDebugger
|
|
42
39
|
}
|
43
40
|
end
|
44
41
|
|
42
|
+
# @return [Proc] the proc used in the command completion for readline
|
43
|
+
# if a plugin keyword is found lets return keywords using the plugin's command completion
|
44
|
+
# otherwise return the default set of keywords and filter out based on input
|
45
|
+
def command_completion
|
46
|
+
proc do |input|
|
47
|
+
words = Readline.line_buffer.split(Readline.basic_word_break_characters)
|
48
|
+
first_word = words.shift
|
49
|
+
plugins = PuppetDebugger::InputResponders::Commands.plugins.find_all do |p|
|
50
|
+
p::COMMAND_WORDS.find { |word| word.start_with?(first_word)}
|
51
|
+
end
|
52
|
+
if plugins.count == 1 and /\A#{first_word}\s/.match(Readline.line_buffer)
|
53
|
+
plugins.first.command_completion(words)
|
54
|
+
else
|
55
|
+
key_words.grep(/^#{Regexp.escape(input)}/)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
45
60
|
def hooks
|
46
61
|
@hooks ||= PuppetDebugger::Hooks.new
|
47
62
|
end
|
@@ -12,22 +12,34 @@ module PuppetDebugger
|
|
12
12
|
def_delegators :scope, :compiler, :catalog
|
13
13
|
def_delegators :node, :facts
|
14
14
|
|
15
|
+
# @return [Array[String]] an array of words the user can call the command with
|
15
16
|
def self.command_words
|
16
17
|
self::COMMAND_WORDS
|
17
18
|
end
|
18
19
|
|
20
|
+
# @return [String] a summary of the plugin
|
19
21
|
def self.summary
|
20
22
|
self::SUMMARY
|
21
23
|
end
|
22
24
|
|
25
|
+
# @return [String] the name of the command group the plugin is in
|
23
26
|
def self.command_group
|
24
27
|
self::COMMAND_GROUP
|
25
28
|
end
|
26
29
|
|
30
|
+
# @return [Hash] a has of all the details of the plugin
|
27
31
|
def self.details
|
28
32
|
{ words: command_words, summary: summary, group: command_group }
|
29
33
|
end
|
30
34
|
|
35
|
+
# @param buffer_words [Array[String]] a array of words the user has typed in
|
36
|
+
# @return Array[String] - an array of words that will help the user with word completion
|
37
|
+
# By default this returns an empty array, your plugin can chose to override this method in order to
|
38
|
+
# provide the user with a list of key words based on the user's input
|
39
|
+
def self.command_completion(buffer_words)
|
40
|
+
[]
|
41
|
+
end
|
42
|
+
|
31
43
|
# @param args [Array[String]] - an array of arguments to pass to the plugin command
|
32
44
|
# @param debugger PuppetDebugger::Cli - an instance of the PuppetDebugger::Cli object
|
33
45
|
# @return the output of the plugin command
|
data/lib/version.rb
CHANGED
data/puppet-debugger.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.licenses = ["MIT"]
|
33
33
|
s.rubygems_version = "2.4.5.1"
|
34
34
|
s.summary = "A repl based debugger for the puppet language"
|
35
|
-
s.add_runtime_dependency(%q<pluginator>, ["~> 1.
|
35
|
+
s.add_runtime_dependency(%q<pluginator>, ["~> 1.5.0"])
|
36
36
|
s.add_runtime_dependency(%q<puppet>, [">= 3.8"])
|
37
37
|
s.add_runtime_dependency(%q<facterdb>, ["~> 0.3.1"])
|
38
38
|
s.add_runtime_dependency(%q<awesome_print>, ["~> 1.7"])
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :benchmark do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { ["benchmark", "md5('12345')" ] }
|
8
|
+
|
9
|
+
describe 'mode' do
|
10
|
+
before(:each) do
|
11
|
+
debugger.handle_input('benchmark') # enable
|
12
|
+
end
|
13
|
+
it 'enable' do
|
14
|
+
debugger.handle_input("md5('12345')")
|
15
|
+
expect(output.string).to match(/Benchmark\ Mode\ On/)
|
16
|
+
expect(output.string).to match(/Time\ elapsed/)
|
17
|
+
end
|
18
|
+
it 'disable' do
|
19
|
+
debugger.handle_input('benchmark') # disable
|
20
|
+
expect(output.string).to match(/Benchmark\ Mode\ Off/)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'onetime' do
|
25
|
+
it 'run' do
|
26
|
+
debugger.handle_input("benchmark md5('12345')")
|
27
|
+
expect(output.string).to_not match(/Benchmark\ Mode\ On/)
|
28
|
+
expect(output.string).to_not match(/Benchmark\ Mode\ Off/)
|
29
|
+
expect(output.string).to match(/Time\ elapsed/)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :classes do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
let(:input) do
|
10
|
+
'classes'
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should be able to print classes' do
|
14
|
+
expect(plugin.run(args)).to match(/settings/)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should be able to print classes with handle input' do
|
18
|
+
debugger_output = /settings/
|
19
|
+
debugger.handle_input(input)
|
20
|
+
expect(output.string).to match(debugger_output)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :classification do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it 'can process a file' do
|
10
|
+
expect(plugin.run(args)).to eq("[]")
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'can process a file from handle input' do
|
14
|
+
debugger.handle_input('classification')
|
15
|
+
expect(output.string).to eq("[]\n")
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :commands do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it do
|
10
|
+
expect(plugin.run(args)).to match(/environment/)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'run a plugin command' do
|
14
|
+
debugger.handle_input('help')
|
15
|
+
expect(output.string).to match(/Type "commands" for a list of debugger commands/)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'show error when command does not exist' do
|
19
|
+
debugger.handle_input('helpp')
|
20
|
+
expect(output.string).to match(/invalid command helpp/)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :datatypes do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it 'handle datatypes' do
|
10
|
+
output = plugin.run(args)
|
11
|
+
if Gem::Version.new(Puppet.version) < Gem::Version.new('4.5.0')
|
12
|
+
expect(output).to eq("[]")
|
13
|
+
else
|
14
|
+
expect(output).to match(/.*Array.*/)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :environment do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [''] }
|
8
|
+
|
9
|
+
it 'can display itself' do
|
10
|
+
output = plugin.run(args)
|
11
|
+
expect(output).to eq("Puppet Environment: #{debugger.puppet_env_name}")
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
|
4
|
+
describe :exit do
|
5
|
+
let(:args) { [] }
|
6
|
+
|
7
|
+
xit 'exits' do
|
8
|
+
expect{plugin.run(args)}.to eq('')
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:plugin) do
|
12
|
+
instance = PuppetDebugger::InputResponders::Commands.plugin_from_command(subject.to_s).instance
|
13
|
+
instance.debugger = debugger
|
14
|
+
instance
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:output) do
|
18
|
+
StringIO.new
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:debugger) do
|
22
|
+
PuppetDebugger::Cli.new({ out_buffer: output }.merge(options))
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:options) do
|
26
|
+
{}
|
27
|
+
end
|
28
|
+
|
29
|
+
it "commands contant is an array" do
|
30
|
+
expect(plugin.class::COMMAND_WORDS).to be_a(Array)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "commands must contain at least one word" do
|
34
|
+
expect(plugin.class::COMMAND_WORDS.count).to be > 0
|
35
|
+
end
|
36
|
+
|
37
|
+
it "summary must be a string" do
|
38
|
+
expect(plugin.class::SUMMARY).to be_a(String)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'implements run' do
|
42
|
+
expect{plugin.run([])}.not_to raise_error(NotImplementedError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'be looked up via any command words' do
|
46
|
+
plugin.class::COMMAND_WORDS.each do |word|
|
47
|
+
actual = PuppetDebugger::InputResponders::Commands.plugin_from_command(word.to_s).instance.class
|
48
|
+
expect(actual).to eq(plugin.class)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :facterdb_filter do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it 'outputs filter' do
|
10
|
+
expect(plugin.run(args)).to match(/facterversion/)
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :facts do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { ['$::fqdn', 'facts'] }
|
8
|
+
|
9
|
+
it 'should be able to resolve fqdn' do
|
10
|
+
debugger_output = /foo\.example\.com/
|
11
|
+
output = plugin.run(args[0])
|
12
|
+
expect(output).to match(debugger_output)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should be able to print facts' do
|
16
|
+
debugger_output = /kernel/
|
17
|
+
plugin.run(args[1])
|
18
|
+
expect(plugin.run(args[1])).to match(debugger_output)
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :functions do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:input) do
|
8
|
+
"md5('hello')"
|
9
|
+
end
|
10
|
+
it 'execute md5' do
|
11
|
+
debugger_output = /5d41402abc4b2a76b9719d911017c592/
|
12
|
+
debugger.handle_input(input)
|
13
|
+
expect(output.string).to match(debugger_output)
|
14
|
+
end
|
15
|
+
it 'execute swapcase' do
|
16
|
+
debugger_output = /HELLO/
|
17
|
+
debugger.handle_input("swapcase('hello')")
|
18
|
+
expect(output.string).to match(debugger_output)
|
19
|
+
end
|
20
|
+
end
|
@@ -131,6 +131,20 @@ describe :play do
|
|
131
131
|
expect(output.string).to include('"test"')
|
132
132
|
end
|
133
133
|
end
|
134
|
+
describe 'multiple lines puppet code' do
|
135
|
+
let(:input) do
|
136
|
+
<<-EOF
|
137
|
+
if $osfamily {
|
138
|
+
$var = '3'
|
139
|
+
}
|
140
|
+
$var
|
141
|
+
EOF
|
142
|
+
end
|
143
|
+
xit do
|
144
|
+
plugin.play_back_string(input)
|
145
|
+
expect(output.string).to include('"3"')
|
146
|
+
end
|
147
|
+
end
|
134
148
|
end
|
135
149
|
|
136
150
|
describe 'play' do
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :reset do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it 'can process a file' do
|
10
|
+
debugger_output = /Puppet::Type::File/
|
11
|
+
debugger.handle_input("file{'/tmp/reset': ensure => present}")
|
12
|
+
expect(output.string).to match(debugger_output)
|
13
|
+
debugger.handle_input('reset')
|
14
|
+
expect(output.string).to match(debugger_output)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'loglevel' do
|
18
|
+
it 'has not changed' do
|
19
|
+
debugger.handle_input(':set loglevel debug')
|
20
|
+
expect(Puppet::Util::Log.level).to eq(:debug)
|
21
|
+
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
22
|
+
plugin.run('reset')
|
23
|
+
expect(Puppet::Util::Log.level).to eq(:debug)
|
24
|
+
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :resources do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { ["resources"] }
|
8
|
+
|
9
|
+
it 'should be able to print resources' do
|
10
|
+
debugger_output = /main/
|
11
|
+
expect(plugin.run(args)).to match(debugger_output)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe 'set' do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:input) do
|
8
|
+
':set loglevel debug'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should set the loglevel' do
|
12
|
+
debugger_output = /loglevel debug is set/
|
13
|
+
debugger.handle_input(input)
|
14
|
+
expect(output.string).to match(debugger_output)
|
15
|
+
expect(Puppet::Util::Log.level).to eq(:debug)
|
16
|
+
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :types do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:args) { [] }
|
8
|
+
|
9
|
+
it 'runs' do
|
10
|
+
expect(plugin.run(args)).to match(/service/)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'types' do
|
14
|
+
let(:input) do
|
15
|
+
'types'
|
16
|
+
end
|
17
|
+
it 'runs' do
|
18
|
+
debugger.handle_input(input)
|
19
|
+
expect(output.string).to match(/service/)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
require 'pluginator'
|
5
|
+
|
6
|
+
describe :vars do
|
7
|
+
include_examples 'plugin_tests'
|
8
|
+
let(:args) { [] }
|
9
|
+
|
10
|
+
it 'display facts variable' do
|
11
|
+
debugger_output = /facts/
|
12
|
+
output = plugin.run(args)
|
13
|
+
expect(output).to match(debugger_output)
|
14
|
+
end
|
15
|
+
it 'display server facts variable' do
|
16
|
+
debugger_output = /server_facts/
|
17
|
+
expect(plugin.run(args)).to match(debugger_output) if Puppet.version.to_f >= 4.1
|
18
|
+
end
|
19
|
+
it 'display serverversion variable' do
|
20
|
+
debugger_output = /serverversion/
|
21
|
+
expect(plugin.run(args)).to match(debugger_output) if Puppet.version.to_f >= 4.1
|
22
|
+
end
|
23
|
+
it 'display local variable' do
|
24
|
+
debugger.handle_input("$var1 = 'value1'")
|
25
|
+
expect(plugin.run(args)).to match(/value1/)
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet-debugger'
|
3
|
+
require 'puppet-debugger/plugin_test_helper'
|
4
|
+
|
5
|
+
describe :whereami do
|
6
|
+
include_examples 'plugin_tests'
|
7
|
+
let(:input) do
|
8
|
+
File.expand_path File.join(fixtures_dir, 'sample_start_debugger.pp')
|
9
|
+
end
|
10
|
+
let(:options) do
|
11
|
+
{
|
12
|
+
source_file: input,
|
13
|
+
source_line: 10
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
before(:each) do
|
18
|
+
debugger.handle_input('whereami')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'runs' do
|
22
|
+
expect(output.string).to match(/\s+5/)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'contains marker' do
|
26
|
+
expect(output.string).to match(/\s+=>\s10/)
|
27
|
+
end
|
28
|
+
end
|
@@ -113,28 +113,7 @@ describe 'PuppetDebugger' do
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
|
117
|
-
describe 'string' do
|
118
|
-
let(:input) do
|
119
|
-
'String'
|
120
|
-
end
|
121
|
-
it 'shows type' do
|
122
|
-
debugger.handle_input(input)
|
123
|
-
expect(output.string).to eq("\n => String\n")
|
124
|
-
end
|
125
|
-
end
|
126
|
-
describe 'Array', type_function: true do
|
127
|
-
let(:input) do
|
128
|
-
'type([1,2,3,4])'
|
129
|
-
end
|
130
|
-
it 'shows type' do
|
131
|
-
if Gem::Version.new(Puppet.version) > Gem::Version.new('4.4')
|
132
|
-
debugger.handle_input(input)
|
133
|
-
expect(output.string).to eq("\n => Tuple[Integer[1, 1], Integer[2, 2], Integer[3, 3], Integer[4, 4]]\n") if supports_type_function?
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
116
|
+
|
138
117
|
|
139
118
|
|
140
119
|
|
@@ -144,40 +123,7 @@ describe 'PuppetDebugger' do
|
|
144
123
|
end
|
145
124
|
end
|
146
125
|
|
147
|
-
|
148
|
-
# let(:input) do
|
149
|
-
# 'commands'
|
150
|
-
# end
|
151
|
-
#
|
152
|
-
# it 'shows a list of groups of available commands' do
|
153
|
-
# command_groups = {
|
154
|
-
# 'Important' => { 'help' => 'Get help.' },
|
155
|
-
#
|
156
|
-
# 'Misc' => {
|
157
|
-
# 'do_something' => 'Do something good.',
|
158
|
-
# 'do_something_else' => 'Do something really good.'
|
159
|
-
# }
|
160
|
-
# }
|
161
|
-
#
|
162
|
-
# stub_const('PuppetDebugger::Support::InputResponders::COMMAND_GROUPS', command_groups)
|
163
|
-
#
|
164
|
-
# debugger.handle_input(input)
|
165
|
-
#
|
166
|
-
# command_groups.each do |command_group|
|
167
|
-
# group_name = command_group[0]
|
168
|
-
# group_commands = command_group[1]
|
169
|
-
#
|
170
|
-
# expect(output.string).to match(group_name)
|
171
|
-
#
|
172
|
-
# group_commands.each do |command|
|
173
|
-
# command_name = command[0]
|
174
|
-
# command_description = command[1]
|
175
|
-
# expect(output.string).to match(command_name)
|
176
|
-
# expect(output.string).to match(command_description)
|
177
|
-
# end
|
178
|
-
# end
|
179
|
-
# end
|
180
|
-
# end
|
126
|
+
|
181
127
|
|
182
128
|
describe 'empty' do
|
183
129
|
let(:input) do
|
@@ -232,43 +178,6 @@ describe 'PuppetDebugger' do
|
|
232
178
|
end
|
233
179
|
end
|
234
180
|
|
235
|
-
describe 'classification' do
|
236
|
-
let(:input) do
|
237
|
-
'classification'
|
238
|
-
end
|
239
|
-
|
240
|
-
it 'can process a file' do
|
241
|
-
debugger.handle_input(input)
|
242
|
-
expect(output.string).to eq("\n[]\n")
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
describe 'reset' do
|
247
|
-
let(:input) do
|
248
|
-
"file{'/tmp/reset': ensure => present}"
|
249
|
-
end
|
250
|
-
|
251
|
-
it 'can process a file' do
|
252
|
-
debugger_output = /Puppet::Type::File/
|
253
|
-
debugger.handle_input(input)
|
254
|
-
expect(output.string).to match(debugger_output)
|
255
|
-
debugger.handle_input('reset')
|
256
|
-
debugger.handle_input(input)
|
257
|
-
expect(output.string).to match(debugger_output)
|
258
|
-
end
|
259
|
-
|
260
|
-
describe 'loglevel' do
|
261
|
-
it 'has not changed' do
|
262
|
-
debugger.handle_input(':set loglevel debug')
|
263
|
-
expect(Puppet::Util::Log.level).to eq(:debug)
|
264
|
-
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
265
|
-
debugger.handle_input('reset')
|
266
|
-
expect(Puppet::Util::Log.level).to eq(:debug)
|
267
|
-
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
268
|
-
end
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
181
|
describe 'map block' do
|
273
182
|
let(:input) do
|
274
183
|
"['/tmp/test3', '/tmp/test4'].map |String $path| { file{$path: ensure => present} }"
|
@@ -291,165 +200,27 @@ describe 'PuppetDebugger' do
|
|
291
200
|
end
|
292
201
|
end
|
293
202
|
|
294
|
-
describe '
|
295
|
-
let(:input) do
|
296
|
-
'$::fqdn'
|
297
|
-
end
|
298
|
-
it 'should be able to resolve fqdn' do
|
299
|
-
debugger_output = /foo\.example\.com/
|
300
|
-
debugger.handle_input(input)
|
301
|
-
expect(output.string).to match(debugger_output)
|
302
|
-
end
|
303
|
-
end
|
304
|
-
|
305
|
-
describe 'print facts' do
|
203
|
+
describe 'string' do
|
306
204
|
let(:input) do
|
307
|
-
'
|
205
|
+
'String'
|
308
206
|
end
|
309
|
-
it '
|
310
|
-
debugger_output = /kernel/
|
207
|
+
it 'shows type' do
|
311
208
|
debugger.handle_input(input)
|
312
|
-
expect(output.string).to
|
209
|
+
expect(output.string).to eq("\n => String\n")
|
313
210
|
end
|
314
211
|
end
|
315
|
-
|
316
|
-
describe 'print resources' do
|
212
|
+
describe 'Array', type_function: true do
|
317
213
|
let(:input) do
|
318
|
-
'
|
319
|
-
end
|
320
|
-
it 'should be able to print resources' do
|
321
|
-
debugger_output = /main/
|
322
|
-
debugger.handle_input(input)
|
323
|
-
expect(output.string).to match(debugger_output)
|
214
|
+
'type([1,2,3,4])'
|
324
215
|
end
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
"Class['settings']"
|
330
|
-
end
|
331
|
-
it 'should be able to print classes' do
|
332
|
-
debugger_output = /Settings/
|
333
|
-
debugger.handle_input(input)
|
334
|
-
expect(output.string).to match(debugger_output)
|
335
|
-
end
|
336
|
-
end
|
337
|
-
|
338
|
-
describe 'print classes' do
|
339
|
-
let(:input) do
|
340
|
-
'resources'
|
341
|
-
end
|
342
|
-
it 'should be able to print classes' do
|
343
|
-
debugger_output = /Settings/
|
344
|
-
debugger.handle_input(input)
|
345
|
-
expect(output.string).to match(debugger_output)
|
346
|
-
end
|
347
|
-
end
|
348
|
-
|
349
|
-
describe 'set' do
|
350
|
-
let(:input) do
|
351
|
-
':set loglevel debug'
|
352
|
-
end
|
353
|
-
it 'should set the loglevel' do
|
354
|
-
debugger_output = /loglevel debug is set/
|
355
|
-
debugger.handle_input(input)
|
356
|
-
expect(output.string).to match(debugger_output)
|
357
|
-
expect(Puppet::Util::Log.level).to eq(:debug)
|
358
|
-
expect(Puppet::Util::Log.destinations[:buffer].name).to eq(:buffer)
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
describe 'vars' do
|
363
|
-
let(:input) do
|
364
|
-
'vars'
|
365
|
-
end
|
366
|
-
it 'display facts variable' do
|
367
|
-
debugger_output = /facts/
|
368
|
-
debugger.handle_input(input)
|
369
|
-
expect(output.string).to match(debugger_output)
|
370
|
-
end
|
371
|
-
it 'display server facts variable' do
|
372
|
-
debugger_output = /server_facts/
|
373
|
-
debugger.handle_input(input)
|
374
|
-
expect(output.string).to match(debugger_output) if Puppet.version.to_f >= 4.1
|
375
|
-
end
|
376
|
-
it 'display serverversion variable' do
|
377
|
-
debugger_output = /serverversion/
|
378
|
-
debugger.handle_input(input)
|
379
|
-
expect(output.string).to match(debugger_output) if Puppet.version.to_f >= 4.1
|
380
|
-
end
|
381
|
-
it 'display local variable' do
|
382
|
-
debugger.handle_input("$var1 = 'value1'")
|
383
|
-
expect(output.string).to match(/value1/)
|
384
|
-
debugger.handle_input('$var1')
|
385
|
-
expect(output.string).to match(/value1/)
|
386
|
-
end
|
387
|
-
end
|
388
|
-
|
389
|
-
describe 'execute functions' do
|
390
|
-
let(:input) do
|
391
|
-
"md5('hello')"
|
392
|
-
end
|
393
|
-
it 'execute md5' do
|
394
|
-
debugger_output = /5d41402abc4b2a76b9719d911017c592/
|
395
|
-
debugger.handle_input(input)
|
396
|
-
expect(output.string).to match(debugger_output)
|
397
|
-
end
|
398
|
-
it 'execute swapcase' do
|
399
|
-
debugger_output = /HELLO/
|
400
|
-
debugger.handle_input("swapcase('hello')")
|
401
|
-
expect(output.string).to match(debugger_output)
|
402
|
-
end
|
403
|
-
end
|
404
|
-
|
405
|
-
describe 'datatypes' do
|
406
|
-
let(:input) do
|
407
|
-
'datatypes'
|
408
|
-
end
|
409
|
-
it 'handle datatypes' do
|
410
|
-
debugger.handle_input(input)
|
411
|
-
if Gem::Version.new(Puppet.version) < Gem::Version.new('4.5.0')
|
412
|
-
expect(output.string).to eq("\n[]\n")
|
413
|
-
else
|
414
|
-
expect(output.string).to match(/.*Array.*/)
|
216
|
+
it 'shows type' do
|
217
|
+
if Gem::Version.new(Puppet.version) > Gem::Version.new('4.4')
|
218
|
+
debugger.handle_input(input)
|
219
|
+
expect(output.string).to eq("\n => Tuple[Integer[1, 1], Integer[2, 2], Integer[3, 3], Integer[4, 4]]\n") if supports_type_function?
|
415
220
|
end
|
416
221
|
end
|
417
222
|
end
|
418
223
|
|
419
|
-
describe 'whereami' do
|
420
|
-
let(:input) do
|
421
|
-
File.expand_path File.join(fixtures_dir, 'sample_start_debugger.pp')
|
422
|
-
end
|
423
|
-
let(:options) do
|
424
|
-
{
|
425
|
-
source_file: input,
|
426
|
-
source_line: 10
|
427
|
-
}
|
428
|
-
end
|
429
|
-
|
430
|
-
before(:each) do
|
431
|
-
debugger.handle_input('whereami')
|
432
|
-
end
|
433
|
-
|
434
|
-
it 'runs' do
|
435
|
-
expect(output.string).to match(/\s+5/)
|
436
|
-
end
|
437
|
-
|
438
|
-
it 'contains marker' do
|
439
|
-
expect(output.string).to match(/\s+=>\s10/)
|
440
|
-
end
|
441
|
-
end
|
442
|
-
|
443
|
-
describe 'types' do
|
444
|
-
let(:input) do
|
445
|
-
'types'
|
446
|
-
end
|
447
|
-
it 'runs' do
|
448
|
-
debugger.handle_input(input)
|
449
|
-
expect(output.string).to match(/service/)
|
450
|
-
end
|
451
|
-
end
|
452
|
-
|
453
224
|
describe 'error message' do
|
454
225
|
let(:input) do
|
455
226
|
"file{'/tmp/test': ensure => present, contact => 'blah'}"
|
@@ -468,33 +239,4 @@ describe 'PuppetDebugger' do
|
|
468
239
|
end
|
469
240
|
end
|
470
241
|
end
|
471
|
-
|
472
|
-
describe 'benchmark' do
|
473
|
-
let(:input) do
|
474
|
-
"benchmark md5('12345')"
|
475
|
-
end
|
476
|
-
describe 'mode' do
|
477
|
-
before(:each) do
|
478
|
-
debugger.handle_input('benchmark') # enable
|
479
|
-
end
|
480
|
-
it 'enable' do
|
481
|
-
debugger.handle_input("md5('12345')")
|
482
|
-
expect(output.string).to match(/Benchmark\ Mode\ On/)
|
483
|
-
expect(output.string).to match(/Time\ elapsed/)
|
484
|
-
end
|
485
|
-
it 'disable' do
|
486
|
-
debugger.handle_input('benchmark') # disable
|
487
|
-
expect(output.string).to match(/Benchmark\ Mode\ Off/)
|
488
|
-
end
|
489
|
-
end
|
490
|
-
|
491
|
-
describe 'onetime' do
|
492
|
-
it 'run' do
|
493
|
-
debugger.handle_input("benchmark md5('12345')")
|
494
|
-
expect(output.string).to_not match(/Benchmark\ Mode\ On/)
|
495
|
-
expect(output.string).to_not match(/Benchmark\ Mode\ Off/)
|
496
|
-
expect(output.string).to match(/Time\ elapsed/)
|
497
|
-
end
|
498
|
-
end
|
499
|
-
end
|
500
242
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-debugger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pluginator
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.5.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: puppet
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,9 +174,25 @@ files:
|
|
174
174
|
- spec/fixtures/sample_start_debugger.pp
|
175
175
|
- spec/hooks_spec.rb
|
176
176
|
- spec/input_responder_plugin_spec.rb
|
177
|
+
- spec/input_responders/benchmark_spec.rb
|
178
|
+
- spec/input_responders/classes_spec.rb
|
179
|
+
- spec/input_responders/classification_spec.rb
|
180
|
+
- spec/input_responders/commands_spec.rb
|
181
|
+
- spec/input_responders/datatypes_spec.rb
|
182
|
+
- spec/input_responders/environment_spec.rb
|
183
|
+
- spec/input_responders/exit_spec.rb
|
184
|
+
- spec/input_responders/facterdb_filter_spec.rb
|
185
|
+
- spec/input_responders/facts_spec.rb
|
186
|
+
- spec/input_responders/functions_spec.rb
|
177
187
|
- spec/input_responders/help_spec.rb
|
178
188
|
- spec/input_responders/krt_spec.rb
|
179
189
|
- spec/input_responders/play_spec.rb
|
190
|
+
- spec/input_responders/reset_spec.rb
|
191
|
+
- spec/input_responders/resources_spec.rb
|
192
|
+
- spec/input_responders/set_spec.rb
|
193
|
+
- spec/input_responders/types_spec.rb
|
194
|
+
- spec/input_responders/vars_spec.rb
|
195
|
+
- spec/input_responders/whereami_spec.rb
|
180
196
|
- spec/pdb_spec.rb
|
181
197
|
- spec/puppet/application/debugger_spec.rb
|
182
198
|
- spec/puppet_debugger_spec.rb
|