puppet-debugger 0.12.0 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|