puppet-strings 2.2.0 → 2.3.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.
Files changed (88) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +14 -5
  4. data/JSON.md +41 -11
  5. data/README.md +66 -7
  6. data/Rakefile +99 -29
  7. data/lib/puppet-strings/json.rb +2 -0
  8. data/lib/puppet-strings/markdown.rb +2 -0
  9. data/lib/puppet-strings/markdown/data_type.rb +18 -0
  10. data/lib/puppet-strings/markdown/data_types.rb +41 -0
  11. data/lib/puppet-strings/markdown/function.rb +2 -2
  12. data/lib/puppet-strings/markdown/table_of_contents.rb +1 -0
  13. data/lib/puppet-strings/markdown/templates/data_type.erb +78 -0
  14. data/lib/puppet-strings/tasks/generate.rb +3 -2
  15. data/lib/puppet-strings/version.rb +1 -1
  16. data/lib/puppet-strings/yard.rb +10 -0
  17. data/lib/puppet-strings/yard/code_objects.rb +2 -0
  18. data/lib/puppet-strings/yard/code_objects/class.rb +1 -1
  19. data/lib/puppet-strings/yard/code_objects/data_type.rb +80 -0
  20. data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +58 -0
  21. data/lib/puppet-strings/yard/code_objects/defined_type.rb +1 -1
  22. data/lib/puppet-strings/yard/code_objects/function.rb +3 -3
  23. data/lib/puppet-strings/yard/code_objects/plan.rb +1 -1
  24. data/lib/puppet-strings/yard/handlers.rb +2 -0
  25. data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +24 -0
  26. data/lib/puppet-strings/yard/handlers/ruby/base.rb +2 -2
  27. data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +236 -0
  28. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +1 -3
  29. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +2 -2
  30. data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +5 -6
  31. data/lib/puppet-strings/yard/parsers/json/parser.rb +1 -1
  32. data/lib/puppet-strings/yard/parsers/puppet/parser.rb +14 -7
  33. data/lib/puppet-strings/yard/parsers/puppet/statement.rb +25 -0
  34. data/lib/puppet-strings/yard/tags/overload_tag.rb +1 -1
  35. data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_data_type.erb +10 -0
  36. data/lib/puppet-strings/yard/templates/default/fulldoc/html/setup.rb +9 -0
  37. data/lib/puppet-strings/yard/templates/default/layout/html/objects.erb +2 -0
  38. data/lib/puppet-strings/yard/templates/default/layout/html/setup.rb +18 -1
  39. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/box_info.erb +10 -0
  40. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/header.erb +1 -0
  41. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/note.erb +6 -0
  42. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/overview.erb +6 -0
  43. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/setup.rb +5 -0
  44. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/source.erb +12 -0
  45. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/summary.erb +4 -0
  46. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/todo.erb +6 -0
  47. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/alias_of.erb +10 -0
  48. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/box_info.erb +10 -0
  49. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/header.erb +1 -0
  50. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/note.erb +6 -0
  51. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/overview.erb +6 -0
  52. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/setup.rb +17 -0
  53. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/source.erb +12 -0
  54. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/summary.erb +4 -0
  55. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/todo.erb +6 -0
  56. data/lib/puppet-strings/yard/templates/default/tags/setup.rb +1 -0
  57. data/lib/puppet/face/strings.rb +3 -3
  58. data/spec/acceptance/emit_json_options_spec.rb +69 -0
  59. data/spec/acceptance/generate_markdown_spec.rb +13 -15
  60. data/spec/acceptance/running_strings_generate_spec.rb +78 -0
  61. data/spec/fixtures/acceptance/modules/test/metadata.json +5 -1
  62. data/spec/fixtures/acceptance/modules/test/types/elephant.pp +2 -0
  63. data/spec/fixtures/unit/markdown/output_with_data_types.md +553 -0
  64. data/spec/spec_helper.rb +3 -0
  65. data/spec/spec_helper_acceptance.rb +52 -22
  66. data/spec/spec_helper_acceptance_local.rb +10 -0
  67. data/spec/unit/puppet-strings/describe_spec.rb +7 -7
  68. data/spec/unit/puppet-strings/json_spec.rb +23 -4
  69. data/spec/unit/puppet-strings/markdown/base_spec.rb +3 -3
  70. data/spec/unit/puppet-strings/markdown_spec.rb +84 -23
  71. data/spec/unit/puppet-strings/yard/code_objects/task_spec.rb +1 -1
  72. data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +4 -4
  73. data/spec/unit/puppet-strings/yard/handlers/puppet/class_handler_spec.rb +8 -8
  74. data/spec/unit/puppet-strings/yard/handlers/puppet/data_type_alias_handler_spec.rb +65 -0
  75. data/spec/unit/puppet-strings/yard/handlers/puppet/defined_type_handler_spec.rb +8 -8
  76. data/spec/unit/puppet-strings/yard/handlers/puppet/function_handler_spec.rb +13 -13
  77. data/spec/unit/puppet-strings/yard/handlers/ruby/data_type_handler_spec.rb +232 -0
  78. data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +36 -19
  79. data/spec/unit/puppet-strings/yard/handlers/ruby/provider_handler_spec.rb +26 -7
  80. data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +7 -7
  81. data/spec/unit/puppet-strings/yard/handlers/ruby/type_handler_spec.rb +26 -10
  82. data/spec/unit/puppet-strings/yard/parsers/json/task_statement_spec.rb +2 -2
  83. data/spec/unit/puppet-strings/yard/parsers/puppet/parser_spec.rb +42 -0
  84. data/spec/unit/puppet-strings/yard/util_spec.rb +1 -1
  85. metadata +35 -7
  86. data/spec/acceptance/emit_json_options.rb +0 -71
  87. data/spec/acceptance/lib/util.rb +0 -163
  88. data/spec/acceptance/running_strings_generate.rb +0 -54
@@ -20,7 +20,7 @@ describe PuppetStrings::Yard::Handlers::Ruby::FunctionHandler do
20
20
  let(:source) { <<-SOURCE
21
21
  Puppet::Parser::Functions.newfunction(:foo) do |*args|
22
22
  end
23
- SOURCE
23
+ SOURCE
24
24
  }
25
25
 
26
26
  it 'should log a warning' do
@@ -38,7 +38,7 @@ An example 3.x function.
38
38
  DOC
39
39
  ) do |*args|
40
40
  end
41
- SOURCE
41
+ SOURCE
42
42
  }
43
43
 
44
44
  it 'should register a function object' do
@@ -82,7 +82,7 @@ DOC
82
82
  ) do |*args|
83
83
  end
84
84
  end
85
- SOURCE
85
+ SOURCE
86
86
  }
87
87
 
88
88
  it 'should register a function object' do
@@ -122,7 +122,7 @@ An example 3.x function.
122
122
  @param second The second parameter.
123
123
  DOC
124
124
  end
125
- SOURCE
125
+ SOURCE
126
126
  }
127
127
 
128
128
  it 'should log a warning' do
@@ -136,7 +136,7 @@ SOURCE
136
136
  let(:source) { <<-SOURCE
137
137
  Puppet::Functions.create_function(:foo) do
138
138
  end
139
- SOURCE
139
+ SOURCE
140
140
  }
141
141
 
142
142
  it 'should log a warning' do
@@ -149,7 +149,7 @@ SOURCE
149
149
  # An example 4.x function.
150
150
  Puppet::Functions.create_function(:foo) do
151
151
  end
152
- SOURCE
152
+ SOURCE
153
153
  }
154
154
 
155
155
  it 'should register a function object' do
@@ -179,7 +179,7 @@ Puppet::Functions.create_function(:foo) do
179
179
  def foo(param1, param2, param3 = nil)
180
180
  end
181
181
  end
182
- SOURCE
182
+ SOURCE
183
183
  }
184
184
 
185
185
  it 'should register a function object' do
@@ -231,7 +231,7 @@ Puppet::Functions.create_function(:foo) do
231
231
  def foo(param1, param2, param3 = nil)
232
232
  end
233
233
  end
234
- SOURCE
234
+ SOURCE
235
235
  }
236
236
 
237
237
  it 'should register a function object without any overload tags' do
@@ -285,7 +285,7 @@ Puppet::Functions.create_function(:foo) do
285
285
  "Bar"
286
286
  end
287
287
  end
288
- SOURCE
288
+ SOURCE
289
289
  }
290
290
 
291
291
  it 'does not throw an error with no @return' do
@@ -316,7 +316,7 @@ Puppet::Functions.create_function(:foo) do
316
316
  repeated_param 'String', :param4
317
317
  end
318
318
  end
319
- SOURCE
319
+ SOURCE
320
320
  }
321
321
 
322
322
  it 'should register a function object with the expected parameters' do
@@ -365,7 +365,7 @@ Puppet::Functions.create_function(:foo) do
365
365
  optional_repeated_param 'String', :param
366
366
  end
367
367
  end
368
- SOURCE
368
+ SOURCE
369
369
  }
370
370
 
371
371
  it 'should register a function object with the expected parameters' do
@@ -507,7 +507,7 @@ Puppet::Functions.create_function(:foo) do
507
507
  'lol'
508
508
  end
509
509
  end
510
- SOURCE
510
+ SOURCE
511
511
  }
512
512
 
513
513
  it 'should register a function object with overload tags' do
@@ -567,6 +567,23 @@ SOURCE
567
567
  end
568
568
  end
569
569
 
570
+ describe 'parsing a function with a namespaced name' do
571
+ let(:source) { <<-SOURCE
572
+ # An example 4.x function.
573
+ Puppet::Functions.create_function(:'foo::bar::baz') do
574
+ # @return [Undef]
575
+ dispatch :foo do
576
+ end
577
+ end
578
+ SOURCE
579
+ }
580
+
581
+ it 'should output the name correctly as a symbol' do
582
+ expect(subject.size).to eq(1)
583
+ expect(subject.first.name).to eq(:'foo::bar::baz')
584
+ end
585
+ end
586
+
570
587
  describe 'parsing a function with a missing parameter' do
571
588
  let(:source) { <<-SOURCE
572
589
  # An example 4.x function.
@@ -576,7 +593,7 @@ Puppet::Functions.create_function(:foo) do
576
593
  dispatch :foo do
577
594
  end
578
595
  end
579
- SOURCE
596
+ SOURCE
580
597
  }
581
598
 
582
599
  it 'should output a warning' do
@@ -593,7 +610,7 @@ Puppet::Functions.create_function(:foo) do
593
610
  param 'String', :param1
594
611
  end
595
612
  end
596
- SOURCE
613
+ SOURCE
597
614
  }
598
615
 
599
616
  it 'should output a warning' do
@@ -611,7 +628,7 @@ Puppet::Functions.create_function(:foo) do
611
628
  param 'String', :param1
612
629
  end
613
630
  end
614
- SOURCE
631
+ SOURCE
615
632
  }
616
633
 
617
634
  it 'should output a warning' do
@@ -628,7 +645,7 @@ Puppet::Functions.create_function(:foo) do
628
645
  param 'String', :param1
629
646
  end
630
647
  end
631
- SOURCE
648
+ SOURCE
632
649
  }
633
650
 
634
651
  it 'should output a warning' do
@@ -645,7 +662,7 @@ Puppet::Functions.create_function(:foo) do
645
662
  dispatch :foo do
646
663
  end
647
664
  end
648
- SOURCE
665
+ SOURCE
649
666
  }
650
667
 
651
668
  it 'should output a warning' do
@@ -698,7 +715,7 @@ Puppet::Functions.create_function(:foo) do
698
715
  dispatch :foo do
699
716
  end
700
717
  end
701
- SOURCE
718
+ SOURCE
702
719
  }
703
720
 
704
721
  it 'should parse the summary' do
@@ -718,7 +735,7 @@ Puppet::Functions.create_function(:foo) do
718
735
  dispatch :foo do
719
736
  end
720
737
  end
721
- SOURCE
738
+ SOURCE
722
739
  }
723
740
 
724
741
  it 'should log a warning' do
@@ -19,7 +19,7 @@ describe PuppetStrings::Yard::Handlers::Ruby::ProviderHandler do
19
19
  let(:source) { <<-SOURCE
20
20
  Puppet::Type.type(:custom).provide :linux do
21
21
  end
22
- SOURCE
22
+ SOURCE
23
23
  }
24
24
 
25
25
  it 'should log a warning' do
@@ -32,7 +32,7 @@ SOURCE
32
32
  Puppet::Type.type(:custom).provide :linux do
33
33
  @doc = 123
34
34
  end
35
- SOURCE
35
+ SOURCE
36
36
  }
37
37
 
38
38
  it 'should log an error' do
@@ -45,7 +45,7 @@ SOURCE
45
45
  Puppet::Type.type(:custom).provide :linux do
46
46
  @doc = 'An example provider on Linux.'
47
47
  end
48
- SOURCE
48
+ SOURCE
49
49
  }
50
50
 
51
51
  it 'should correctly detect the docstring' do
@@ -62,7 +62,7 @@ Puppet::Type.type(:custom).provide :linux do
62
62
  desc %Q{This is a multi-line
63
63
  doc in %Q with #{test}}
64
64
  end
65
- SOURCE
65
+ SOURCE
66
66
  }
67
67
 
68
68
  it 'should strip the `%Q{}` and render the interpolation expression literally' do
@@ -84,7 +84,7 @@ Puppet::Type.type(:custom).provide :linux do
84
84
  has_feature :some_other_feature
85
85
  commands foo: '/usr/bin/foo'
86
86
  end
87
- SOURCE
87
+ SOURCE
88
88
  }
89
89
 
90
90
  it 'should register a provider object' do
@@ -106,13 +106,32 @@ SOURCE
106
106
  end
107
107
  end
108
108
 
109
+ describe 'parsing a provider definition with a string based name' do
110
+ let(:source) { <<-SOURCE
111
+ Puppet::Type.type(:'custom').provide :'linux' do
112
+ desc 'An example provider on Linux.'
113
+ end
114
+ SOURCE
115
+ }
116
+
117
+ it 'should register a provider object' do
118
+ expect(subject.size).to eq(1)
119
+ object = subject.first
120
+ expect(object).to be_a(PuppetStrings::Yard::CodeObjects::Provider)
121
+ expect(object.namespace).to eq(PuppetStrings::Yard::CodeObjects::Providers.instance('custom'))
122
+ expect(object.name).to eq(:linux)
123
+ expect(object.type_name).to eq('custom')
124
+ expect(object.docstring).to eq('An example provider on Linux.')
125
+ end
126
+ end
127
+
109
128
  describe 'parsing a provider with a summary' do
110
129
  context 'when the summary has fewer than 140 characters' do
111
130
  let(:source) { <<-SOURCE
112
131
  Puppet::Type.type(:custom).provide :linux do
113
132
  @doc = '@summary A short summary.'
114
133
  end
115
- SOURCE
134
+ SOURCE
116
135
  }
117
136
 
118
137
  it 'should parse the summary' do
@@ -128,7 +147,7 @@ SOURCE
128
147
  Puppet::Type.type(:custom).provide :linux do
129
148
  @doc = '@summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!'
130
149
  end
131
- SOURCE
150
+ SOURCE
132
151
  }
133
152
 
134
153
  it 'should log a warning' do
@@ -20,7 +20,7 @@ describe PuppetStrings::Yard::Handlers::Ruby::RsapiHandler do
20
20
  Puppet::ResourceApi.register_type(
21
21
  name: 'database'
22
22
  )
23
- SOURCE
23
+ SOURCE
24
24
  }
25
25
 
26
26
  it 'should log a warning' do
@@ -34,7 +34,7 @@ Puppet::ResourceApi.register_type(
34
34
  name: 'database',
35
35
  docs: 'An example database server resource type.',
36
36
  )
37
- SOURCE
37
+ SOURCE
38
38
  }
39
39
 
40
40
  it 'should correctly detect the docstring' do
@@ -53,7 +53,7 @@ Puppet::ResourceApi.register_type(
53
53
  docs: %Q{This is a multi-line
54
54
  doc in %Q with #{test}},
55
55
  )
56
- SOURCE
56
+ SOURCE
57
57
  }
58
58
 
59
59
  it 'should strip the `%Q{}` and render the interpolation expression literally' do
@@ -110,7 +110,7 @@ Puppet::ResourceApi.register_type(
110
110
  },
111
111
  },
112
112
  )
113
- SOURCE
113
+ SOURCE
114
114
  }
115
115
 
116
116
  it 'should register a type object' do
@@ -186,7 +186,7 @@ Puppet::ResourceApi.register_type(
186
186
  name: 'database',
187
187
  docs: '@summary A short summary.',
188
188
  )
189
- SOURCE
189
+ SOURCE
190
190
  }
191
191
 
192
192
  it 'should parse the summary' do
@@ -203,7 +203,7 @@ Puppet::ResourceApi.register_type(
203
203
  name: 'database',
204
204
  docs: '@summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!',
205
205
  )
206
- SOURCE
206
+ SOURCE
207
207
  }
208
208
 
209
209
  it 'should log a warning' do
@@ -224,7 +224,7 @@ Puppet::ResourceApi.register_type(
224
224
  }
225
225
  ]
226
226
  )
227
- SOURCE
227
+ SOURCE
228
228
  }
229
229
 
230
230
  it 'should not emit a warning' do
@@ -19,7 +19,7 @@ describe PuppetStrings::Yard::Handlers::Ruby::TypeHandler do
19
19
  let(:source) { <<-SOURCE
20
20
  Puppet::Type.newtype(:database) do
21
21
  end
22
- SOURCE
22
+ SOURCE
23
23
  }
24
24
 
25
25
  it 'should log a warning' do
@@ -32,7 +32,7 @@ SOURCE
32
32
  Puppet::Type.newtype(:database) do
33
33
  @doc = 123
34
34
  end
35
- SOURCE
35
+ SOURCE
36
36
  }
37
37
 
38
38
  it 'should log an error' do
@@ -45,7 +45,7 @@ SOURCE
45
45
  Puppet::Type.newtype(:database) do
46
46
  @doc = 'An example database server resource type.'
47
47
  end
48
- SOURCE
48
+ SOURCE
49
49
  }
50
50
 
51
51
  it 'should correctly detect the docstring' do
@@ -62,7 +62,7 @@ Puppet::Type.newtype(:database) do
62
62
  desc %Q{This is a multi-line
63
63
  doc in %Q with #{test}}
64
64
  end
65
- SOURCE
65
+ SOURCE
66
66
  }
67
67
 
68
68
  it 'should strip the `%Q{}` and render the interpolation expression literally' do
@@ -82,7 +82,7 @@ Puppet::Type.newtype(:database) do
82
82
  defaultto false
83
83
  end
84
84
  end
85
- SOURCE
85
+ SOURCE
86
86
  }
87
87
 
88
88
  it 'should correctly detect the required_feature' do
@@ -150,7 +150,7 @@ Puppet::Type.newtype(:database) do
150
150
  defaultto 'warn'
151
151
  end
152
152
  end
153
- SOURCE
153
+ SOURCE
154
154
  }
155
155
 
156
156
  it 'should register a type object' do
@@ -223,13 +223,29 @@ SOURCE
223
223
  end
224
224
  end
225
225
 
226
+ describe 'parsing a valid type with string based name' do
227
+ let(:source) { <<-SOURCE
228
+ Puppet::Type.newtype(:'database') do
229
+ desc 'An example database server resource type.'
230
+ ensurable
231
+ end
232
+ SOURCE
233
+ }
234
+
235
+ it 'should register a type object with default ensure values' do
236
+ expect(subject.size).to eq(1)
237
+ object = subject.first
238
+ expect(object.name).to eq(:database)
239
+ end
240
+ end
241
+
226
242
  describe 'parsing an ensurable type with default ensure values' do
227
243
  let(:source) { <<-SOURCE
228
244
  Puppet::Type.newtype(:database) do
229
245
  desc 'An example database server resource type.'
230
246
  ensurable
231
247
  end
232
- SOURCE
248
+ SOURCE
233
249
  }
234
250
 
235
251
  it 'should register a type object with default ensure values' do
@@ -250,7 +266,7 @@ Puppet::Type.newtype(:database) do
250
266
  desc 'The database server name.'
251
267
  end
252
268
  end
253
- SOURCE
269
+ SOURCE
254
270
  }
255
271
 
256
272
  it 'should register a type object with the "name" parameter as the namevar' do
@@ -268,7 +284,7 @@ SOURCE
268
284
  Puppet::Type.newtype(:database) do
269
285
  @doc = '@summary A short summary.'
270
286
  end
271
- SOURCE
287
+ SOURCE
272
288
  }
273
289
 
274
290
  it 'should parse the summary' do
@@ -284,7 +300,7 @@ SOURCE
284
300
  Puppet::Type.newtype(:database) do
285
301
  @doc = '@summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!'
286
302
  end
287
- SOURCE
303
+ SOURCE
288
304
  }
289
305
 
290
306
  it 'should log a warning' do
@@ -24,7 +24,7 @@ describe PuppetStrings::Yard::Parsers::JSON::TaskStatement do
24
24
  }
25
25
  }
26
26
  }
27
- SOURCE
27
+ SOURCE
28
28
  }
29
29
  let(:json) { JSON.parse(source) }
30
30
  subject { PuppetStrings::Yard::Parsers::JSON::TaskStatement.new(json, source, "test.json") }
@@ -45,7 +45,7 @@ SOURCE
45
45
  "description": "Allows you to backup your database to local file.",
46
46
  "input_method": "stdin"
47
47
  }
48
- SOURCE
48
+ SOURCE
49
49
  }
50
50
  it 'returns an empty hash' do
51
51
  expect(subject.parameters).to eq({})