puppet-lint-manifest_whitespace-check 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,559 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'manifest_whitespace_class_name_single_space_before' do
6
+ let(:single_space_msg) { 'there should be a single space between the class or defined resource statement and the name' }
7
+
8
+ context 'with two spaces' do
9
+ let(:code) do
10
+ <<~EOF
11
+ # example
12
+ #
13
+ # Main class, includes all other classes.
14
+ #
15
+
16
+ class example {
17
+ class { 'example2':
18
+ param1 => 'value1',
19
+ }
20
+ }
21
+ EOF
22
+ end
23
+
24
+ context 'with fix disabled' do
25
+ it 'should detect a single problem' do
26
+ expect(problems).to have(1).problem
27
+ end
28
+
29
+ it 'should create a error' do
30
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(6)
31
+ end
32
+ end
33
+
34
+ context 'with fix enabled' do
35
+ before do
36
+ PuppetLint.configuration.fix = true
37
+ end
38
+
39
+ after do
40
+ PuppetLint.configuration.fix = false
41
+ end
42
+
43
+ it 'should detect a single problem' do
44
+ expect(problems).to have(1).problem
45
+ end
46
+
47
+ it 'should fix the manifest' do
48
+ expect(problems).to contain_fixed(single_space_msg)
49
+ end
50
+
51
+ it 'should fix the space' do
52
+ expect(manifest).to eq(
53
+ <<~EOF,
54
+ # example
55
+ #
56
+ # Main class, includes all other classes.
57
+ #
58
+
59
+ class example {
60
+ class { 'example2':
61
+ param1 => 'value1',
62
+ }
63
+ }
64
+ EOF
65
+ )
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ describe 'manifest_whitespace_class_name_single_space_after' do
72
+ let(:single_space_msg) { 'there should be a single space between the class or resource name and the first bracket' }
73
+
74
+ context 'with no spaces' do
75
+ let(:code) do
76
+ <<~EOF
77
+ # example
78
+ #
79
+ # Main class, includes all other classes.
80
+ #
81
+
82
+ class example{
83
+ class { 'example2':
84
+ param1 => 'value1',
85
+ }
86
+ }
87
+ EOF
88
+ end
89
+
90
+ context 'with fix disabled' do
91
+ it 'should detect a single problem' do
92
+ expect(problems).to have(1).problem
93
+ end
94
+
95
+ it 'should create a error' do
96
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(14)
97
+ end
98
+ end
99
+
100
+ context 'with fix enabled' do
101
+ before do
102
+ PuppetLint.configuration.fix = true
103
+ end
104
+
105
+ after do
106
+ PuppetLint.configuration.fix = false
107
+ end
108
+
109
+ it 'should detect a single problem' do
110
+ expect(problems).to have(1).problem
111
+ end
112
+
113
+ it 'should fix the manifest' do
114
+ expect(problems).to contain_fixed(single_space_msg)
115
+ end
116
+
117
+ it 'should fix the newline' do
118
+ expect(manifest).to eq(
119
+ <<~EOF,
120
+ # example
121
+ #
122
+ # Main class, includes all other classes.
123
+ #
124
+
125
+ class example {
126
+ class { 'example2':
127
+ param1 => 'value1',
128
+ }
129
+ }
130
+ EOF
131
+ )
132
+ end
133
+ end
134
+ end
135
+
136
+ context 'with two spaces' do
137
+ let(:code) do
138
+ <<~EOF
139
+ # example
140
+ #
141
+ # Main class, includes all other classes.
142
+ #
143
+
144
+ class example {
145
+ class { 'example2':
146
+ param1 => 'value1',
147
+ }
148
+ }
149
+ EOF
150
+ end
151
+
152
+ context 'with fix disabled' do
153
+ it 'should detect a single problem' do
154
+ expect(problems).to have(1).problem
155
+ end
156
+
157
+ it 'should create a error' do
158
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(14)
159
+ end
160
+ end
161
+
162
+ context 'with fix enabled' do
163
+ before do
164
+ PuppetLint.configuration.fix = true
165
+ end
166
+
167
+ after do
168
+ PuppetLint.configuration.fix = false
169
+ end
170
+
171
+ it 'should detect a single problem' do
172
+ expect(problems).to have(1).problem
173
+ end
174
+
175
+ it 'should fix the manifest' do
176
+ expect(problems).to contain_fixed(single_space_msg)
177
+ end
178
+
179
+ it 'should fix the space' do
180
+ expect(manifest).to eq(
181
+ <<~EOF,
182
+ # example
183
+ #
184
+ # Main class, includes all other classes.
185
+ #
186
+
187
+ class example {
188
+ class { 'example2':
189
+ param1 => 'value1',
190
+ }
191
+ }
192
+ EOF
193
+ )
194
+ end
195
+ end
196
+ end
197
+
198
+ context 'with newline' do
199
+ let(:code) do
200
+ <<~EOF
201
+ # example
202
+ #
203
+ # Main class, includes all other classes.
204
+ #
205
+
206
+ class example
207
+
208
+
209
+ {
210
+ class { 'example2':
211
+ param1 => 'value1',
212
+ }
213
+ }
214
+ EOF
215
+ end
216
+
217
+ context 'with fix disabled' do
218
+ it 'should detect a single problem' do
219
+ expect(problems).to have(1).problem
220
+ end
221
+
222
+ it 'should create a error' do
223
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(14)
224
+ end
225
+ end
226
+
227
+ context 'with fix enabled' do
228
+ before do
229
+ PuppetLint.configuration.fix = true
230
+ end
231
+
232
+ after do
233
+ PuppetLint.configuration.fix = false
234
+ end
235
+
236
+ it 'should detect a single problem' do
237
+ expect(problems).to have(1).problem
238
+ end
239
+
240
+ it 'should fix the manifest' do
241
+ expect(problems).to contain_fixed(single_space_msg)
242
+ end
243
+
244
+ it 'should fix the newline' do
245
+ expect(manifest).to eq(
246
+ <<~EOF,
247
+ # example
248
+ #
249
+ # Main class, includes all other classes.
250
+ #
251
+
252
+ class example {
253
+ class { 'example2':
254
+ param1 => 'value1',
255
+ }
256
+ }
257
+ EOF
258
+ )
259
+ end
260
+ end
261
+ end
262
+
263
+ context 'with comment' do
264
+ let(:code) do
265
+ <<~EOF
266
+ # example
267
+ #
268
+ # Main class, includes all other classes.
269
+ #
270
+
271
+ class example # the class
272
+ {
273
+ class { 'example2':
274
+ param1 => 'value1',
275
+ }
276
+ }
277
+ EOF
278
+ end
279
+
280
+ context 'with fix disabled' do
281
+ it 'should detect a single problem' do
282
+ expect(problems).to have(1).problem
283
+ end
284
+
285
+ it 'should create a error' do
286
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(14)
287
+ end
288
+ end
289
+
290
+ context 'with fix enabled' do
291
+ before do
292
+ PuppetLint.configuration.fix = true
293
+ end
294
+
295
+ after do
296
+ PuppetLint.configuration.fix = false
297
+ end
298
+
299
+ it 'should detect a single problem' do
300
+ expect(problems).to have(1).problem
301
+ end
302
+
303
+ it 'should not fix the manifest' do
304
+ expect(problems).to contain_error(single_space_msg).on_line(6).in_column(14)
305
+ end
306
+ end
307
+ end
308
+ end
309
+
310
+ describe 'manifest_whitespace_class_opening_curly_brace' do
311
+ let(:opening_curly_brace_same_line_msg) { 'there should be a single space before the opening curly bracket of a class body' }
312
+
313
+ context 'with no spaces' do
314
+ let(:code) do
315
+ <<~EOF
316
+ # example
317
+ #
318
+ # Main class, includes all other classes.
319
+ #
320
+
321
+ class example (
322
+ String $content,
323
+ ){
324
+ class { 'example2':
325
+ param1 => 'value1',
326
+ }
327
+ }
328
+ EOF
329
+ end
330
+
331
+ context 'with fix disabled' do
332
+ it 'should detect a single problem' do
333
+ expect(problems).to have(1).problem
334
+ end
335
+
336
+ it 'should create a error' do
337
+ expect(problems).to contain_error(opening_curly_brace_same_line_msg).on_line(8).in_column(2)
338
+ end
339
+ end
340
+
341
+ context 'with fix enabled' do
342
+ before do
343
+ PuppetLint.configuration.fix = true
344
+ end
345
+
346
+ after do
347
+ PuppetLint.configuration.fix = false
348
+ end
349
+
350
+ it 'should detect a single problem' do
351
+ expect(problems).to have(1).problem
352
+ end
353
+
354
+ it 'should create a error' do
355
+ expect(problems).to contain_fixed(opening_curly_brace_same_line_msg)
356
+ end
357
+
358
+ it 'should add a space' do
359
+ expect(manifest).to eq(
360
+ <<~EOF,
361
+ # example
362
+ #
363
+ # Main class, includes all other classes.
364
+ #
365
+
366
+ class example (
367
+ String $content,
368
+ ) {
369
+ class { 'example2':
370
+ param1 => 'value1',
371
+ }
372
+ }
373
+ EOF
374
+ )
375
+ end
376
+ end
377
+ end
378
+
379
+ context 'with two spaces' do
380
+ let(:code) do
381
+ <<~EOF
382
+ # example
383
+ #
384
+ # Main class, includes all other classes.
385
+ #
386
+
387
+ class example (
388
+ String $content,
389
+ ) {
390
+ class { 'example2':
391
+ param1 => 'value1',
392
+ }
393
+ }
394
+ EOF
395
+ end
396
+
397
+ context 'with fix disabled' do
398
+ it 'should detect a single problem' do
399
+ expect(problems).to have(1).problem
400
+ end
401
+
402
+ it 'should create a error' do
403
+ expect(problems).to contain_error(opening_curly_brace_same_line_msg).on_line(8).in_column(4)
404
+ end
405
+ end
406
+
407
+ context 'with fix enabled' do
408
+ before do
409
+ PuppetLint.configuration.fix = true
410
+ end
411
+
412
+ after do
413
+ PuppetLint.configuration.fix = false
414
+ end
415
+
416
+ it 'should detect a single problem' do
417
+ expect(problems).to have(1).problem
418
+ end
419
+
420
+ it 'should create a error' do
421
+ expect(problems).to contain_fixed(opening_curly_brace_same_line_msg)
422
+ end
423
+
424
+ it 'should remove a space' do
425
+ expect(manifest).to eq(
426
+ <<~EOF,
427
+ # example
428
+ #
429
+ # Main class, includes all other classes.
430
+ #
431
+
432
+ class example (
433
+ String $content,
434
+ ) {
435
+ class { 'example2':
436
+ param1 => 'value1',
437
+ }
438
+ }
439
+ EOF
440
+ )
441
+ end
442
+ end
443
+ end
444
+
445
+ context 'with newline' do
446
+ let(:code) do
447
+ <<~EOF
448
+ # example
449
+ #
450
+ # Main class, includes all other classes.
451
+ #
452
+
453
+ class example (
454
+ String $content,
455
+ )
456
+ {
457
+ class { 'example2':
458
+ param1 => 'value1',
459
+ }
460
+ }
461
+ EOF
462
+ end
463
+
464
+ context 'with fix disabled' do
465
+ it 'should detect a single problem' do
466
+ expect(problems).to have(1).problem
467
+ end
468
+
469
+ it 'should create a error' do
470
+ expect(problems).to contain_error(opening_curly_brace_same_line_msg).on_line(9).in_column(1)
471
+ end
472
+ end
473
+
474
+ context 'with fix enabled' do
475
+ before do
476
+ PuppetLint.configuration.fix = true
477
+ end
478
+
479
+ after do
480
+ PuppetLint.configuration.fix = false
481
+ end
482
+
483
+ it 'should detect a single problem' do
484
+ expect(problems).to have(1).problem
485
+ end
486
+
487
+ it 'should create a error' do
488
+ expect(problems).to contain_fixed(opening_curly_brace_same_line_msg)
489
+ end
490
+
491
+ it 'should fix the newline' do
492
+ expect(manifest).to eq(
493
+ <<~EOF,
494
+ # example
495
+ #
496
+ # Main class, includes all other classes.
497
+ #
498
+
499
+ class example (
500
+ String $content,
501
+ ) {
502
+ class { 'example2':
503
+ param1 => 'value1',
504
+ }
505
+ }
506
+ EOF
507
+ )
508
+ end
509
+ end
510
+ end
511
+
512
+ context 'with comment' do
513
+ let(:code) do
514
+ <<~EOF
515
+ # example
516
+ #
517
+ # Main class, includes all other classes.
518
+ #
519
+
520
+ class example (
521
+ String $content,
522
+ ) # the class
523
+ {
524
+ class { 'example2':
525
+ param1 => 'value1',
526
+ }
527
+ }
528
+ EOF
529
+ end
530
+
531
+ context 'with fix disabled' do
532
+ it 'should detect a single problem' do
533
+ expect(problems).to have(1).problem
534
+ end
535
+
536
+ it 'should create a error' do
537
+ expect(problems).to contain_error(opening_curly_brace_same_line_msg).on_line(9).in_column(1)
538
+ end
539
+ end
540
+
541
+ context 'with fix enabled' do
542
+ before do
543
+ PuppetLint.configuration.fix = true
544
+ end
545
+
546
+ after do
547
+ PuppetLint.configuration.fix = false
548
+ end
549
+
550
+ it 'should detect a single problem' do
551
+ expect(problems).to have(1).problem
552
+ end
553
+
554
+ it 'should not fix the manifest' do
555
+ expect(problems).to contain_error(opening_curly_brace_same_line_msg).on_line(9).in_column(1)
556
+ end
557
+ end
558
+ end
559
+ end