puppet-strings 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a70d1194ec3d0f50cc7924ce43b3d996b08db414a31639d38135c90863b3163
4
- data.tar.gz: 821fef3a3e096caa7a3a51024db23e18658baba2b25bf4f503a750952e8e3657
3
+ metadata.gz: d8e021936451f50bd6d90032ebb46117245b1be028c0e717a02bb54ceb682194
4
+ data.tar.gz: 2ae779863af3e9882d2d5c6a0609cfb4fd994a2683429a9f62a271762e58828d
5
5
  SHA512:
6
- metadata.gz: 457119ac6a325f6c4f62923a6180b05d346b0e2d2b7e560b4cddfeda51f345284e98421abb46a68a2a3c0bd62933300394866d91247d69ef2b154667ffd91df3
7
- data.tar.gz: db555eb951d97aa8ac62396693c9c9d317f4e361b4b9dd405d9b7d21d6ccda9f89beb70f292053e6f0440e02b6cf9fb2b8e5f9defb209a6920a7597337128834
6
+ metadata.gz: 4795376753de54d5157d4b040781e9b2c322a777efa62b0400968ec895cb6a5aba32c20d19c374f9a5ab4c06b6fdcf6256f9c722684b356f1b64907194487f22
7
+ data.tar.gz: 564f9d8ec0b7db59f46c882358c3126ad7d98f9629c4760f96b496f94563af69f69dcc0560fcb6465c88c0104aca6dd8d1df2342740b626a3c3e9fc80f3b90a3
data/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All significant changes to this repo will be summarized in this file.
4
4
 
5
5
 
6
+ ## [v2.3.1](https://github.com/puppetlabs/puppet-strings/tree/v2.3.1) (2019-09-23)
7
+
8
+ [Full Changelog](https://github.com/puppetlabs/puppet-strings/compare/v2.3.0...v2.3.1)
9
+
10
+ Fixed
11
+
12
+ - \(maint\) Use parameters method instead of json\['parameters'\] [\#211](https://github.com/puppetlabs/puppet-strings/pull/211) ([lucywyman](https://github.com/lucywyman))
13
+ - \(PDOC-285\) Fix data\_type\_handler for errors and numbers [\#209](https://github.com/puppetlabs/puppet-strings/pull/209) ([glennsarti](https://github.com/glennsarti))
14
+
6
15
  ## [v2.3.0](https://github.com/puppetlabs/puppet-strings/tree/v2.3.0) (2019-07-17)
7
16
 
8
17
  [Full Changelog](https://github.com/puppetlabs/puppet-strings/compare/v2.2.0...v2.3.0)
data/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @puppet-strings-maintainers
@@ -1,3 +1,3 @@
1
1
  module PuppetStrings
2
- VERSION = '2.3.0'.freeze
2
+ VERSION = '2.3.1'.freeze
3
3
  end
@@ -43,7 +43,7 @@ class PuppetStrings::Yard::CodeObjects::Task < PuppetStrings::Yard::CodeObjects:
43
43
 
44
44
  def parameters
45
45
  parameters = []
46
- statement.json['parameters'].each do |name,props|
46
+ statement.parameters.each do |name,props|
47
47
  parameters.push({ name: name.to_s,
48
48
  tag_name: 'param',
49
49
  text: props['description'] || "",
@@ -14,7 +14,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
14
14
  return unless ruby_module_name == 'Puppet::DataTypes' || ruby_module_name == 'DataTypes' # rubocop:disable Style/MultipleComparison This reads better
15
15
  object = get_datatype_yard_object(get_name(statement, 'Puppet::DataTypes.create_type'))
16
16
 
17
- actual_params = extract_params_for_data_type # populate_data_type_data(object)
17
+ actual_params = extract_params_for_data_type
18
18
 
19
19
  # Mark the data type as public if it doesn't already have an api tag
20
20
  object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
@@ -65,7 +65,13 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
65
65
  interface_string = node_as_string(parameters[0])
66
66
  next unless interface_string
67
67
  # Ref - https://github.com/puppetlabs/puppet/blob/ba4d1a1aba0095d3c70b98fea5c67434a4876a61/lib/puppet/datatypes.rb#L159
68
- parsed_interface = Puppet::Pops::Parser::EvaluatingParser.new.parse_string("{ #{interface_string} }").body
68
+ parsed_interface = nil
69
+ begin
70
+ parsed_interface = Puppet::Pops::Parser::EvaluatingParser.new.parse_string("{ #{interface_string} }").body
71
+ rescue Puppet::Error => e
72
+ log.warn "Invalid datatype definition at #{statement.file}:#{statement.line}: #{e.basic_message}"
73
+ next
74
+ end
69
75
  next unless parsed_interface
70
76
 
71
77
  # Now that we parsed the Puppet code (as a string) into a LiteralHash PCore type (Puppet AST),
@@ -146,6 +152,10 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
146
152
  o.value
147
153
  end
148
154
 
155
+ def literal_UnaryMinusExpression(o) # rubocop:disable Naming/UncommunicativeMethodParamName
156
+ -1 * literal(o.expr)
157
+ end
158
+
149
159
  def literal_LiteralBoolean(o) # rubocop:disable Naming/UncommunicativeMethodParamName
150
160
  o.value
151
161
  end
@@ -25,7 +25,7 @@ else
25
25
  options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil?
26
26
  options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil?
27
27
  options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil?
28
- options[:verify_host_key] = Net::SSH::Verifiers::Null.new unless node_config.dig('ssh', 'host-key-check').nil?
28
+ options[:verify_host_key] = Net::SSH::Verifiers::Never.new unless node_config.dig('ssh', 'host-key-check').nil?
29
29
  host = if ENV['TARGET_HOST'].include?(':')
30
30
  ENV['TARGET_HOST'].split(':').first
31
31
  else
@@ -189,6 +189,83 @@ SOURCE
189
189
  end
190
190
  end
191
191
 
192
+ testcases = [
193
+ { :value => '-1', :expected => -1 },
194
+ { :value => '0', :expected => 0 },
195
+ { :value => '10', :expected => 10 },
196
+ { :value => '0777', :expected => 511 },
197
+ { :value => '0xFF', :expected => 255 },
198
+ { :value => '0.1', :expected => 0.1 },
199
+ { :value => '31.415e-1', :expected => 3.1415 },
200
+ { :value => '0.31415e1', :expected => 3.1415 }
201
+ ].each do |testcase|
202
+ describe "parsing a valid data type definition with numeric default #{testcase[:value]}" do
203
+ let(:source) { <<-SOURCE
204
+ # An example Puppet Data Type in Ruby.
205
+ # @param num1 A numeric parameter
206
+ Puppet::DataTypes.create_type('RubyDataType') do
207
+ interface <<-PUPPET
208
+ attributes => {
209
+ num1 => { type => Numeric, value => #{testcase[:value]} },
210
+ }
211
+ PUPPET
212
+ end
213
+ SOURCE
214
+ }
215
+
216
+ it 'should register a data type object' do
217
+ expect(subject.size).to eq(1)
218
+ object = subject.first
219
+ expect(object).to be_a(PuppetStrings::Yard::CodeObjects::DataType)
220
+ expect(object.parameters.size).to eq(1)
221
+ expect(object.parameters[0]).to eq(['num1', testcase[:expected]])
222
+ end
223
+ end
224
+ end
225
+
226
+ describe 'parsing a invalid data type definition' do
227
+ let(:source) { <<-SOURCE
228
+ # The msg attribute is missing a comma.
229
+ #
230
+ # @param msg A message parameter5.
231
+ # @param arg1 Optional String parameter5. Defaults to 'param'.
232
+ Puppet::DataTypes.create_type('RubyDataType') do
233
+ interface <<-PUPPET
234
+ attributes => {
235
+ msg => Variant[Numeric, String[1,2]]
236
+ arg1 => { type => Optional[String[1]], value => "param" }
237
+ }
238
+ PUPPET
239
+ end
240
+ SOURCE
241
+ }
242
+
243
+ it 'should register a partial data type object' do
244
+ expect(subject.size).to eq(1)
245
+ object = subject.first
246
+ expect(object).to be_a(PuppetStrings::Yard::CodeObjects::DataType)
247
+ expect(object.namespace).to eq(PuppetStrings::Yard::CodeObjects::DataTypes.instance)
248
+ expect(object.name).to eq(:RubyDataType)
249
+ expect(object.docstring).to eq('The msg attribute is missing a comma.')
250
+ # The attributes will be missing therefore only one tag
251
+ expect(object.docstring.tags.size).to eq(1)
252
+ tags = object.docstring.tags(:api)
253
+ expect(tags.size).to eq(1)
254
+ expect(tags[0].text).to eq('public')
255
+
256
+ # Check that the param tags are removed
257
+ tags = object.docstring.tags(:param)
258
+ expect(tags.size).to eq(0)
259
+
260
+ # Check for default values
261
+ expect(object.parameters.size).to eq(0)
262
+ end
263
+
264
+ it 'should log a warning' do
265
+ expect{ subject }.to output(/\[warn\]: Invalid datatype definition at (.+):[0-9]+: Syntax error at 'arg1'/).to_stdout_from_any_process
266
+ end
267
+ end
268
+
192
269
  describe 'parsing a data type with a summary' do
193
270
  context 'when the summary has fewer than 140 characters' do
194
271
  let(:source) { <<-SOURCE
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-strings
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-17 00:00:00.000000000 Z
11
+ date: 2019-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -50,6 +50,7 @@ extra_rdoc_files:
50
50
  - README.md
51
51
  files:
52
52
  - CHANGELOG.md
53
+ - CODEOWNERS
53
54
  - COMMITTERS.md
54
55
  - CONTRIBUTING.md
55
56
  - Gemfile
@@ -281,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
282
  version: '0'
282
283
  requirements:
283
284
  - puppet, >= 4.0.0
284
- rubygems_version: 3.0.4
285
+ rubygems_version: 3.0.3
285
286
  signing_key:
286
287
  specification_version: 4
287
288
  summary: Puppet documentation via YARD