puppet-debugger 0.16.0 → 1.1.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/.gitlab-ci.yml +10 -26
- data/.rubocop.yml +64 -232
- data/.rubocop_todo.yml +89 -147
- data/.ruby-version +1 -1
- data/.vscode/launch.json +15 -0
- data/CHANGELOG.md +34 -0
- data/Gemfile +7 -5
- data/README.md +29 -261
- data/Rakefile +11 -12
- data/bin/pdb +1 -1
- data/lib/awesome_print/ext/awesome_puppet.rb +10 -8
- data/lib/plugins/puppet-debugger/input_responders/benchmark.rb +5 -4
- data/lib/plugins/puppet-debugger/input_responders/classes.rb +14 -2
- data/lib/plugins/puppet-debugger/input_responders/classification.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/commands.rb +18 -18
- data/lib/plugins/puppet-debugger/input_responders/datatypes.rb +22 -6
- data/lib/plugins/puppet-debugger/input_responders/environment.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/exit.rb +5 -3
- data/lib/plugins/puppet-debugger/input_responders/facterdb_filter.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/facts.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/functions.rb +34 -32
- data/lib/plugins/puppet-debugger/input_responders/help.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/krt.rb +4 -2
- data/lib/plugins/puppet-debugger/input_responders/play.rb +22 -24
- data/lib/plugins/puppet-debugger/input_responders/reset.rb +5 -3
- data/lib/plugins/puppet-debugger/input_responders/resources.rb +16 -7
- data/lib/plugins/puppet-debugger/input_responders/set.rb +34 -32
- data/lib/plugins/puppet-debugger/input_responders/stacktrace.rb +31 -0
- data/lib/plugins/puppet-debugger/input_responders/types.rb +6 -2
- data/lib/plugins/puppet-debugger/input_responders/vars.rb +8 -7
- data/lib/plugins/puppet-debugger/input_responders/whereami.rb +5 -3
- data/lib/puppet-debugger.rb +1 -45
- data/lib/puppet-debugger/cli.rb +130 -92
- data/lib/puppet-debugger/code/code_file.rb +13 -14
- data/lib/puppet-debugger/code/code_range.rb +5 -3
- data/lib/puppet-debugger/code/loc.rb +1 -1
- data/lib/puppet-debugger/debugger_code.rb +2 -0
- data/lib/puppet-debugger/hooks.rb +15 -16
- data/lib/puppet-debugger/input_responder_plugin.rb +54 -52
- data/lib/puppet-debugger/monkey_patches.rb +57 -0
- data/lib/puppet-debugger/plugin_test_helper.rb +9 -8
- data/lib/puppet-debugger/support.rb +27 -17
- data/lib/puppet-debugger/support/environment.rb +6 -5
- data/lib/puppet-debugger/support/errors.rb +25 -27
- data/lib/puppet-debugger/support/facts.rb +5 -5
- data/lib/puppet-debugger/support/node.rb +4 -7
- data/lib/puppet-debugger/support/scope.rb +29 -0
- data/lib/puppet-debugger/trollop.rb +38 -31
- data/lib/puppet-debugger/version.rb +1 -1
- data/lib/puppet/application/debugger.rb +151 -126
- data/output.json +1 -0
- data/puppet-debugger.gemspec +17 -15
- data/spec/awesome_print/ext/awesome_puppet_spec.rb +30 -30
- data/spec/fixtures/pe-xl-core-0.puppet.vm.json +1 -0
- data/spec/fixtures/sample_start_debugger.pp +3 -2
- data/spec/hooks_spec.rb +33 -35
- data/spec/input_responder_plugin_spec.rb +7 -6
- data/spec/input_responders/benchmark_spec.rb +3 -1
- data/spec/input_responders/classes_spec.rb +12 -13
- data/spec/input_responders/classification_spec.rb +4 -2
- data/spec/input_responders/commands_spec.rb +2 -0
- data/spec/input_responders/datatypes_spec.rb +8 -2
- data/spec/input_responders/environment_spec.rb +2 -0
- data/spec/input_responders/exit_spec.rb +9 -11
- data/spec/input_responders/facterdb_filter_spec.rb +2 -0
- data/spec/input_responders/facts_spec.rb +2 -0
- data/spec/input_responders/functions_spec.rb +30 -28
- data/spec/input_responders/help_spec.rb +5 -3
- data/spec/input_responders/krt_spec.rb +3 -1
- data/spec/input_responders/play_spec.rb +10 -20
- data/spec/input_responders/reset_spec.rb +2 -0
- data/spec/input_responders/resources_spec.rb +7 -1
- data/spec/input_responders/set_spec.rb +3 -1
- data/spec/input_responders/stacktrace_spec.rb +15 -0
- data/spec/input_responders/types_spec.rb +2 -0
- data/spec/input_responders/vars_spec.rb +4 -4
- data/spec/input_responders/whereami_spec.rb +2 -0
- data/spec/pdb_spec.rb +0 -9
- data/spec/puppet/application/debugger_spec.rb +35 -17
- data/spec/puppet_debugger_spec.rb +81 -83
- data/spec/remote_node_spec.rb +1 -5
- data/spec/spec_helper.rb +22 -18
- data/spec/support_spec.rb +3 -5
- data/test_matrix.rb +1 -1
- metadata +56 -22
@@ -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,56 +31,54 @@ 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
|
+
" => 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"
|
41
41
|
end
|
42
42
|
it do
|
43
43
|
debugger.handle_input(input)
|
44
|
-
expect(output.string).to eq(
|
45
|
-
expect(debugger.known_resource_types[:hostclasses]).to include(
|
44
|
+
expect(output.string).to eq('')
|
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
|
+
" => 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(
|
71
|
-
expect(output.string).to eq(
|
70
|
+
expect(debugger.scope.environment.known_resource_types.definitions.keys).to include('testfoodefine')
|
71
|
+
expect(output.string).to eq('')
|
72
72
|
end
|
73
73
|
it do
|
74
74
|
debugger.handle_input(input)
|
75
75
|
debugger.handle_input("testfoodefine{'some_name':}")
|
76
|
-
expect(
|
77
|
-
expect(debugger.scope.compiler.resources.collect(&:type)).to include("Testfoodefine")
|
78
|
-
expect(output.string).to include("\n => Puppet::Type::Component")
|
76
|
+
expect(output.string).to include(' => Puppet::Type::Component')
|
79
77
|
end
|
80
78
|
end
|
81
79
|
end
|
82
80
|
|
83
|
-
describe
|
81
|
+
describe 'key_words' do
|
84
82
|
it do
|
85
83
|
expect(debugger.key_words.count).to be >= 30 if supports_datatypes?
|
86
84
|
end
|
@@ -90,9 +88,9 @@ describe "PuppetDebugger" do
|
|
90
88
|
end
|
91
89
|
end
|
92
90
|
|
93
|
-
describe
|
91
|
+
describe 'native functions', native_functions: true do
|
94
92
|
let(:func) do
|
95
|
-
<<-
|
93
|
+
<<-OUT
|
96
94
|
function debugger::bool2http($arg) {
|
97
95
|
case $arg {
|
98
96
|
false, undef, /(?i:false)/ : { 'Off' }
|
@@ -100,164 +98,164 @@ describe "PuppetDebugger" do
|
|
100
98
|
default : { "$arg" }
|
101
99
|
}
|
102
100
|
}
|
103
|
-
|
101
|
+
OUT
|
104
102
|
end
|
105
103
|
before(:each) do
|
106
104
|
debugger.handle_input(func)
|
107
105
|
end
|
108
|
-
describe
|
109
|
-
it
|
110
|
-
expect(output.string).to eq(
|
106
|
+
describe 'create' do
|
107
|
+
it 'shows function' do
|
108
|
+
expect(output.string).to eq('')
|
111
109
|
end
|
112
110
|
end
|
113
|
-
describe
|
111
|
+
describe 'run' do
|
114
112
|
let(:input) do
|
115
|
-
<<-
|
113
|
+
<<-OUT
|
116
114
|
debugger::bool2http(false)
|
117
|
-
|
115
|
+
OUT
|
118
116
|
end
|
119
117
|
it do
|
120
118
|
debugger.handle_input(input)
|
121
|
-
expect(output.string).to include(
|
119
|
+
expect(output.string).to include('Off')
|
122
120
|
end
|
123
121
|
end
|
124
122
|
end
|
125
123
|
|
126
|
-
describe
|
127
|
-
it
|
128
|
-
expect(resource_types.first.class.to_s).to eq(
|
124
|
+
describe 'returns a array of resource_types' do
|
125
|
+
it 'returns resource type' do
|
126
|
+
expect(resource_types.first.class.to_s).to eq('Puppet::Pops::Types::PResourceType')
|
129
127
|
end
|
130
128
|
end
|
131
129
|
|
132
|
-
describe
|
130
|
+
describe 'empty' do
|
133
131
|
let(:input) do
|
134
|
-
|
132
|
+
''
|
135
133
|
end
|
136
|
-
it
|
137
|
-
debugger_output =
|
134
|
+
it 'can run' do
|
135
|
+
debugger_output = ''
|
136
|
+
debugger.handle_input(input)
|
138
137
|
debugger.handle_input(input)
|
139
138
|
expect(output.string).to eq(debugger_output)
|
140
139
|
end
|
141
|
-
describe
|
140
|
+
describe 'space' do
|
142
141
|
let(:input) do
|
143
|
-
|
142
|
+
' '
|
144
143
|
end
|
145
|
-
it
|
146
|
-
debugger_output =
|
144
|
+
it 'can run' do
|
145
|
+
debugger_output = ''
|
147
146
|
debugger.handle_input(input)
|
148
147
|
expect(output.string).to eq(debugger_output)
|
149
148
|
end
|
150
149
|
end
|
151
150
|
end
|
152
151
|
|
153
|
-
describe
|
152
|
+
describe 'variables' do
|
154
153
|
let(:input) do
|
155
154
|
"$file_path = '/tmp/test2.txt'"
|
156
155
|
end
|
157
|
-
it
|
156
|
+
it 'can process a variable' do
|
158
157
|
debugger.handle_input(input)
|
159
|
-
expect(output.string).to match(
|
158
|
+
expect(output.string).to match(%r{/tmp/test2.txt})
|
160
159
|
end
|
161
160
|
end
|
162
161
|
|
163
|
-
describe
|
162
|
+
describe 'resource' do
|
164
163
|
let(:input) do
|
165
164
|
"file{'/tmp/test2.txt': ensure => present, mode => '0755'}"
|
166
165
|
end
|
167
|
-
it
|
166
|
+
it 'can process a resource' do
|
168
167
|
debugger_output = /Puppet::Type::File/
|
169
168
|
debugger.handle_input(input)
|
170
169
|
expect(output.string).to match(debugger_output)
|
171
170
|
end
|
172
171
|
end
|
173
172
|
|
174
|
-
describe
|
173
|
+
describe 'bad input' do
|
175
174
|
let(:input) do
|
176
|
-
|
175
|
+
'Service{'
|
177
176
|
end
|
178
|
-
it
|
177
|
+
it 'can process' do
|
179
178
|
debugger.handle_input(input)
|
180
|
-
expect(output.string).to match(
|
179
|
+
expect(output.string).to match(/Syntax error at end of/)
|
181
180
|
end
|
182
181
|
end
|
183
182
|
|
184
|
-
describe
|
183
|
+
describe 'map block' do
|
185
184
|
let(:input) do
|
186
185
|
"['/tmp/test3', '/tmp/test4'].map |String $path| { file{$path: ensure => present} }"
|
187
186
|
end
|
188
|
-
it
|
187
|
+
it 'can process a each block' do
|
189
188
|
debugger_output = /Puppet::Type::File/
|
190
189
|
debugger.handle_input(input)
|
191
190
|
expect(output.string).to match(debugger_output)
|
192
191
|
end
|
193
192
|
end
|
194
193
|
|
195
|
-
describe
|
194
|
+
describe 'each block' do
|
196
195
|
let(:input) do
|
197
196
|
"['/tmp/test3', '/tmp/test4'].each |String $path| { file{$path: ensure => present} }"
|
198
197
|
end
|
199
|
-
it
|
198
|
+
it 'can process a each block' do
|
200
199
|
debugger.handle_input(input)
|
201
|
-
expect(output.string).to match(
|
202
|
-
expect(output.string).to match(
|
200
|
+
expect(output.string).to match(%r{/tmp/test3})
|
201
|
+
expect(output.string).to match(%r{/tmp/test4})
|
203
202
|
end
|
204
203
|
end
|
205
204
|
|
206
|
-
describe
|
205
|
+
describe 'string' do
|
207
206
|
let(:input) do
|
208
|
-
|
207
|
+
'String'
|
209
208
|
end
|
210
|
-
it
|
209
|
+
it 'shows type' do
|
211
210
|
debugger.handle_input(input)
|
212
|
-
expect(output.string).to eq("
|
211
|
+
expect(output.string).to eq(" => String\n")
|
213
212
|
end
|
214
213
|
end
|
215
|
-
describe
|
214
|
+
describe 'Array', type_function: true do
|
216
215
|
let(:input) do
|
217
|
-
|
216
|
+
'type([1,2,3,4])'
|
218
217
|
end
|
219
|
-
it
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
end
|
218
|
+
it 'shows type' do
|
219
|
+
debugger.handle_input(input)
|
220
|
+
out = " => Tuple[Integer[1, 1], Integer[2, 2], Integer[3, 3], Integer[4, 4]]\n"
|
221
|
+
expect(output.string).to eq(out)
|
224
222
|
end
|
225
223
|
end
|
226
224
|
|
227
|
-
describe
|
225
|
+
describe 'multi diemension array' do
|
228
226
|
let(:input) do
|
229
|
-
|
227
|
+
'[[1, [23,4], [22], [1,[2232]]]]'
|
230
228
|
end
|
231
229
|
|
232
|
-
it
|
230
|
+
it 'handles multi array' do
|
233
231
|
debugger.handle_input(input)
|
234
|
-
expect(output.string.count(
|
232
|
+
expect(output.string.count('[')).to be >= 17
|
235
233
|
end
|
236
234
|
end
|
237
235
|
|
238
|
-
describe
|
239
|
-
it
|
236
|
+
describe 'command_completion' do
|
237
|
+
it 'should complete on tabs' do
|
240
238
|
allow(Readline).to receive(:line_buffer).and_return("\n")
|
241
|
-
expect(debugger.command_completion.call(
|
239
|
+
expect(debugger.command_completion.call('').count).to be >= 200
|
242
240
|
end
|
243
241
|
|
244
|
-
it
|
242
|
+
it '#key_words' do
|
245
243
|
expect(debugger.key_words.count).to be >= 100
|
246
244
|
end
|
247
245
|
end
|
248
246
|
|
249
|
-
describe
|
247
|
+
describe 'error message' do
|
250
248
|
let(:input) do
|
251
249
|
"file{'/tmp/test': ensure => present, contact => 'blah'}"
|
252
250
|
end
|
253
|
-
if Gem::Version.new(Puppet.version) >= Gem::Version.new(
|
254
|
-
it
|
251
|
+
if Gem::Version.new(Puppet.version) >= Gem::Version.new('4.0')
|
252
|
+
it 'show error message' do
|
255
253
|
debugger_output = /no\ parameter\ named\ 'contact'/
|
256
254
|
debugger.handle_input(input)
|
257
255
|
expect(output.string).to match(debugger_output)
|
258
256
|
end
|
259
257
|
else
|
260
|
-
it
|
258
|
+
it 'show error message' do
|
261
259
|
debugger_output = /Invalid\ parameter\ contact/
|
262
260
|
debugger.handle_input(input)
|
263
261
|
expect(output.string).to match(debugger_output)
|
data/spec/remote_node_spec.rb
CHANGED
@@ -41,7 +41,7 @@ describe 'PuppetDebugger' do
|
|
41
41
|
|
42
42
|
describe 'set' do
|
43
43
|
it 'sends message about resetting' do
|
44
|
-
expect(output.string).to eq("
|
44
|
+
expect(output.string).to eq(" => Resetting to use node puppetdev.localdomain\n")
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'return node name' do
|
@@ -74,10 +74,6 @@ describe 'PuppetDebugger' do
|
|
74
74
|
let(:node_name) do
|
75
75
|
'invalid.localdomain'
|
76
76
|
end
|
77
|
-
# this test stopped working in the puppet 5.x series
|
78
|
-
xit 'name' do
|
79
|
-
expect { debugger.node.name }.to raise_error(PuppetDebugger::Exception::UndefinedNode)
|
80
|
-
end
|
81
77
|
end
|
82
78
|
|
83
79
|
it 'set node name' do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,25 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'simplecov'
|
4
3
|
require_relative '../lib/puppet-debugger'
|
5
4
|
require 'yaml'
|
6
|
-
ENV['
|
5
|
+
ENV['CI'] = 'true'
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
if ENV['COVERAGE']
|
8
|
+
require 'simplecov'
|
9
|
+
|
10
|
+
module SimpleCov::Configuration
|
11
|
+
def clean_filters
|
12
|
+
@filters = []
|
13
|
+
end
|
11
14
|
end
|
12
|
-
end
|
13
15
|
|
14
|
-
SimpleCov.configure do
|
15
|
-
|
16
|
-
|
17
|
-
end
|
16
|
+
SimpleCov.configure do
|
17
|
+
clean_filters
|
18
|
+
load_profile 'test_frameworks'
|
19
|
+
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
if ENV['COVERAGE']
|
22
|
+
SimpleCov.start do
|
23
|
+
add_filter '/.rvm/'
|
24
|
+
add_filter 'vendor'
|
25
|
+
add_filter 'bundler'
|
26
|
+
end
|
27
|
+
end
|
23
28
|
end
|
24
29
|
|
25
30
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
@@ -30,17 +35,17 @@ require 'puppet-debugger'
|
|
30
35
|
ENV['REPL_FACTERDB_FILTER'] = 'operatingsystem=Fedora and operatingsystemrelease=23 and architecture=x86_64 and facterversion=/^2\\.4/'
|
31
36
|
# Requires supporting files with custom matchers and macros, etc,
|
32
37
|
# in ./support/ and its subdirectories.
|
33
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
38
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each { |f| require f }
|
34
39
|
|
35
40
|
def stdlib_path
|
36
41
|
File.join(Puppet[:basemodulepath].split(':').first, 'stdlib')
|
37
42
|
end
|
38
43
|
|
39
44
|
def install_stdlib
|
40
|
-
`bundle exec puppet module install puppetlabs/stdlib` unless File.
|
45
|
+
`bundle exec puppet module install puppetlabs/stdlib` unless File.exist?(stdlib_path)
|
41
46
|
end
|
42
47
|
|
43
|
-
#install_stdlib
|
48
|
+
# install_stdlib
|
44
49
|
|
45
50
|
def fixtures_dir
|
46
51
|
File.join(File.dirname(__FILE__), 'fixtures')
|
@@ -62,7 +67,6 @@ def supports_datatypes?
|
|
62
67
|
Gem::Version.new(Puppet.version) >= Gem::Version.new('4.5')
|
63
68
|
end
|
64
69
|
|
65
|
-
|
66
70
|
RSpec.configure do |config|
|
67
71
|
config.filter_run_excluding native_functions: !supports_native_functions?
|
68
72
|
RSpec::Expectations.configuration.on_potential_false_positives = :nothing
|
data/spec/support_spec.rb
CHANGED
@@ -21,19 +21,19 @@ describe 'support' do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
let(:manifest_file) do
|
24
|
-
|
24
|
+
File.open('/tmp/debugger_puppet_manifest.pp', 'w') do |f|
|
25
25
|
f.write(manifest_code)
|
26
26
|
end
|
27
27
|
'/tmp/debugger_puppet_manifest.pp'
|
28
28
|
end
|
29
29
|
|
30
30
|
let(:manifest_code) do
|
31
|
-
<<-
|
31
|
+
<<-OUT
|
32
32
|
file{'/tmp/test.txt': ensure => absent } \n
|
33
33
|
notify{'hello_there':} \n
|
34
34
|
service{'httpd': ensure => running}\n
|
35
35
|
|
36
|
-
|
36
|
+
OUT
|
37
37
|
end
|
38
38
|
|
39
39
|
after(:each) do
|
@@ -61,6 +61,4 @@ describe 'support' do
|
|
61
61
|
expect(debugger.node.facts.values).to be_instance_of(Hash)
|
62
62
|
expect(debugger.node.facts.values['fqdn']).to eq('foo.example.com')
|
63
63
|
end
|
64
|
-
|
65
|
-
|
66
64
|
end
|