puppet-debugger 0.12.0 → 0.12.1
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/CHANGELOG.md +5 -0
- data/lib/puppet-debugger/cli.rb +33 -30
- data/lib/puppet-debugger/input_responder_plugin.rb +5 -1
- data/lib/puppet-debugger/version.rb +1 -1
- data/spec/puppet_debugger_spec.rb +66 -69
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d8a6792ac8befb2af4d9769af6b2ef803ae018c
|
4
|
+
data.tar.gz: d23e13a008ddf75f72883db3e79bab7e6cfb8ef8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd3c1d7e97f909563ea3d1fa6f08ff836e8fc16732fd151b6f1ab80fce6fd96c1a9199bcc936cb58302340b40c2dd991aa97b60ff06c0729c0a76067bd00dd94
|
7
|
+
data.tar.gz: 1006a7f6453775c5d6b8ed307224fad0236c389bd404c475a9d24b4404153652676504d5c315132306888032f3b98ad138b50e3da296c040fd11c4dfb663501b
|
data/CHANGELOG.md
CHANGED
data/lib/puppet-debugger/cli.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
3
|
+
require "puppet"
|
4
|
+
require "readline"
|
5
|
+
require "json"
|
6
|
+
require "puppet-debugger/support"
|
7
|
+
require "pluginator"
|
8
|
+
require "puppet-debugger/hooks"
|
9
|
+
require "forwardable"
|
10
|
+
require "plugins/puppet-debugger/input_responders/functions"
|
11
|
+
require "plugins/puppet-debugger/input_responders/datatypes"
|
10
12
|
|
11
13
|
module PuppetDebugger
|
12
14
|
class Cli
|
@@ -23,19 +25,19 @@ module PuppetDebugger
|
|
23
25
|
Puppet[:static_catalogs] = false unless Puppet.settings[:static_catalogs].nil?
|
24
26
|
set_remote_node_name(options[:node_name])
|
25
27
|
initialize_from_scope(options[:scope])
|
26
|
-
@log_level =
|
28
|
+
@log_level = "notice"
|
27
29
|
@out_buffer = options[:out_buffer] || $stdout
|
28
30
|
@html_mode = options[:html_mode] || false
|
29
31
|
@source_file = options[:source_file] || nil
|
30
32
|
@source_line_num = options[:source_line] || nil
|
31
33
|
@in_buffer = options[:in_buffer] || $stdin
|
32
|
-
Readline.completion_append_character =
|
33
|
-
Readline.basic_word_break_characters =
|
34
|
+
Readline.completion_append_character = ""
|
35
|
+
Readline.basic_word_break_characters = " "
|
34
36
|
Readline.completion_proc = command_completion
|
35
37
|
AwesomePrint.defaults = {
|
36
38
|
html: @html_mode,
|
37
39
|
sort_keys: true,
|
38
|
-
indent: 2
|
40
|
+
indent: 2,
|
39
41
|
}
|
40
42
|
end
|
41
43
|
|
@@ -48,7 +50,7 @@ module PuppetDebugger
|
|
48
50
|
next key_words.grep(/^#{Regexp.escape(input)}/) if words.empty?
|
49
51
|
first_word = words.shift
|
50
52
|
plugins = PuppetDebugger::InputResponders::Commands.plugins.find_all do |p|
|
51
|
-
p::COMMAND_WORDS.find { |word| word.start_with?(first_word)}
|
53
|
+
p::COMMAND_WORDS.find { |word| word.start_with?(first_word) }
|
52
54
|
end
|
53
55
|
if plugins.count == 1 and /\A#{first_word}\s/.match(Readline.line_buffer)
|
54
56
|
plugins.first.command_completion(words)
|
@@ -69,6 +71,7 @@ module PuppetDebugger
|
|
69
71
|
variables = scope.to_hash.keys
|
70
72
|
# prepend a :: to topscope variables
|
71
73
|
scoped_vars = variables.map { |k, _v| scope.compiler.topscope.exist?(k) ? "$::#{k}" : "$#{k}" }
|
74
|
+
PuppetDebugger::InputResponders::Functions.instance.debugger = self
|
72
75
|
funcs = PuppetDebugger::InputResponders::Functions.instance.func_list
|
73
76
|
PuppetDebugger::InputResponders::Datatypes.instance.debugger = self
|
74
77
|
(scoped_vars + funcs + static_responder_list + PuppetDebugger::InputResponders::Datatypes.instance.all_data_types).uniq.sort
|
@@ -93,7 +96,7 @@ module PuppetDebugger
|
|
93
96
|
# don't return anything or returns nil if item is not in the catalog
|
94
97
|
end
|
95
98
|
|
96
|
-
#
|
99
|
+
#
|
97
100
|
# @return [Array] - returns a formatted array
|
98
101
|
# @param types [Array] - an array or string
|
99
102
|
def expand_resource_type(types)
|
@@ -101,7 +104,7 @@ module PuppetDebugger
|
|
101
104
|
end
|
102
105
|
|
103
106
|
def contains_resources?(result)
|
104
|
-
!
|
107
|
+
!Array(result).flatten.find { |r| r.class.to_s =~ /Puppet::Pops::Types/ }.nil?
|
105
108
|
end
|
106
109
|
|
107
110
|
def normalize_output(result)
|
@@ -125,21 +128,21 @@ module PuppetDebugger
|
|
125
128
|
def handle_input(input)
|
126
129
|
raise ArgumentError unless input.instance_of?(String)
|
127
130
|
begin
|
128
|
-
output =
|
131
|
+
output = ""
|
129
132
|
case input.strip
|
130
133
|
when PuppetDebugger::InputResponders::Commands.command_list_regex
|
131
|
-
args = input.split(
|
134
|
+
args = input.split(" ")
|
132
135
|
command = args.shift
|
133
136
|
plugin = PuppetDebugger::InputResponders::Commands.plugin_from_command(command)
|
134
137
|
output = plugin.execute(args, self)
|
135
138
|
return out_buffer.puts output
|
136
|
-
when
|
139
|
+
when "_"
|
137
140
|
output = " => #{@last_item}"
|
138
141
|
else
|
139
142
|
result = puppet_eval(input)
|
140
143
|
@last_item = result
|
141
144
|
output = normalize_output(result)
|
142
|
-
output = output.nil? ?
|
145
|
+
output = output.nil? ? "" : output.ai
|
143
146
|
end
|
144
147
|
rescue PuppetDebugger::Exception::InvalidCommand => e
|
145
148
|
output = e.message.fatal
|
@@ -161,13 +164,13 @@ module PuppetDebugger
|
|
161
164
|
exit 1 # this can sometimes causes tests to fail
|
162
165
|
rescue PuppetDebugger::Exception::Error => e
|
163
166
|
output = e.message.fatal
|
164
|
-
rescue
|
167
|
+
rescue ::RuntimeError => e
|
165
168
|
output = e.message.fatal
|
166
169
|
out_buffer.puts output
|
167
170
|
exit 1
|
168
171
|
end
|
169
172
|
unless output.empty?
|
170
|
-
out_buffer.print
|
173
|
+
out_buffer.print " => "
|
171
174
|
out_buffer.puts output unless output.empty?
|
172
175
|
exec_hook :after_output, out_buffer, self, self
|
173
176
|
end
|
@@ -206,7 +209,7 @@ or "help" to show the help screen.
|
|
206
209
|
# input
|
207
210
|
def read_loop
|
208
211
|
line_number = 1
|
209
|
-
full_buffer =
|
212
|
+
full_buffer = ""
|
210
213
|
while buf = Readline.readline("#{line_number}:#{extra_prompt}>> ", true)
|
211
214
|
begin
|
212
215
|
full_buffer += buf
|
@@ -217,14 +220,14 @@ or "help" to show the help screen.
|
|
217
220
|
parser.parse_string(full_buffer)
|
218
221
|
rescue Puppet::ParseErrorWithIssue => e
|
219
222
|
if multiline_input?(e)
|
220
|
-
out_buffer.print
|
223
|
+
out_buffer.print " "
|
221
224
|
full_buffer += "\n"
|
222
225
|
next
|
223
226
|
end
|
224
227
|
end
|
225
228
|
end
|
226
229
|
handle_input(full_buffer)
|
227
|
-
full_buffer =
|
230
|
+
full_buffer = ""
|
228
231
|
end
|
229
232
|
end
|
230
233
|
end
|
@@ -239,7 +242,7 @@ or "help" to show the help screen.
|
|
239
242
|
repl_obj = PuppetDebugger::Cli.new(options)
|
240
243
|
options[:play] = options[:play].path if options[:play].respond_to?(:path)
|
241
244
|
# TODO: make the output optional so we can have different output destinations
|
242
|
-
repl_obj.handle_input(
|
245
|
+
repl_obj.handle_input("whereami") if options[:source_file] && options[:source_line]
|
243
246
|
repl_obj.handle_input("play #{options[:play]}") if options[:play]
|
244
247
|
repl_obj.read_loop unless options[:run_once]
|
245
248
|
end
|
@@ -250,10 +253,10 @@ or "help" to show the help screen.
|
|
250
253
|
# @param [Hash] puppet scope object
|
251
254
|
def self.start(options = { scope: nil })
|
252
255
|
opts = Trollop.options do
|
253
|
-
opt :play,
|
254
|
-
opt :run_once,
|
255
|
-
opt :node_name,
|
256
|
-
opt :quiet,
|
256
|
+
opt :play, "Url or file to load from", required: false, type: String
|
257
|
+
opt :run_once, "Evaluate and quit", required: false, default: false
|
258
|
+
opt :node_name, "Remote Node to grab facts from", required: false, type: String
|
259
|
+
opt :quiet, "Do not display banner", required: false, default: false
|
257
260
|
end
|
258
261
|
options = opts.merge(options)
|
259
262
|
puts print_repl_desc unless options[:quiet]
|
@@ -261,11 +264,11 @@ or "help" to show the help screen.
|
|
261
264
|
repl_obj = PuppetDebugger::Cli.new(options)
|
262
265
|
if options[:play]
|
263
266
|
repl_obj.handle_input("play #{options[:play]}")
|
264
|
-
elsif ARGF.filename !=
|
267
|
+
elsif ARGF.filename != "-"
|
265
268
|
# when the user supplied a file name without using the args (stdin)
|
266
269
|
path = File.expand_path(ARGF.filename)
|
267
270
|
repl_obj.handle_input("play #{path}")
|
268
|
-
elsif (ARGF.filename ==
|
271
|
+
elsif (ARGF.filename == "-") && (!STDIN.tty? && !STDIN.closed?)
|
269
272
|
# when the user supplied a file content using stdin, aka. cat,pipe,echo or redirection
|
270
273
|
input = ARGF.read
|
271
274
|
repl_obj.handle_input(input)
|
@@ -8,7 +8,7 @@ module PuppetDebugger
|
|
8
8
|
extend Forwardable
|
9
9
|
attr_accessor :debugger
|
10
10
|
def_delegators :debugger, :scope, :node, :environment, :loaders, :puppet_environment,
|
11
|
-
:add_hook, :handle_input, :delete_hook, :puppet_lib_dir
|
11
|
+
:add_hook, :handle_input, :delete_hook, :puppet_lib_dir
|
12
12
|
def_delegators :scope, :compiler, :catalog
|
13
13
|
def_delegators :node, :facts
|
14
14
|
|
@@ -17,6 +17,10 @@ module PuppetDebugger
|
|
17
17
|
self::COMMAND_WORDS
|
18
18
|
end
|
19
19
|
|
20
|
+
def modules_paths
|
21
|
+
debugger.puppet_environment.full_modulepath
|
22
|
+
end
|
23
|
+
|
20
24
|
# @return [String] a summary of the plugin
|
21
25
|
def self.summary
|
22
26
|
self::SUMMARY
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
describe
|
3
|
+
require "spec_helper"
|
4
|
+
require "stringio"
|
5
|
+
describe "PuppetDebugger" do
|
6
6
|
let(:resource) do
|
7
7
|
"service{'httpd': ensure => running}"
|
8
8
|
end
|
9
9
|
|
10
10
|
before(:each) do
|
11
|
-
debugger.handle_input(
|
11
|
+
debugger.handle_input("reset")
|
12
12
|
end
|
13
13
|
|
14
14
|
let(:output) do
|
@@ -31,10 +31,10 @@ describe 'PuppetDebugger' do
|
|
31
31
|
debugger.parser.evaluate_string(debugger.scope, input)
|
32
32
|
end
|
33
33
|
|
34
|
-
describe
|
35
|
-
describe
|
34
|
+
describe "native classes" do
|
35
|
+
describe "create" do
|
36
36
|
let(:input) do
|
37
|
-
|
37
|
+
"class testfoo {}"
|
38
38
|
end
|
39
39
|
let(:debugger_output) do
|
40
40
|
"\n => Puppet::Type::Component {\n loglevel\e[0;37m => \e[0m\e[0;36mnotice\e[0m,\n name\e[0;37m => \e[0m\e[0;33m\"Testfoo\"\e[0m,\n title\e[0;37m => \e[0m\e[0;33m\"Class[Testfoo]\"\e[0m\n}\n"
|
@@ -42,45 +42,45 @@ describe 'PuppetDebugger' do
|
|
42
42
|
it do
|
43
43
|
debugger.handle_input(input)
|
44
44
|
expect(output.string).to eq("\n")
|
45
|
-
expect(debugger.known_resource_types[:hostclasses]).to include(
|
45
|
+
expect(debugger.known_resource_types[:hostclasses]).to include("testfoo")
|
46
46
|
end
|
47
47
|
it do
|
48
48
|
debugger.handle_input(input)
|
49
|
-
debugger.handle_input(
|
50
|
-
expect(debugger.scope.compiler.catalog.classes).to include(
|
49
|
+
debugger.handle_input("include testfoo")
|
50
|
+
expect(debugger.scope.compiler.catalog.classes).to include("testfoo")
|
51
51
|
end
|
52
52
|
it do
|
53
53
|
debugger.handle_input(input)
|
54
|
-
debugger.handle_input(
|
55
|
-
expect(debugger.scope.compiler.catalog.resources.map(&:name)).to include(
|
54
|
+
debugger.handle_input("include testfoo")
|
55
|
+
expect(debugger.scope.compiler.catalog.resources.map(&:name)).to include("Testfoo")
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
describe
|
61
|
-
describe
|
60
|
+
describe "native definitions" do
|
61
|
+
describe "create" do
|
62
62
|
let(:input) do
|
63
|
-
|
63
|
+
"define testfoodefine {}"
|
64
64
|
end
|
65
65
|
let(:debugger_output) do
|
66
66
|
"\n => Puppet::Type::Component {\n loglevel\e[0;37m => \e[0m\e[0;36mnotice\e[0m,\n name\e[0;37m => \e[0m\e[0;33m\"some_name\"\e[0m,\n title\e[0;37m => \e[0m\e[0;33m\"Testfoo[some_name]\"\e[0m\n}\n"
|
67
67
|
end
|
68
68
|
it do
|
69
69
|
debugger.handle_input(input)
|
70
|
-
expect(debugger.scope.environment.known_resource_types.definitions.keys).to include(
|
70
|
+
expect(debugger.scope.environment.known_resource_types.definitions.keys).to include("testfoodefine")
|
71
71
|
expect(output.string).to eq("\n")
|
72
72
|
end
|
73
73
|
it do
|
74
74
|
debugger.handle_input(input)
|
75
75
|
debugger.handle_input("testfoodefine{'some_name':}")
|
76
|
-
expect(debugger.scope.compiler.resources.collect(&:name)).to include(
|
77
|
-
expect(debugger.scope.compiler.resources.collect(&:type)).to include(
|
76
|
+
expect(debugger.scope.compiler.resources.collect(&:name)).to include("some_name")
|
77
|
+
expect(debugger.scope.compiler.resources.collect(&:type)).to include("Testfoodefine")
|
78
78
|
expect(output.string).to include("\n => Puppet::Type::Component")
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
describe
|
83
|
+
describe "key_words" do
|
84
84
|
it do
|
85
85
|
expect(debugger.key_words.count).to be >= 30 if supports_datatypes?
|
86
86
|
end
|
@@ -90,7 +90,7 @@ describe 'PuppetDebugger' do
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
describe
|
93
|
+
describe "native functions", native_functions: true do
|
94
94
|
let(:func) do
|
95
95
|
<<-EOF
|
96
96
|
function debugger::bool2http($arg) {
|
@@ -105,12 +105,12 @@ describe 'PuppetDebugger' do
|
|
105
105
|
before(:each) do
|
106
106
|
debugger.handle_input(func)
|
107
107
|
end
|
108
|
-
describe
|
109
|
-
it
|
108
|
+
describe "create" do
|
109
|
+
it "shows function" do
|
110
110
|
expect(output.string).to eq("\n")
|
111
111
|
end
|
112
112
|
end
|
113
|
-
describe
|
113
|
+
describe "run" do
|
114
114
|
let(:input) do
|
115
115
|
<<-EOF
|
116
116
|
debugger::bool2http(false)
|
@@ -118,37 +118,31 @@ describe 'PuppetDebugger' do
|
|
118
118
|
end
|
119
119
|
it do
|
120
120
|
debugger.handle_input(input)
|
121
|
-
expect(output.string).to include(
|
121
|
+
expect(output.string).to include("Off")
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
describe 'returns a array of resource_types' do
|
131
|
-
it 'returns resource type' do
|
132
|
-
expect(resource_types.first.class.to_s).to eq('Puppet::Pops::Types::PResourceType')
|
126
|
+
describe "returns a array of resource_types" do
|
127
|
+
it "returns resource type" do
|
128
|
+
expect(resource_types.first.class.to_s).to eq("Puppet::Pops::Types::PResourceType")
|
133
129
|
end
|
134
130
|
end
|
135
131
|
|
136
|
-
|
137
|
-
|
138
|
-
describe 'empty' do
|
132
|
+
describe "empty" do
|
139
133
|
let(:input) do
|
140
|
-
|
134
|
+
""
|
141
135
|
end
|
142
|
-
it
|
136
|
+
it "can run" do
|
143
137
|
debugger_output = "\n"
|
144
138
|
debugger.handle_input(input)
|
145
139
|
expect(output.string).to eq(debugger_output)
|
146
140
|
end
|
147
|
-
describe
|
141
|
+
describe "space" do
|
148
142
|
let(:input) do
|
149
|
-
|
143
|
+
" "
|
150
144
|
end
|
151
|
-
it
|
145
|
+
it "can run" do
|
152
146
|
debugger_output = "\n"
|
153
147
|
debugger.handle_input(input)
|
154
148
|
expect(output.string).to eq(debugger_output)
|
@@ -156,111 +150,114 @@ describe 'PuppetDebugger' do
|
|
156
150
|
end
|
157
151
|
end
|
158
152
|
|
159
|
-
describe
|
153
|
+
describe "variables" do
|
160
154
|
let(:input) do
|
161
155
|
"$file_path = '/tmp/test2.txt'"
|
162
156
|
end
|
163
|
-
it
|
157
|
+
it "can process a variable" do
|
164
158
|
debugger.handle_input(input)
|
165
159
|
expect(output.string).to match(/\/tmp\/test2.txt/)
|
166
160
|
end
|
167
161
|
end
|
168
162
|
|
169
|
-
describe
|
163
|
+
describe "resource" do
|
170
164
|
let(:input) do
|
171
165
|
"file{'/tmp/test2.txt': ensure => present, mode => '0755'}"
|
172
166
|
end
|
173
|
-
it
|
167
|
+
it "can process a resource" do
|
174
168
|
debugger_output = /Puppet::Type::File/
|
175
169
|
debugger.handle_input(input)
|
176
170
|
expect(output.string).to match(debugger_output)
|
177
171
|
end
|
178
172
|
end
|
179
173
|
|
180
|
-
describe
|
174
|
+
describe "bad input" do
|
181
175
|
let(:input) do
|
182
|
-
|
176
|
+
"Service{"
|
183
177
|
end
|
184
|
-
it
|
178
|
+
it "can process" do
|
185
179
|
debugger.handle_input(input)
|
186
180
|
expect(output.string).to match(%r(Syntax error at end of))
|
187
181
|
end
|
188
182
|
end
|
189
183
|
|
190
|
-
describe
|
184
|
+
describe "map block" do
|
191
185
|
let(:input) do
|
192
186
|
"['/tmp/test3', '/tmp/test4'].map |String $path| { file{$path: ensure => present} }"
|
193
187
|
end
|
194
|
-
it
|
188
|
+
it "can process a each block" do
|
195
189
|
debugger_output = /Puppet::Type::File/
|
196
190
|
debugger.handle_input(input)
|
197
191
|
expect(output.string).to match(debugger_output)
|
198
192
|
end
|
199
193
|
end
|
200
194
|
|
201
|
-
describe
|
195
|
+
describe "each block" do
|
202
196
|
let(:input) do
|
203
197
|
"['/tmp/test3', '/tmp/test4'].each |String $path| { file{$path: ensure => present} }"
|
204
198
|
end
|
205
|
-
it
|
199
|
+
it "can process a each block" do
|
206
200
|
debugger.handle_input(input)
|
207
201
|
expect(output.string).to match(/\/tmp\/test3/)
|
208
202
|
expect(output.string).to match(/\/tmp\/test4/)
|
209
203
|
end
|
210
204
|
end
|
211
205
|
|
212
|
-
describe
|
206
|
+
describe "string" do
|
213
207
|
let(:input) do
|
214
|
-
|
208
|
+
"String"
|
215
209
|
end
|
216
|
-
it
|
210
|
+
it "shows type" do
|
217
211
|
debugger.handle_input(input)
|
218
212
|
expect(output.string).to eq("\n => String\n")
|
219
213
|
end
|
220
214
|
end
|
221
|
-
describe
|
215
|
+
describe "Array", type_function: true do
|
222
216
|
let(:input) do
|
223
|
-
|
217
|
+
"type([1,2,3,4])"
|
224
218
|
end
|
225
|
-
it
|
226
|
-
if Gem::Version.new(Puppet.version) > Gem::Version.new(
|
219
|
+
it "shows type" do
|
220
|
+
if Gem::Version.new(Puppet.version) > Gem::Version.new("4.4")
|
227
221
|
debugger.handle_input(input)
|
228
222
|
expect(output.string.strip.split("\n").count).to eq(6)
|
229
223
|
end
|
230
224
|
end
|
231
225
|
end
|
232
226
|
|
233
|
-
describe
|
227
|
+
describe "multi diemension array" do
|
234
228
|
let(:input) do
|
235
|
-
|
229
|
+
"[[1, [23,4], [22], [1,[2232]]]]"
|
236
230
|
end
|
237
|
-
|
238
|
-
it
|
231
|
+
|
232
|
+
it "handles multi array" do
|
239
233
|
debugger.handle_input(input)
|
240
|
-
expect(output.string.count(
|
234
|
+
expect(output.string.count("[")).to be >= 17
|
241
235
|
end
|
242
|
-
|
243
236
|
end
|
244
237
|
|
245
|
-
describe
|
246
|
-
it
|
238
|
+
describe "command_completion" do
|
239
|
+
it "should complete on tabs" do
|
247
240
|
allow(Readline).to receive(:line_buffer).and_return("\n")
|
248
241
|
expect(debugger.command_completion.call("").count).to be >= 200
|
249
242
|
end
|
243
|
+
|
244
|
+
it "#key_words" do
|
245
|
+
expect(debugger.key_words.count).to be >= 100
|
246
|
+
end
|
250
247
|
end
|
251
248
|
|
252
|
-
describe
|
249
|
+
describe "error message" do
|
253
250
|
let(:input) do
|
254
251
|
"file{'/tmp/test': ensure => present, contact => 'blah'}"
|
255
252
|
end
|
256
|
-
if Gem::Version.new(Puppet.version) >= Gem::Version.new(
|
257
|
-
it
|
253
|
+
if Gem::Version.new(Puppet.version) >= Gem::Version.new("4.0")
|
254
|
+
it "show error message" do
|
258
255
|
debugger_output = /no\ parameter\ named\ 'contact'/
|
259
256
|
debugger.handle_input(input)
|
260
257
|
expect(output.string).to match(debugger_output)
|
261
258
|
end
|
262
259
|
else
|
263
|
-
it
|
260
|
+
it "show error message" do
|
264
261
|
debugger_output = /Invalid\ parameter\ contact/
|
265
262
|
debugger.handle_input(input)
|
266
263
|
expect(output.string).to match(debugger_output)
|
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.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: table_print
|