puppet-debugger 0.19.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +10 -27
  3. data/.rubocop.yml +64 -232
  4. data/.rubocop_todo.yml +89 -147
  5. data/CHANGELOG.md +12 -1
  6. data/Gemfile +7 -5
  7. data/README.md +4 -5
  8. data/Rakefile +11 -12
  9. data/bin/pdb +1 -1
  10. data/lib/awesome_print/ext/awesome_puppet.rb +10 -8
  11. data/lib/plugins/puppet-debugger/input_responders/benchmark.rb +5 -4
  12. data/lib/plugins/puppet-debugger/input_responders/classes.rb +4 -1
  13. data/lib/plugins/puppet-debugger/input_responders/classification.rb +4 -2
  14. data/lib/plugins/puppet-debugger/input_responders/commands.rb +18 -18
  15. data/lib/plugins/puppet-debugger/input_responders/datatypes.rb +11 -5
  16. data/lib/plugins/puppet-debugger/input_responders/environment.rb +4 -2
  17. data/lib/plugins/puppet-debugger/input_responders/exit.rb +4 -2
  18. data/lib/plugins/puppet-debugger/input_responders/facterdb_filter.rb +4 -2
  19. data/lib/plugins/puppet-debugger/input_responders/facts.rb +4 -2
  20. data/lib/plugins/puppet-debugger/input_responders/functions.rb +34 -32
  21. data/lib/plugins/puppet-debugger/input_responders/help.rb +4 -2
  22. data/lib/plugins/puppet-debugger/input_responders/krt.rb +4 -2
  23. data/lib/plugins/puppet-debugger/input_responders/play.rb +22 -24
  24. data/lib/plugins/puppet-debugger/input_responders/reset.rb +5 -3
  25. data/lib/plugins/puppet-debugger/input_responders/resources.rb +5 -2
  26. data/lib/plugins/puppet-debugger/input_responders/set.rb +34 -32
  27. data/lib/plugins/puppet-debugger/input_responders/stacktrace.rb +23 -0
  28. data/lib/plugins/puppet-debugger/input_responders/types.rb +6 -2
  29. data/lib/plugins/puppet-debugger/input_responders/vars.rb +6 -5
  30. data/lib/plugins/puppet-debugger/input_responders/whereami.rb +5 -3
  31. data/lib/puppet-debugger/cli.rb +118 -91
  32. data/lib/puppet-debugger/code/code_file.rb +13 -14
  33. data/lib/puppet-debugger/code/code_range.rb +5 -3
  34. data/lib/puppet-debugger/code/loc.rb +1 -1
  35. data/lib/puppet-debugger/debugger_code.rb +2 -0
  36. data/lib/puppet-debugger/hooks.rb +15 -16
  37. data/lib/puppet-debugger/input_responder_plugin.rb +54 -52
  38. data/lib/puppet-debugger/monkey_patches.rb +4 -1
  39. data/lib/puppet-debugger/plugin_test_helper.rb +9 -8
  40. data/lib/puppet-debugger/support.rb +27 -17
  41. data/lib/puppet-debugger/support/environment.rb +4 -4
  42. data/lib/puppet-debugger/support/errors.rb +25 -27
  43. data/lib/puppet-debugger/support/facts.rb +5 -5
  44. data/lib/puppet-debugger/support/node.rb +4 -5
  45. data/lib/puppet-debugger/support/scope.rb +19 -17
  46. data/lib/puppet-debugger/trollop.rb +38 -31
  47. data/lib/puppet-debugger/version.rb +1 -1
  48. data/lib/puppet/application/debugger.rb +141 -135
  49. data/output.json +1 -0
  50. data/puppet-debugger.gemspec +17 -16
  51. data/spec/awesome_print/ext/awesome_puppet_spec.rb +30 -30
  52. data/spec/fixtures/sample_start_debugger.pp +3 -2
  53. data/spec/hooks_spec.rb +33 -35
  54. data/spec/input_responder_plugin_spec.rb +7 -6
  55. data/spec/input_responders/benchmark_spec.rb +3 -1
  56. data/spec/input_responders/classes_spec.rb +12 -10
  57. data/spec/input_responders/classification_spec.rb +4 -2
  58. data/spec/input_responders/commands_spec.rb +2 -0
  59. data/spec/input_responders/datatypes_spec.rb +4 -3
  60. data/spec/input_responders/environment_spec.rb +2 -0
  61. data/spec/input_responders/exit_spec.rb +9 -11
  62. data/spec/input_responders/facterdb_filter_spec.rb +2 -0
  63. data/spec/input_responders/facts_spec.rb +2 -0
  64. data/spec/input_responders/functions_spec.rb +30 -28
  65. data/spec/input_responders/help_spec.rb +4 -2
  66. data/spec/input_responders/krt_spec.rb +3 -1
  67. data/spec/input_responders/play_spec.rb +10 -20
  68. data/spec/input_responders/reset_spec.rb +2 -0
  69. data/spec/input_responders/resources_spec.rb +3 -1
  70. data/spec/input_responders/set_spec.rb +3 -1
  71. data/spec/input_responders/stacktrace_spec.rb +15 -0
  72. data/spec/input_responders/types_spec.rb +2 -0
  73. data/spec/input_responders/vars_spec.rb +4 -4
  74. data/spec/input_responders/whereami_spec.rb +2 -0
  75. data/spec/pdb_spec.rb +0 -9
  76. data/spec/puppet/application/debugger_spec.rb +18 -19
  77. data/spec/puppet_debugger_spec.rb +81 -84
  78. data/spec/remote_node_spec.rb +1 -5
  79. data/spec/spec_helper.rb +22 -18
  80. data/spec/support_spec.rb +3 -5
  81. data/test_matrix.rb +1 -1
  82. metadata +48 -31
@@ -1,13 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
 
4
6
  describe :exit do
5
7
  let(:args) { [] }
6
8
 
7
- xit 'exits' do
8
- expect{plugin.run(args)}.to eq('')
9
- end
10
-
11
9
  let(:plugin) do
12
10
  instance = PuppetDebugger::InputResponders::Commands.plugin_from_command(subject.to_s).instance
13
11
  instance.debugger = debugger
@@ -26,21 +24,21 @@ describe :exit do
26
24
  {}
27
25
  end
28
26
 
29
- it "commands contant is an array" do
27
+ it 'commands contant is an array' do
30
28
  expect(plugin.class::COMMAND_WORDS).to be_a(Array)
31
29
  end
32
30
 
33
- it "commands must contain at least one word" do
34
- expect(plugin.class::COMMAND_WORDS.count).to be > 0
31
+ it 'commands must contain at least one word' do
32
+ expect(plugin.class::COMMAND_WORDS.count).to be > 0
35
33
  end
36
34
 
37
- it "summary must be a string" do
35
+ it 'summary must be a string' do
38
36
  expect(plugin.class::SUMMARY).to be_a(String)
39
37
  end
40
38
 
41
- it 'implements run' do
42
- expect{plugin.run([])}.not_to raise_error(NotImplementedError)
43
- end
39
+ # it 'implements run' do
40
+ # expect { plugin.run([]) }.not_to raise(SystemExit)
41
+ # end
44
42
 
45
43
  it 'be looked up via any command words' do
46
44
  plugin.class::COMMAND_WORDS.each do |word|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -1,73 +1,75 @@
1
- require "spec_helper"
2
- require "puppet-debugger"
3
- require "puppet-debugger/plugin_test_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'puppet-debugger'
5
+ require 'puppet-debugger/plugin_test_helper'
4
6
 
5
7
  describe :functions do
6
- include_examples "plugin_tests"
8
+ include_examples 'plugin_tests'
7
9
 
8
10
  let(:input) do
9
11
  "md5('hello')"
10
12
  end
11
13
 
12
14
  let(:mod_dir) do
13
- File.join(fixtures_dir, "modules", "extlib")
15
+ File.join(fixtures_dir, 'modules', 'extlib')
14
16
  end
15
17
 
16
- it "runs" do
18
+ it 'runs' do
17
19
  expect(plugin.run).to be_a String
18
20
  end
19
21
 
20
- it "returns functions" do
22
+ it 'returns functions' do
21
23
  expect(plugin.function_map).to be_a Hash
22
24
  end
23
25
 
24
- it "sorted_list" do
26
+ it 'sorted_list' do
25
27
  expect(plugin.sorted_list).to be_a Array
26
28
  expect(plugin.sorted_list.first).to be_a Hash
27
29
  end
28
30
 
29
- it "returns function names" do
31
+ it 'returns function names' do
30
32
  expect(plugin.func_list).to be_a Array
31
- expect(plugin.func_list.find { |m| m =~ /md5/ }).to eq("md5()")
33
+ expect(plugin.func_list.find { |m| m =~ /md5/ }).to eq('md5()')
32
34
  end
33
35
 
34
- it "execute md5" do
36
+ it 'execute md5' do
35
37
  debugger_output = /5d41402abc4b2a76b9719d911017c592/
36
38
  debugger.handle_input("md5('hello')")
37
39
  expect(output.string).to match(debugger_output)
38
40
  end
39
41
 
40
- it "execute swapcase" do
42
+ it 'execute swapcase' do
41
43
  debugger_output = /HELLO/
42
44
  debugger.handle_input("swapcase('hello')")
43
45
  expect(output.string).to match(debugger_output)
44
46
  end
45
47
 
46
- it "#function_obj with native function" do
47
- expect(plugin.function_obj(File.join(mod_dir, "functions", "dir_split.pp"))).to eq(
48
- { :file => File.join(mod_dir, "functions", "dir_split.pp"), :mod_name => "extlib",
49
- :full_name => "extlib::dir_split", :name => "extlib::dir_split", :namespace => "extlib",
50
- :summary => "Splits the given directory or directories into individual paths." }
48
+ it '#function_obj with native function' do
49
+ expect(plugin.function_obj(File.join(mod_dir, 'functions', 'dir_split.pp'))).to eq(
50
+ file: File.join(mod_dir, 'functions', 'dir_split.pp'), mod_name: 'extlib',
51
+ full_name: 'extlib::dir_split', name: 'extlib::dir_split', namespace: 'extlib',
52
+ summary: 'Splits the given directory or directories into individual paths.'
51
53
  )
52
54
  end
53
55
 
54
- it "#function_obj ruby v4 without namespace" do
55
- expect(plugin.function_obj(File.join(mod_dir, "lib", "puppet", "functions", "echo.rb"))).to eq({ :file => File.join(mod_dir, "lib", "puppet", "functions", "echo.rb"), :mod_name => "extlib",
56
- :full_name => "echo", :name => "echo", :namespace => "", :summary => "DEPRECATED. Use the namespaced function [`extlib::echo`](#extlibecho) instead." })
56
+ it '#function_obj ruby v4 without namespace' do
57
+ expect(plugin.function_obj(File.join(mod_dir, 'lib', 'puppet', 'functions', 'echo.rb'))).to eq(file: File.join(mod_dir, 'lib', 'puppet', 'functions', 'echo.rb'), mod_name: 'extlib',
58
+ full_name: 'echo', name: 'echo', namespace: '', summary: 'DEPRECATED. Use the namespaced function [`extlib::echo`](#extlibecho) instead.')
57
59
  end
58
60
 
59
- it "#function_obj ruby v4 and namespace" do
60
- expect(plugin.function_obj(File.join(mod_dir, "lib", "puppet", "functions", "extlib", "echo.rb"))).to eq({ :file => File.join(mod_dir, "lib", "puppet", "functions", "extlib", "echo.rb"), :mod_name => "extlib",
61
- :full_name => "extlib::echo", :name => "extlib::echo", :namespace => "extlib", :summary => nil })
61
+ it '#function_obj ruby v4 and namespace' do
62
+ expect(plugin.function_obj(File.join(mod_dir, 'lib', 'puppet', 'functions', 'extlib', 'echo.rb'))).to eq(file: File.join(mod_dir, 'lib', 'puppet', 'functions', 'extlib', 'echo.rb'), mod_name: 'extlib',
63
+ full_name: 'extlib::echo', name: 'extlib::echo', namespace: 'extlib', summary: nil)
62
64
  end
63
65
 
64
- it "#function_obj has puppet namespace" do
65
- file, _ = Puppet::Functions.method(:create_function).source_location
66
+ it '#function_obj has puppet namespace' do
67
+ file, = Puppet::Functions.method(:create_function).source_location
66
68
  dir = File.dirname(file)
67
- f_obj = plugin.function_obj(File.join(dir, "functions", "include.rb"))
69
+ f_obj = plugin.function_obj(File.join(dir, 'functions', 'include.rb'))
68
70
  expect(f_obj[:mod_name]).to match(/puppet-.*/)
69
- expect(f_obj[:name]).to eq("include")
70
- expect(f_obj[:full_name]).to eq("include")
71
+ expect(f_obj[:name]).to eq('include')
72
+ expect(f_obj[:full_name]).to eq('include')
71
73
  expect(f_obj[:summary]).to be_nil
72
74
  end
73
75
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger/plugin_test_helper'
3
5
 
4
6
  describe :help do
5
- include_examples "plugin_tests"
7
+ include_examples 'plugin_tests'
6
8
  let(:args) { [] }
7
9
 
8
10
  let(:help_output) do
@@ -29,4 +31,4 @@ describe :help do
29
31
  it 'show created by' do
30
32
  expect(help_output).to match(/Created by: NWOps <corey@nwops.io>\n/)
31
33
  end
32
- end
34
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger/plugin_test_helper'
3
5
 
4
6
  describe :krt do
5
- include_examples "plugin_tests"
7
+ include_examples 'plugin_tests'
6
8
  let(:args) { [] }
7
9
 
8
10
  it 'works' do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger/plugin_test_helper'
3
5
  describe :play do
4
- include_examples "plugin_tests"
6
+ include_examples 'plugin_tests'
5
7
 
6
8
  describe 'convert url' do
7
9
  describe 'unsupported' do
@@ -96,7 +98,6 @@ describe :play do
96
98
 
97
99
  describe 'multiple lines of input' do
98
100
  before(:each) do
99
-
100
101
  end
101
102
  describe '3 lines' do
102
103
  let(:input) do
@@ -133,16 +134,12 @@ describe :play do
133
134
  end
134
135
  describe 'multiple lines puppet code' do
135
136
  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"')
137
+ <<~OUT
138
+ if $osfamily {
139
+ $var = '3'
140
+ }
141
+ $var
142
+ OUT
146
143
  end
147
144
  end
148
145
  end
@@ -158,17 +155,10 @@ $var
158
155
  let(:input) do
159
156
  "play #{file_url}"
160
157
  end
161
- # requires internet and stops testing
162
- xit 'url' do
163
- allow(debugger).to receive(:fetch_url_data).with(file_url + '.txt').and_return(File.read(fixtures_file))
164
- debugger.handle_input(input)
165
- expect(output.string).to match(/test/)
166
- expect(output.string).to match(/Puppet::Type::File/)
167
- end
168
158
 
169
159
  it 'file' do
170
160
  debugger.handle_input("play #{fixtures_file}")
171
161
  expect(output.string).to match(/Puppet::Type::File/)
172
162
  end
173
163
  end
174
- end
164
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
4
6
 
5
7
  describe :resources do
6
8
  include_examples 'plugin_tests'
7
- let(:args) { }
9
+ let(:args) {}
8
10
 
9
11
  it 'should be able to print resources' do
10
12
  debugger_output = /main/
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -7,7 +9,7 @@ describe 'set' do
7
9
  let(:input) do
8
10
  ':set loglevel debug'
9
11
  end
10
-
12
+
11
13
  it 'should set the loglevel' do
12
14
  debugger_output = /loglevel debug is set/
13
15
  debugger.handle_input(input)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'puppet-debugger'
5
+ require 'puppet-debugger/plugin_test_helper'
6
+
7
+ describe :stacktrace do
8
+ include_examples 'plugin_tests'
9
+ let(:args) {}
10
+
11
+ it 'should be able to print stacktrace' do
12
+ debugger_output = /stacktrace\snot\savailable/
13
+ expect(plugin.run(args)).to match(debugger_output)
14
+ end
15
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -38,10 +40,10 @@ describe :vars do
38
40
 
39
41
  describe 'list variables' do
40
42
  let(:input) do
41
- <<-EOF
43
+ <<-OUT
42
44
  class test( $param1 = "files", $param2 = $param1 ) {}
43
45
  include test
44
- EOF
46
+ OUT
45
47
  end
46
48
  it 'ls test' do
47
49
  debugger.handle_input(input)
@@ -49,7 +51,5 @@ describe :vars do
49
51
  expect(out).to include('"param1"')
50
52
  expect(out).to include('"param2"')
51
53
  end
52
-
53
-
54
54
  end
55
55
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'puppet-debugger'
3
5
  require 'puppet-debugger/plugin_test_helper'
@@ -28,11 +28,6 @@ describe 'pdb' do
28
28
  expect(`bundle exec bin/pdb --play #{fixtures_file} --run-once`)
29
29
  .to match(/Puppet::Type::File/)
30
30
  end
31
- # xit do
32
- # # this test does not work without internet, and I am at 30K feet right now
33
- # expect(`bundle exec bin/pdb --play #{file_url} --run-once`)
34
- # .to match(/Puppet::Type::File/)
35
- # end
36
31
 
37
32
  describe 'remote_node' do
38
33
  let(:node_obj) do
@@ -44,9 +39,5 @@ describe 'pdb' do
44
39
  before :each do
45
40
  allow(PuppetDebugger).to receive(:get_remote_node).with(node_name).and_return(node_obj)
46
41
  end
47
- # xit do
48
- # expect(`echo 'vars'| bundle exec bin/pdb -n #{node_name}`)
49
- # .to match(/server_facts/)
50
- # end
51
42
  end
52
43
  end
@@ -9,7 +9,7 @@ describe Puppet::Application::Debugger do
9
9
  end
10
10
 
11
11
  # ideally, we should only be providing args in stead of mocking the options
12
- # however during a text, the options in the puppet application are not merged from
12
+ # however during a text, the options in the puppet application are not merged from
13
13
  # the command line opts so the args never get passed through to options
14
14
  let(:args) do
15
15
  []
@@ -72,13 +72,13 @@ describe Puppet::Application::Debugger do
72
72
 
73
73
  describe 'can reset correctly' do
74
74
  let(:input) do
75
- <<-EOF
76
- $var1 = 'dsfasd'
77
- $var1
78
- reset
79
- $var1 = '111111'
80
- $var1
81
- EOF
75
+ <<~OUT
76
+ $var1 = 'dsfasd'
77
+ $var1
78
+ reset
79
+ $var1 = '111111'
80
+ $var1
81
+ OUT
82
82
  end
83
83
 
84
84
  it 'assign variable' do
@@ -89,7 +89,6 @@ $var1
89
89
  end
90
90
 
91
91
  describe 'without facterdb' do
92
-
93
92
  it 'run md5 function' do
94
93
  allow(debugger).to receive(:options).and_return(code: "md5('sdafsd')", quiet: true, run_once: true, use_facterdb: false)
95
94
  expect { debugger.run_command }.to output(/569ebc3d91672e7d3dce25de1684d0c9/).to_stdout
@@ -108,22 +107,22 @@ $var1
108
107
  ]
109
108
  end
110
109
  it 'list resources in catalog' do
111
- allow(debugger).to receive(:options).and_return(code: "resources",
112
- quiet: true, run_once: true, use_facterdb: true,
113
- catalog: File.expand_path(File.join(fixtures_dir, 'pe-xl-core-0.puppet.vm.json')))
110
+ allow(debugger).to receive(:options).and_return(code: 'resources',
111
+ quiet: true, run_once: true, use_facterdb: true,
112
+ catalog: File.expand_path(File.join(fixtures_dir, 'pe-xl-core-0.puppet.vm.json')))
114
113
  expect { debugger.run_command }.to output(/Puppet_enterprise/).to_stdout
115
114
  end
116
115
  end
117
116
 
118
117
  describe 'can reset correctly' do
119
118
  let(:input) do
120
- <<-EOF
121
- $var1 = 'dsfasd'
122
- $var1
123
- reset
124
- $var1 = '111111'
125
- $var1
126
- EOF
119
+ <<~OUT
120
+ $var1 = 'dsfasd'
121
+ $var1
122
+ reset
123
+ $var1 = '111111'
124
+ $var1
125
+ OUT
127
126
  end
128
127
 
129
128
  it 'assign variable' do
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "spec_helper"
4
- require "stringio"
5
- describe "PuppetDebugger" do
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("reset")
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 "native classes" do
35
- describe "create" do
34
+ describe 'native classes' do
35
+ describe 'create' do
36
36
  let(:input) do
37
- "class testfoo {}"
37
+ 'class testfoo {}'
38
38
  end
39
39
  let(:debugger_output) do
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"
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("\n")
45
- expect(debugger.known_resource_types[:hostclasses]).to include("testfoo")
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("include testfoo")
50
- expect(debugger.scope.compiler.catalog.classes).to include("testfoo")
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("include testfoo")
55
- expect(debugger.scope.compiler.catalog.resources.map(&:name)).to include("Testfoo")
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 "native definitions" do
61
- describe "create" do
60
+ describe 'native definitions' do
61
+ describe 'create' do
62
62
  let(:input) do
63
- "define testfoodefine {}"
63
+ 'define testfoodefine {}'
64
64
  end
65
65
  let(:debugger_output) do
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"
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("testfoodefine")
71
- expect(output.string).to eq("\n")
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(debugger.scope.compiler.resources.collect(&:name)).to include("some_name")
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 "key_words" do
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 "native functions", native_functions: true do
91
+ describe 'native functions', native_functions: true do
94
92
  let(:func) do
95
- <<-EOF
93
+ <<-OUT
96
94
  function debugger::bool2http($arg) {
97
95
  case $arg {
98
96
  false, undef, /(?i:false)/ : { 'Off' }
@@ -100,165 +98,164 @@ describe "PuppetDebugger" do
100
98
  default : { "$arg" }
101
99
  }
102
100
  }
103
- EOF
101
+ OUT
104
102
  end
105
103
  before(:each) do
106
104
  debugger.handle_input(func)
107
105
  end
108
- describe "create" do
109
- it "shows function" do
110
- expect(output.string).to eq("\n")
106
+ describe 'create' do
107
+ it 'shows function' do
108
+ expect(output.string).to eq('')
111
109
  end
112
110
  end
113
- describe "run" do
111
+ describe 'run' do
114
112
  let(:input) do
115
- <<-EOF
113
+ <<-OUT
116
114
  debugger::bool2http(false)
117
- EOF
115
+ OUT
118
116
  end
119
117
  it do
120
118
  debugger.handle_input(input)
121
- expect(output.string).to include("Off")
119
+ expect(output.string).to include('Off')
122
120
  end
123
121
  end
124
122
  end
125
123
 
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")
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 "empty" do
130
+ describe 'empty' do
133
131
  let(:input) do
134
- ""
132
+ ''
135
133
  end
136
- it "can run" do
137
- debugger_output = "\n"
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 "space" do
140
+ describe 'space' do
142
141
  let(:input) do
143
- " "
142
+ ' '
144
143
  end
145
- it "can run" do
146
- debugger_output = "\n"
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 "variables" do
152
+ describe 'variables' do
154
153
  let(:input) do
155
154
  "$file_path = '/tmp/test2.txt'"
156
155
  end
157
- it "can process a variable" do
156
+ it 'can process a variable' do
158
157
  debugger.handle_input(input)
159
- expect(output.string).to match(/\/tmp\/test2.txt/)
158
+ expect(output.string).to match(%r{/tmp/test2.txt})
160
159
  end
161
160
  end
162
161
 
163
- describe "resource" do
162
+ describe 'resource' do
164
163
  let(:input) do
165
164
  "file{'/tmp/test2.txt': ensure => present, mode => '0755'}"
166
165
  end
167
- it "can process a resource" do
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 "bad input" do
173
+ describe 'bad input' do
175
174
  let(:input) do
176
- "Service{"
175
+ 'Service{'
177
176
  end
178
- it "can process" do
177
+ it 'can process' do
179
178
  debugger.handle_input(input)
180
- expect(output.string).to match(%r(Syntax error at end of))
179
+ expect(output.string).to match(/Syntax error at end of/)
181
180
  end
182
181
  end
183
182
 
184
- describe "map block" do
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 "can process a each block" do
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 "each block" do
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 "can process a each block" do
198
+ it 'can process a each block' do
200
199
  debugger.handle_input(input)
201
- expect(output.string).to match(/\/tmp\/test3/)
202
- expect(output.string).to match(/\/tmp\/test4/)
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 "string" do
205
+ describe 'string' do
207
206
  let(:input) do
208
- "String"
207
+ 'String'
209
208
  end
210
- it "shows type" do
209
+ it 'shows type' do
211
210
  debugger.handle_input(input)
212
- expect(output.string).to eq("\n => String\n")
211
+ expect(output.string).to eq(" => String\n")
213
212
  end
214
213
  end
215
- describe "Array", type_function: true do
214
+ describe 'Array', type_function: true do
216
215
  let(:input) do
217
- "type([1,2,3,4])"
216
+ 'type([1,2,3,4])'
218
217
  end
219
- it "shows type" do
220
- if Gem::Version.new(Puppet.version) > Gem::Version.new("4.4")
221
- out = "\n => Tuple[Integer[1, 1], Integer[2, 2], Integer[3, 3], Integer[4, 4]]\n"
222
- debugger.handle_input(input)
223
- expect(output.string).to eq(out)
224
- 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)
225
222
  end
226
223
  end
227
224
 
228
- describe "multi diemension array" do
225
+ describe 'multi diemension array' do
229
226
  let(:input) do
230
- "[[1, [23,4], [22], [1,[2232]]]]"
227
+ '[[1, [23,4], [22], [1,[2232]]]]'
231
228
  end
232
229
 
233
- it "handles multi array" do
230
+ it 'handles multi array' do
234
231
  debugger.handle_input(input)
235
- expect(output.string.count("[")).to be >= 17
232
+ expect(output.string.count('[')).to be >= 17
236
233
  end
237
234
  end
238
235
 
239
- describe "command_completion" do
240
- it "should complete on tabs" do
236
+ describe 'command_completion' do
237
+ it 'should complete on tabs' do
241
238
  allow(Readline).to receive(:line_buffer).and_return("\n")
242
- expect(debugger.command_completion.call("").count).to be >= 200
239
+ expect(debugger.command_completion.call('').count).to be >= 200
243
240
  end
244
241
 
245
- it "#key_words" do
242
+ it '#key_words' do
246
243
  expect(debugger.key_words.count).to be >= 100
247
244
  end
248
245
  end
249
246
 
250
- describe "error message" do
247
+ describe 'error message' do
251
248
  let(:input) do
252
249
  "file{'/tmp/test': ensure => present, contact => 'blah'}"
253
250
  end
254
- if Gem::Version.new(Puppet.version) >= Gem::Version.new("4.0")
255
- it "show error message" do
251
+ if Gem::Version.new(Puppet.version) >= Gem::Version.new('4.0')
252
+ it 'show error message' do
256
253
  debugger_output = /no\ parameter\ named\ 'contact'/
257
254
  debugger.handle_input(input)
258
255
  expect(output.string).to match(debugger_output)
259
256
  end
260
257
  else
261
- it "show error message" do
258
+ it 'show error message' do
262
259
  debugger_output = /Invalid\ parameter\ contact/
263
260
  debugger.handle_input(input)
264
261
  expect(output.string).to match(debugger_output)