defmastership 1.3.2 → 1.3.3
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 +4 -4
- data/Guardfile +2 -5
- data/config/mutant.yml +2 -1
- data/config/rubocop.yml +20 -8
- data/defmastership.gemspec +4 -14
- data/features/changeref.feature +78 -0
- data/features/definition_checksum.feature +118 -0
- data/features/definition_version.feature +168 -0
- data/features/export.feature +67 -22
- data/features/external_ref_checksum.feature +169 -0
- data/features/external_ref_version.feature +173 -0
- data/features/internal_ref_checksum.feature +77 -0
- data/features/internal_ref_version.feature +81 -0
- data/features/rename_included_files.feature +28 -0
- data/lib/defmastership/app.rb +5 -6
- data/lib/defmastership/comment_filter.rb +2 -0
- data/lib/defmastership/def_type_list.rb +25 -0
- data/lib/defmastership/definition_parser.rb +2 -6
- data/lib/defmastership/document.rb +6 -9
- data/lib/defmastership/modifier/change_ref.rb +11 -34
- data/lib/defmastership/modifier/factory.rb +5 -1
- data/lib/defmastership/modifier/rename_included_files.rb +9 -0
- data/lib/defmastership/modifier/replacement_formatter.rb +37 -0
- data/lib/defmastership/modifier/update_def.rb +5 -1
- data/lib/defmastership/modifier/update_eref_checksum.rb +46 -0
- data/lib/defmastership/modifier/update_eref_common.rb +77 -0
- data/lib/defmastership/modifier/update_eref_version.rb +46 -0
- data/lib/defmastership/modifier/update_iref_checksum.rb +51 -0
- data/lib/defmastership/modifier/update_iref_common.rb +45 -0
- data/lib/defmastership/modifier/update_iref_version.rb +58 -0
- data/lib/defmastership/version.rb +1 -1
- data/spec/spec_helper.rb +11 -10
- data/spec/unit/defmastership/app_spec.rb +32 -19
- data/spec/unit/defmastership/batch_modifier_spec.rb +9 -7
- data/spec/unit/defmastership/def_type_list_spec.rb +22 -0
- data/spec/unit/defmastership/definition_spec.rb +8 -51
- data/spec/unit/defmastership/document_spec.rb +12 -36
- data/spec/unit/defmastership/export/body_formatter_spec.rb +5 -18
- data/spec/unit/defmastership/export/csv/formatter_spec.rb +1 -0
- data/spec/unit/defmastership/export/header_formatter_spec.rb +2 -6
- data/spec/unit/defmastership/hash_spec.rb +2 -0
- data/spec/unit/defmastership/modifier/change_ref_spec.rb +33 -70
- data/spec/unit/defmastership/modifier/factory_spec.rb +40 -17
- data/spec/unit/defmastership/modifier/modifier_common_spec.rb +2 -0
- data/spec/unit/defmastership/modifier/rename_included_files_spec.rb +62 -46
- data/spec/unit/defmastership/modifier/update_def_checksum_spec.rb +2 -9
- data/spec/unit/defmastership/modifier/update_def_spec.rb +76 -21
- data/spec/unit/defmastership/modifier/update_def_version_spec.rb +6 -32
- data/spec/unit/defmastership/modifier/update_eref_checksum_spec.rb +200 -0
- data/spec/unit/defmastership/modifier/update_eref_version_spec.rb +215 -0
- data/spec/unit/defmastership/modifier/update_iref_checksum_spec.rb +133 -0
- data/spec/unit/defmastership/modifier/update_iref_version_spec.rb +162 -0
- data/tasks/code_quality.rake +1 -8
- data/tasks/test.rake +15 -0
- metadata +34 -3
@@ -12,6 +12,7 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
12
12
|
it { is_expected.to(have_attributes(from_regexp: '')) }
|
13
13
|
it { is_expected.to(have_attributes(to_template: '')) }
|
14
14
|
it { is_expected.to(have_attributes(next_ref: 0)) }
|
15
|
+
it { is_expected.to(have_attributes(config: { def_type: '', from_regexp: '', to_template: '', next_ref: 0 })) }
|
15
16
|
end
|
16
17
|
|
17
18
|
describe '.replacement_methods' do
|
@@ -21,29 +22,13 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
|
-
describe '#config' do
|
25
|
-
context 'when not initalized' do
|
26
|
-
it do
|
27
|
-
expect(refchanger.config).to(
|
28
|
-
include(from_regexp: '', to_template: '', next_ref: 0)
|
29
|
-
)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
25
|
describe '#replace_refdef' do
|
35
26
|
context 'when really simple rule' do
|
36
|
-
subject(:refchanger)
|
37
|
-
described_class.new(
|
38
|
-
from_regexp: 'TEMP',
|
39
|
-
to_template: 'TUTU'
|
40
|
-
)
|
41
|
-
end
|
27
|
+
subject(:refchanger) { described_class.new(from_regexp: 'TEMP', to_template: 'TUTU') }
|
42
28
|
|
43
29
|
context 'when valid definition' do
|
44
30
|
it do
|
45
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
|
46
|
-
.to(eq('[define, whatever, TUTU]'))
|
31
|
+
expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TUTU]'))
|
47
32
|
end
|
48
33
|
|
49
34
|
it do
|
@@ -56,32 +41,23 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
56
41
|
.to(eq('[define, whatever, TUTU(~12345678)]'))
|
57
42
|
end
|
58
43
|
|
59
|
-
it
|
60
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP(a)]'))
|
61
|
-
.to(eq('[define, whatever, TUTU(a)]'))
|
62
|
-
end
|
44
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TEMP(a)]')).to(eq('[define, whatever, TUTU(a)]')) }
|
63
45
|
end
|
64
46
|
|
65
47
|
context 'when no valid definition' do
|
66
48
|
it do
|
67
|
-
expect(refchanger.replace_refdef('[pouet, whatever, TEMP]'))
|
68
|
-
.to(eq('[pouet, whatever, TEMP]'))
|
49
|
+
expect(refchanger.replace_refdef('[pouet, whatever, TEMP]')).to(eq('[pouet, whatever, TEMP]'))
|
69
50
|
end
|
70
51
|
end
|
71
52
|
end
|
72
53
|
|
73
54
|
context 'when template is variable' do
|
74
55
|
subject(:refchanger) do
|
75
|
-
described_class.new(
|
76
|
-
from_regexp: 'TEMP',
|
77
|
-
to_template: 'TOTO-%<next_ref>04d',
|
78
|
-
next_ref: 124
|
79
|
-
)
|
56
|
+
described_class.new(from_regexp: 'TEMP', to_template: 'TOTO-%<next_ref>04d', next_ref: 124)
|
80
57
|
end
|
81
58
|
|
82
59
|
it do
|
83
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
|
84
|
-
.to(eq('[define, whatever, TOTO-0124]'))
|
60
|
+
expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TOTO-0124]'))
|
85
61
|
end
|
86
62
|
|
87
63
|
it do
|
@@ -99,15 +75,11 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
99
75
|
)
|
100
76
|
end
|
101
77
|
|
102
|
-
it
|
103
|
-
expect(refchanger.replace_refdef('[define, whatever, TOTO-TEMP]'))
|
104
|
-
.to(eq('[define, whatever, TOTO-0132]'))
|
105
|
-
end
|
78
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TOTO-TEMP]')).to(eq('[define, whatever, TOTO-0132]')) }
|
106
79
|
|
107
80
|
it do
|
108
81
|
refchanger.replace_refdef('[define, whatever, TOTO-TEMP]')
|
109
|
-
expect(refchanger.replace_refdef('[define, whatever, TITI-TEMP]'))
|
110
|
-
.to(eq('[define, whatever, TITI-0133]'))
|
82
|
+
expect(refchanger.replace_refdef('[define, whatever, TITI-TEMP]')).to(eq('[define, whatever, TITI-0133]'))
|
111
83
|
end
|
112
84
|
|
113
85
|
it do
|
@@ -118,29 +90,18 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
118
90
|
end
|
119
91
|
|
120
92
|
context 'when definition is in literal block' do
|
121
|
-
subject(:refchanger)
|
122
|
-
described_class.new(
|
123
|
-
from_regexp: 'TEMP',
|
124
|
-
to_template: 'TUTU'
|
125
|
-
)
|
126
|
-
end
|
93
|
+
subject(:refchanger) { described_class.new(from_regexp: 'TEMP', to_template: 'TUTU') }
|
127
94
|
|
128
95
|
before do
|
129
96
|
refchanger.replace_refdef('....')
|
130
97
|
end
|
131
98
|
|
132
|
-
it
|
133
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
|
134
|
-
.to(eq('[define, whatever, TEMP]'))
|
135
|
-
end
|
99
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
136
100
|
end
|
137
101
|
|
138
|
-
context 'when
|
102
|
+
context 'when definition is after literal block' do
|
139
103
|
subject(:refchanger) do
|
140
|
-
described_class.new(
|
141
|
-
from_regexp: 'TEMP',
|
142
|
-
to_template: 'TUTU'
|
143
|
-
)
|
104
|
+
described_class.new(from_regexp: 'TEMP', to_template: 'TUTU')
|
144
105
|
end
|
145
106
|
|
146
107
|
before do
|
@@ -149,10 +110,22 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
149
110
|
refchanger.replace_refdef("....\n")
|
150
111
|
end
|
151
112
|
|
152
|
-
it
|
153
|
-
|
154
|
-
|
155
|
-
|
113
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TUTU]')) }
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'when definition do no fit with a definition\'s type value' do
|
117
|
+
subject(:refchanger) { described_class.new(def_type: 'req', from_regexp: 'TEMP', to_template: 'TUTU') }
|
118
|
+
|
119
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
120
|
+
it { expect(refchanger.replace_refdef('[define, req, TEMP]')).to(eq('[define, req, TUTU]')) }
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'when definition do no fit with a definition\'s type list' do
|
124
|
+
subject(:refchanger) { described_class.new(def_type: %w[req pouet], from_regexp: 'TEMP', to_template: 'TUTU') }
|
125
|
+
|
126
|
+
it { expect(refchanger.replace_refdef('[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
127
|
+
it { expect(refchanger.replace_refdef('[define, req, TEMP]')).to(eq('[define, req, TUTU]')) }
|
128
|
+
it { expect(refchanger.replace_refdef('[define, pouet, TEMP]')).to(eq('[define, pouet, TUTU]')) }
|
156
129
|
end
|
157
130
|
end
|
158
131
|
|
@@ -170,15 +143,8 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
170
143
|
refchanger.replace_refdef('[define, whatever, TITI-TEMP421]')
|
171
144
|
end
|
172
145
|
|
173
|
-
it
|
174
|
-
|
175
|
-
.to(eq('defs:iref[TOTO-TEMP1234]'))
|
176
|
-
end
|
177
|
-
|
178
|
-
it do
|
179
|
-
expect(refchanger.replace_irefs('defs:iref[TOTO-TEMP123]'))
|
180
|
-
.to(eq('defs:iref[TOTO-0132]'))
|
181
|
-
end
|
146
|
+
it { expect(refchanger.replace_irefs('defs:iref[TOTO-TEMP1234]')).to(eq('defs:iref[TOTO-TEMP1234]')) }
|
147
|
+
it { expect(refchanger.replace_irefs('defs:iref[TOTO-TEMP123]')).to(eq('defs:iref[TOTO-0132]')) }
|
182
148
|
|
183
149
|
it do
|
184
150
|
expect(
|
@@ -225,8 +191,7 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
225
191
|
['tag=!TITI-TEMP421;TOTO-TEMP123', 'tag=!TITI-0133;TOTO-0132']
|
226
192
|
].each do |from, to|
|
227
193
|
it do
|
228
|
-
expect(refchanger.replace_include_tags("include::path/target[#{from}]"))
|
229
|
-
.to(eq("include::path/target[#{to}]"))
|
194
|
+
expect(refchanger.replace_include_tags("include::path/target[#{from}]")).to(eq("include::path/target[#{to}]"))
|
230
195
|
end
|
231
196
|
end
|
232
197
|
|
@@ -297,9 +262,7 @@ MIF
|
|
297
262
|
it { expect(File).to(have_received(:readlines).with('path/target')) }
|
298
263
|
|
299
264
|
it do
|
300
|
-
expect(File).to(
|
301
|
-
have_received(:writelines).with('path/target', mofified_included_file.split)
|
302
|
-
)
|
265
|
+
expect(File).to(have_received(:writelines).with('path/target', mofified_included_file.split))
|
303
266
|
end
|
304
267
|
|
305
268
|
it { expect(File).not_to(have_received(:readlines).with('otherpath/othertarget')) }
|
@@ -14,32 +14,55 @@ module Defmastership
|
|
14
14
|
class TuTu
|
15
15
|
include ModifierCommon
|
16
16
|
end
|
17
|
+
|
18
|
+
# Modifier example
|
19
|
+
class Nono
|
20
|
+
include ModifierCommon
|
21
|
+
end
|
17
22
|
end
|
18
23
|
end
|
19
24
|
|
20
25
|
RSpec.describe(Defmastership::Modifier::Factory) do
|
21
26
|
describe('.from_config') do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
before do
|
28
|
-
allow(Defmastership::Modifier::Toto).to(receive(:new).with(toto_config[:config]).and_return(toto))
|
29
|
-
allow(Defmastership::Modifier::TuTu).to(receive(:new).with(tutu_config[:config]).and_return(tutu))
|
30
|
-
end
|
27
|
+
context 'when :config is not empty' do
|
28
|
+
let(:toto) { instance_double(Defmastership::Modifier::Toto, 'toto') }
|
29
|
+
let(:toto_config) { { type: 'toto', config: { p: 'whatever' } } }
|
30
|
+
let(:tutu) { instance_double(Defmastership::Modifier::TuTu, 'tutu') }
|
31
|
+
let(:tutu_config) { { type: 'tu_tu', config: { p: 'whatever' } } }
|
31
32
|
|
32
|
-
|
33
|
-
|
33
|
+
before do
|
34
|
+
allow(Defmastership::Modifier::Toto).to(receive(:new).and_return(toto))
|
35
|
+
allow(Defmastership::Modifier::TuTu).to(receive(:new).and_return(tutu))
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
described_class.from_config(
|
37
|
-
|
38
|
+
it { expect(described_class.from_config(toto_config)).to(be(toto)) }
|
39
|
+
it { expect(described_class.from_config(tutu_config)).to(be(tutu)) }
|
40
|
+
|
41
|
+
it do
|
42
|
+
described_class.from_config(toto_config)
|
43
|
+
expect(Defmastership::Modifier::Toto).to(have_received(:new).with(toto_config[:config]))
|
44
|
+
end
|
45
|
+
|
46
|
+
it do
|
47
|
+
described_class.from_config(tutu_config)
|
48
|
+
expect(Defmastership::Modifier::TuTu).to(have_received(:new).with(tutu_config[:config]))
|
49
|
+
end
|
38
50
|
end
|
39
51
|
|
40
|
-
|
41
|
-
|
42
|
-
|
52
|
+
context 'when :config is empty' do
|
53
|
+
let(:nono) { instance_double(Defmastership::Modifier::Nono, 'nono') }
|
54
|
+
let(:nono_config) { { type: 'nono' } }
|
55
|
+
|
56
|
+
before do
|
57
|
+
allow(Defmastership::Modifier::Nono).to(receive(:new).and_return(nono))
|
58
|
+
end
|
59
|
+
|
60
|
+
it { expect(described_class.from_config(nono_config)).to(be(nono)) }
|
61
|
+
|
62
|
+
it do
|
63
|
+
described_class.from_config(nono_config)
|
64
|
+
expect(Defmastership::Modifier::Nono).to(have_received(:new).with({}))
|
65
|
+
end
|
43
66
|
end
|
44
67
|
end
|
45
68
|
end
|
@@ -24,12 +24,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
24
24
|
|
25
25
|
describe '#replace' do
|
26
26
|
context 'when NOT valid include' do
|
27
|
-
subject(:includeschanger)
|
28
|
-
described_class.new(
|
29
|
-
from_regexp: 'orig',
|
30
|
-
to_template: 'dest'
|
31
|
-
)
|
32
|
-
end
|
27
|
+
subject(:includeschanger) { described_class.new(from_regexp: 'orig', to_template: 'dest') }
|
33
28
|
|
34
29
|
before do
|
35
30
|
allow(File).to(receive(:rename))
|
@@ -42,10 +37,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
42
37
|
end
|
43
38
|
end
|
44
39
|
|
45
|
-
it
|
46
|
-
expect(includeschanger.replace('badinclude::orig[]'))
|
47
|
-
.to(eq('badinclude::orig[]'))
|
48
|
-
end
|
40
|
+
it { expect(includeschanger.replace('badinclude::orig[]')).to(eq('badinclude::orig[]')) }
|
49
41
|
|
50
42
|
it do
|
51
43
|
includeschanger.replace('badinclude::orig[]')
|
@@ -60,10 +52,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
60
52
|
end
|
61
53
|
end
|
62
54
|
|
63
|
-
it
|
64
|
-
expect(includeschanger.replace('include::orig[]'))
|
65
|
-
.to(eq('include::orig[]'))
|
66
|
-
end
|
55
|
+
it { expect(includeschanger.replace('include::orig[]')).to(eq('include::orig[]')) }
|
67
56
|
|
68
57
|
it do
|
69
58
|
includeschanger.replace('include::orig[]')
|
@@ -77,19 +66,12 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
77
66
|
includeschanger.replace('--')
|
78
67
|
end
|
79
68
|
|
80
|
-
it
|
81
|
-
expect(includeschanger.replace('// include::orig[]'))
|
82
|
-
.to(eq('// include::orig[]'))
|
83
|
-
end
|
69
|
+
it { expect(includeschanger.replace('// include::orig[]')).to(eq('// include::orig[]')) }
|
84
70
|
end
|
85
71
|
|
86
72
|
context 'when the cancel regexp is met' do
|
87
73
|
subject(:includeschanger) do
|
88
|
-
described_class.new(
|
89
|
-
from_regexp: 'orig',
|
90
|
-
cancel_if_match: 'orig',
|
91
|
-
to_template: 'dest'
|
92
|
-
)
|
74
|
+
described_class.new(from_regexp: 'orig', cancel_if_match: 'orig', to_template: 'dest')
|
93
75
|
end
|
94
76
|
|
95
77
|
before do
|
@@ -97,10 +79,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
97
79
|
includeschanger.replace('--')
|
98
80
|
end
|
99
81
|
|
100
|
-
it
|
101
|
-
expect(includeschanger.replace("include::orig[]\n"))
|
102
|
-
.to(eq("include::orig[]\n"))
|
103
|
-
end
|
82
|
+
it { expect(includeschanger.replace("include::orig[]\n")).to(eq("include::orig[]\n")) }
|
104
83
|
end
|
105
84
|
end
|
106
85
|
|
@@ -111,11 +90,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
111
90
|
|
112
91
|
context 'when really simple rule' do
|
113
92
|
subject(:includeschanger) do
|
114
|
-
described_class.new(
|
115
|
-
from_regexp: 'orig',
|
116
|
-
cancel_if_match: '_no_cancel_',
|
117
|
-
to_template: 'dest'
|
118
|
-
)
|
93
|
+
described_class.new(from_regexp: 'orig', cancel_if_match: '_no_cancel_', to_template: 'dest')
|
119
94
|
end
|
120
95
|
|
121
96
|
before do
|
@@ -166,10 +141,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
166
141
|
|
167
142
|
context 'when complex from_regexp' do
|
168
143
|
subject(:includeschanger) do
|
169
|
-
described_class.new(
|
170
|
-
from_regexp: '(?<origin>.*\.extension)',
|
171
|
-
to_template: '%<reference>s_%<origin>s'
|
172
|
-
)
|
144
|
+
described_class.new(from_regexp: '(?<origin>.*\.extension)', to_template: '%<reference>s_%<origin>s')
|
173
145
|
end
|
174
146
|
|
175
147
|
before do
|
@@ -194,12 +166,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
194
166
|
end
|
195
167
|
|
196
168
|
context 'when path with variable' do
|
197
|
-
subject(:includeschanger)
|
198
|
-
described_class.new(
|
199
|
-
from_regexp: 'orig',
|
200
|
-
to_template: 'dest'
|
201
|
-
)
|
202
|
-
end
|
169
|
+
subject(:includeschanger) { described_class.new(from_regexp: 'orig', to_template: 'dest') }
|
203
170
|
|
204
171
|
before do
|
205
172
|
includeschanger.replace(':any: one')
|
@@ -209,10 +176,7 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
209
176
|
includeschanger.replace('--')
|
210
177
|
end
|
211
178
|
|
212
|
-
it
|
213
|
-
expect(includeschanger.replace('include::{any}/orig[]'))
|
214
|
-
.to(eq('include::{any}/dest[]'))
|
215
|
-
end
|
179
|
+
it { expect(includeschanger.replace('include::{any}/orig[]')).to(eq('include::{any}/dest[]')) }
|
216
180
|
|
217
181
|
it do
|
218
182
|
includeschanger.replace('include::{any}{var}/orig[]')
|
@@ -234,6 +198,58 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
234
198
|
expect(includeschanger).to(have_attributes(changes: [%w[one_two/orig one_two/dest]]))
|
235
199
|
end
|
236
200
|
end
|
201
|
+
|
202
|
+
context 'when definition\'s type does not fit a value' do
|
203
|
+
subject(:includeschanger) do
|
204
|
+
described_class.new(def_type: 'requirement', from_regexp: 'orig', to_template: 'dest')
|
205
|
+
end
|
206
|
+
|
207
|
+
it do
|
208
|
+
includeschanger.replace('[define,whatever,REFERENCE]')
|
209
|
+
includeschanger.replace('--')
|
210
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
211
|
+
.to(eq("include::orig[]\n"))
|
212
|
+
end
|
213
|
+
|
214
|
+
it do
|
215
|
+
includeschanger.replace('[define,requirement,REFERENCE]')
|
216
|
+
includeschanger.replace('--')
|
217
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
218
|
+
.to(eq("include::dest[]\n"))
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'when definition\'s type is not included in a list' do
|
223
|
+
subject(:includeschanger) do
|
224
|
+
described_class.new(def_type: %w[requirement pouet], from_regexp: 'orig', to_template: 'dest')
|
225
|
+
end
|
226
|
+
|
227
|
+
it do
|
228
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
229
|
+
.to(eq("include::orig[]\n"))
|
230
|
+
end
|
231
|
+
|
232
|
+
it do
|
233
|
+
includeschanger.replace('[define,whatever,REFERENCE]')
|
234
|
+
includeschanger.replace('--')
|
235
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
236
|
+
.to(eq("include::orig[]\n"))
|
237
|
+
end
|
238
|
+
|
239
|
+
it do
|
240
|
+
includeschanger.replace('[define,requirement,REFERENCE]')
|
241
|
+
includeschanger.replace('--')
|
242
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
243
|
+
.to(eq("include::dest[]\n"))
|
244
|
+
end
|
245
|
+
|
246
|
+
it do
|
247
|
+
includeschanger.replace('[define,pouet,REFERENCE]')
|
248
|
+
includeschanger.replace('--')
|
249
|
+
expect(includeschanger.replace("include::orig[]\n"))
|
250
|
+
.to(eq("include::dest[]\n"))
|
251
|
+
end
|
252
|
+
end
|
237
253
|
end
|
238
254
|
end
|
239
255
|
end
|
@@ -55,11 +55,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefChecksum) do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
describe '#replace' do
|
58
|
-
subject(:modifier)
|
59
|
-
described_class.new(
|
60
|
-
def_type: 'requirement'
|
61
|
-
)
|
62
|
-
end
|
58
|
+
subject(:modifier) { described_class.new(def_type: 'requirement') }
|
63
59
|
|
64
60
|
let(:definition) { instance_double(Defmastership::Definition, 'definition') }
|
65
61
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
@@ -70,10 +66,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefChecksum) do
|
|
70
66
|
end
|
71
67
|
|
72
68
|
context 'when definition has not the good type' do
|
73
|
-
it
|
74
|
-
expect(modifier.replace_reference('[define,req,REFERENCE]'))
|
75
|
-
.to(eq('[define,req,REFERENCE]'))
|
76
|
-
end
|
69
|
+
it { expect(modifier.replace_reference('[define,req,REFERENCE]')).to(eq('[define,req,REFERENCE]')) }
|
77
70
|
end
|
78
71
|
|
79
72
|
context 'when definition has the good type' do
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# Copyright (c) 2020 Jerome Arbez-Gindre
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require('defmastership/modifier/update_def')
|
5
|
+
|
4
6
|
module Defmastership
|
5
7
|
module Modifier
|
6
8
|
# Just a class for tests
|
@@ -60,19 +62,10 @@ RSpec.describe(Defmastership::Modifier::UpdateDef) do
|
|
60
62
|
)
|
61
63
|
end
|
62
64
|
|
63
|
-
it
|
64
|
-
expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc'))
|
65
|
-
.to(include('REFERENCE_something_'))
|
66
|
-
end
|
65
|
+
it { expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE_something_')) }
|
67
66
|
end
|
68
67
|
|
69
68
|
describe '#replace_reference' do
|
70
|
-
subject(:modifier) do
|
71
|
-
Defmastership::Modifier::ConcreteRef.new(
|
72
|
-
def_type: 'requirement'
|
73
|
-
)
|
74
|
-
end
|
75
|
-
|
76
69
|
let(:definition) { instance_double(Defmastership::Definition, 'definition') }
|
77
70
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
78
71
|
let(:definitions) { { 'REFERENCE' => definition } }
|
@@ -81,21 +74,45 @@ RSpec.describe(Defmastership::Modifier::UpdateDef) do
|
|
81
74
|
allow(File).to(receive(:rename))
|
82
75
|
end
|
83
76
|
|
84
|
-
context 'when
|
77
|
+
context 'when def_type is not specified' do
|
78
|
+
subject(:modifier) do
|
79
|
+
Defmastership::Modifier::ConcreteRef.new(def_type: '')
|
80
|
+
end
|
81
|
+
|
82
|
+
before do
|
83
|
+
allow(Defmastership::Document).to(receive(:new).and_return(document))
|
84
|
+
allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
|
85
|
+
allow(definition).to(receive(:sha256_short).and_return('~abcd1234'))
|
86
|
+
end
|
87
|
+
|
85
88
|
it do
|
86
|
-
expect(modifier.replace_reference('[define
|
87
|
-
.to(eq('[define
|
89
|
+
expect(modifier.replace_reference('[define,requirement,REFERENCE(abcd)]'))
|
90
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
88
91
|
end
|
89
92
|
end
|
90
93
|
|
91
|
-
context 'when
|
94
|
+
context 'when def_type is \'all\'' do
|
95
|
+
subject(:modifier) do
|
96
|
+
Defmastership::Modifier::ConcreteRef.new(def_type: 'all')
|
97
|
+
end
|
98
|
+
|
99
|
+
before do
|
100
|
+
allow(Defmastership::Document).to(receive(:new).and_return(document))
|
101
|
+
allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
|
102
|
+
allow(definition).to(receive(:sha256_short).and_return('~abcd1234'))
|
103
|
+
end
|
104
|
+
|
92
105
|
it do
|
93
|
-
expect(modifier.replace_reference('[define,
|
94
|
-
.to(eq('[define,
|
106
|
+
expect(modifier.replace_reference('[define,requirement,REFERENCE(abcd)]'))
|
107
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
95
108
|
end
|
96
109
|
end
|
97
110
|
|
98
|
-
context 'when
|
111
|
+
context 'when def_type is a list' do
|
112
|
+
subject(:modifier) do
|
113
|
+
Defmastership::Modifier::ConcreteRef.new(def_type: %w[requirement pouet])
|
114
|
+
end
|
115
|
+
|
99
116
|
before do
|
100
117
|
allow(Defmastership::Document).to(receive(:new).and_return(document))
|
101
118
|
allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
|
@@ -108,13 +125,51 @@ RSpec.describe(Defmastership::Modifier::UpdateDef) do
|
|
108
125
|
end
|
109
126
|
|
110
127
|
it do
|
111
|
-
expect(modifier.replace_reference('[define,
|
112
|
-
.to(eq('[define,
|
128
|
+
expect(modifier.replace_reference('[define,pouet,REFERENCE(abcd)]'))
|
129
|
+
.to(eq('[define,pouet,REFERENCE_something_abcd]'))
|
113
130
|
end
|
114
131
|
|
115
132
|
it do
|
116
|
-
expect(modifier.replace_reference('
|
117
|
-
.to(eq('
|
133
|
+
expect(modifier.replace_reference('[define,whatever,REFERENCE(abcd)]'))
|
134
|
+
.to(eq('[define,whatever,REFERENCE(abcd)]'))
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'when modifier is specific' do
|
139
|
+
subject(:modifier) { Defmastership::Modifier::ConcreteRef.new(def_type: 'requirement') }
|
140
|
+
|
141
|
+
context 'when line do not match' do
|
142
|
+
it do
|
143
|
+
expect(modifier.replace_reference('[define---,req,REFERENCE(abcd)]'))
|
144
|
+
.to(eq('[define---,req,REFERENCE(abcd)]'))
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context 'when definition has not the good type' do
|
149
|
+
it { expect(modifier.replace_reference('[define,req,REFERENCE(abcd)]')).to(eq('[define,req,REFERENCE(abcd)]')) }
|
150
|
+
end
|
151
|
+
|
152
|
+
context 'when definition has the good type' do
|
153
|
+
before do
|
154
|
+
allow(Defmastership::Document).to(receive(:new).and_return(document))
|
155
|
+
allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
|
156
|
+
allow(definition).to(receive(:sha256_short).and_return('~abcd1234'))
|
157
|
+
end
|
158
|
+
|
159
|
+
it do
|
160
|
+
expect(modifier.replace_reference('[define,requirement,REFERENCE(abcd)]'))
|
161
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
162
|
+
end
|
163
|
+
|
164
|
+
it do
|
165
|
+
expect(modifier.replace_reference('[define,requirement,REFERENCE(abcd~bad)]'))
|
166
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
167
|
+
end
|
168
|
+
|
169
|
+
it do
|
170
|
+
expect(modifier.replace_reference('// [define,requirement,REFERENCE(abcd~bad)]'))
|
171
|
+
.to(eq('// [define,requirement,REFERENCE(abcd~bad)]'))
|
172
|
+
end
|
118
173
|
end
|
119
174
|
end
|
120
175
|
end
|