puppet-lint-file_ensure-check 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 304d76cda3e5fb47e9bc831b14d9ef234a9d07c2
4
- data.tar.gz: c838921b89314ab4fac03deb3556afda43ca01f8
3
+ metadata.gz: cfa9f5e1fc0ea251d4bad7cf61e5afe8826fd5f8
4
+ data.tar.gz: 77cdaaabc6993fe383d7c813104f49dbe0857f4b
5
5
  SHA512:
6
- metadata.gz: c429918c46ef5e85cb03ac35b99d39bba19d84d2763f410978dea325e67f590057d445d3c87c0a0a6293150f61290a2a67ee981857aaf5a4db109073b87b9a7b
7
- data.tar.gz: 0597c6878e75da08f8137fd0a36f75cf25740841e677dcad1917af8893eb98329c4aa8f320cbe4d3ded5f6f3298093ed895b00da2202027d14e94cc36dfc51bd
6
+ metadata.gz: 3970c7fb794837a782894fcd3690674219e099de8438038637375e3a9b305ab92a322c77786c83d4c033e0d3bd711d125ec19113a5c6b228df49996ad7ed3342
7
+ data.tar.gz: 4f2c9fa4a829aaf148b090a7825cedb90c594336e567917a1ac59b92fdd10e6c28c6c147512887a93ef0c108a0c59eb31975bb2ea58777853e04902886af01db
@@ -2,19 +2,33 @@ PuppetLint.new_check(:file_ensure) do
2
2
  def check
3
3
  resource_indexes.each do |resource|
4
4
  if resource[:type].value == 'file'
5
- attr = resource[:tokens].select { |t| t.type == :NAME && t.value == 'ensure' && t.next_code_token.type == :FARROW }
5
+ attr = resource[:tokens].select { |t| t.type == :NAME && \
6
+ t.value == 'ensure' && \
7
+ t.next_code_token.type == :FARROW }
6
8
  unless attr.empty?
7
9
  val_token = attr[0].next_code_token.next_code_token
8
10
  if val_token.value == 'present'
9
11
  notify :warning, {
10
- :message => 'ensure set to present on file resource',
11
- :line => val_token.line,
12
- :column => val_token.column,
13
- :token => val_token,
12
+ :message => 'ensure set to present on file resource',
13
+ :line => val_token.line,
14
+ :column => val_token.column,
15
+ :token => val_token,
16
+ :resource => resource,
14
17
  }
15
18
  end
16
19
  end
17
20
  end
18
21
  end
19
22
  end
23
+
24
+ def fix(problem)
25
+ target_attr = problem[:resource][:tokens].select { |t| t.type == :NAME && \
26
+ t.value == 'target' && \
27
+ t.next_code_token.type == :FARROW }
28
+ if target_attr.empty?
29
+ problem[:token].value = 'file'
30
+ else
31
+ problem[:token].value = 'link'
32
+ end
33
+ end
20
34
  end
@@ -12,7 +12,8 @@ describe 'file_ensure' do
12
12
  }
13
13
 
14
14
  file { '/etc/fstab':
15
- ensure => 'file',
15
+ ensure => 'target',
16
+ target => '/etc/mtab',
16
17
  }
17
18
  EOS
18
19
  }
@@ -31,11 +32,12 @@ describe 'file_ensure' do
31
32
 
32
33
  file { '/etc/fstab':
33
34
  ensure => 'present',
35
+ target => '/etc/mtab',
34
36
  }
35
37
  EOS
36
38
  }
37
39
 
38
- it 'should detect a single problem' do
40
+ it 'should detect problems' do
39
41
  expect(problems).to have(2).problems
40
42
  end
41
43
 
@@ -45,4 +47,76 @@ describe 'file_ensure' do
45
47
  end
46
48
  end
47
49
  end
50
+
51
+ context 'with fix enabled' do
52
+ before do
53
+ PuppetLint.configuration.fix = true
54
+ end
55
+
56
+ after do
57
+ PuppetLint.configuration.fix = false
58
+ end
59
+
60
+ context 'correct file resource declarations' do
61
+ let (:code) {
62
+ <<-EOS
63
+ file { '/etc/sudoers':
64
+ ensure => file,
65
+ }
66
+
67
+ file { '/etc/fstab':
68
+ ensure => 'target',
69
+ target => '/etc/mtab',
70
+ }
71
+ EOS
72
+ }
73
+
74
+ it 'should not detect any problems' do
75
+ expect(problems).to have(0).problems
76
+ end
77
+
78
+ it 'should not modify the manifest' do
79
+ expect(manifest).to eq(code)
80
+ end
81
+ end
82
+
83
+ context 'wrong file resource declarations' do
84
+ let (:code) {
85
+ <<-EOS
86
+ file { '/etc/sudoers':
87
+ ensure => present,
88
+ }
89
+
90
+ file { '/etc/fstab':
91
+ ensure => 'present',
92
+ target => '/etc/mtab',
93
+ }
94
+ EOS
95
+ }
96
+
97
+ it 'should detect two problems' do
98
+ expect(problems).to have(2).problems
99
+ end
100
+
101
+ it 'should create a warning' do
102
+ expect(problems).to contain_fixed(msg).on_line(2).in_column(21)
103
+ expect(problems).to contain_fixed(msg).on_line(6).in_column(21)
104
+ end
105
+
106
+ it 'should fix the ensure parameter' do
107
+ expect(manifest).to eq(
108
+ <<-EOS
109
+ file { '/etc/sudoers':
110
+ ensure => file,
111
+ }
112
+
113
+ file { '/etc/fstab':
114
+ ensure => 'link',
115
+ target => '/etc/mtab',
116
+ }
117
+ EOS
118
+ )
119
+ end
120
+ end
121
+ end
48
122
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-file_ensure-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camptocamp