defmastership 1.3.2 → 1.3.4
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/Gemfile +9 -9
- data/Guardfile +2 -5
- data/Rakefile +1 -1
- data/config/mutant.yml +2 -1
- data/config/rubocop.yml +20 -8
- data/defmastership.gemspec +6 -15
- data/features/changeref.feature +108 -0
- data/features/definition_checksum.feature +118 -0
- data/features/definition_version.feature +168 -0
- data/features/export.feature +122 -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 +55 -0
- data/features/step_definitions/git_steps.rb +3 -0
- data/lib/defmastership/app.rb +35 -8
- 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/export/csv/formatter.rb +8 -60
- data/lib/defmastership/export/formatter.rb +88 -0
- data/lib/defmastership/export/json/formatter.rb +34 -0
- data/lib/defmastership/export/xlsx/formatter.rb +87 -0
- data/lib/defmastership/export/yaml/formatter.rb +34 -0
- data/lib/defmastership/modifier/change_ref.rb +24 -39
- data/lib/defmastership/modifier/factory.rb +5 -1
- data/lib/defmastership/modifier/modifier_common.rb +4 -4
- data/lib/defmastership/modifier/rename_included_files.rb +16 -5
- data/lib/defmastership/modifier/replacement_formatter.rb +37 -0
- data/lib/defmastership/modifier/update_def.rb +7 -2
- data/lib/defmastership/modifier/update_eref_checksum.rb +46 -0
- data/lib/defmastership/modifier/update_eref_common.rb +78 -0
- data/lib/defmastership/modifier/update_eref_version.rb +46 -0
- data/lib/defmastership/modifier/update_iref_checksum.rb +52 -0
- data/lib/defmastership/modifier/update_iref_common.rb +45 -0
- data/lib/defmastership/modifier/update_iref_version.rb +59 -0
- data/lib/defmastership/version.rb +1 -1
- data/spec/spec_helper.rb +11 -10
- data/spec/unit/defmastership/app_spec.rb +57 -20
- 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 +45 -231
- data/spec/unit/defmastership/export/formatter_spec.rb +97 -0
- data/spec/unit/defmastership/export/header_formatter_spec.rb +2 -6
- data/spec/unit/defmastership/export/json/formatter_spec.rb +85 -0
- data/spec/unit/defmastership/export/xlsx/formatter_spec.rb +82 -0
- data/spec/unit/defmastership/export/yaml/formatter_spec.rb +85 -0
- data/spec/unit/defmastership/hash_spec.rb +2 -0
- data/spec/unit/defmastership/modifier/change_ref_spec.rb +66 -97
- data/spec/unit/defmastership/modifier/factory_spec.rb +40 -17
- data/spec/unit/defmastership/modifier/modifier_common_spec.rb +7 -5
- data/spec/unit/defmastership/modifier/rename_included_files_spec.rb +105 -85
- data/spec/unit/defmastership/modifier/update_def_checksum_spec.rb +6 -13
- data/spec/unit/defmastership/modifier/update_def_spec.rb +79 -22
- data/spec/unit/defmastership/modifier/update_def_version_spec.rb +13 -37
- data/spec/unit/defmastership/modifier/update_eref_checksum_spec.rb +209 -0
- data/spec/unit/defmastership/modifier/update_eref_version_spec.rb +227 -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 +59 -6
|
@@ -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))
|
|
@@ -38,17 +33,14 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
|
38
33
|
context 'when the include statement do not match' do
|
|
39
34
|
before do
|
|
40
35
|
['[define,requirement,REFERENCE]', '--'].each do |line|
|
|
41
|
-
includeschanger.replace(line)
|
|
36
|
+
includeschanger.replace('', line)
|
|
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
|
-
includeschanger.replace('badinclude::orig[]')
|
|
43
|
+
includeschanger.replace('', 'badinclude::orig[]')
|
|
52
44
|
expect(includeschanger).to(have_attributes(changes: []))
|
|
53
45
|
end
|
|
54
46
|
end
|
|
@@ -56,51 +48,38 @@ RSpec.describe(Defmastership::Modifier::RenameIncludedFiles) do
|
|
|
56
48
|
context 'when the include is not in a definition' do
|
|
57
49
|
before do
|
|
58
50
|
['[define,requirement,REFERENCE]', '--', 'text', '--'].each do |line|
|
|
59
|
-
includeschanger.replace(line)
|
|
51
|
+
includeschanger.replace('', line)
|
|
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
|
-
includeschanger.replace('include::orig[]')
|
|
58
|
+
includeschanger.replace('', 'include::orig[]')
|
|
70
59
|
expect(includeschanger).to(have_attributes(changes: []))
|
|
71
60
|
end
|
|
72
61
|
end
|
|
73
62
|
|
|
74
63
|
context 'when the line is commented' do
|
|
75
64
|
before do
|
|
76
|
-
includeschanger.replace('[define,requirement,REFERENCE]')
|
|
77
|
-
includeschanger.replace('--')
|
|
65
|
+
includeschanger.replace('', '[define,requirement,REFERENCE]')
|
|
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
|
|
96
|
-
includeschanger.replace('[define,requirement,REFERENCE]')
|
|
97
|
-
includeschanger.replace('--')
|
|
78
|
+
includeschanger.replace('', '[define,requirement,REFERENCE]')
|
|
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,127 +90,168 @@ 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
|
|
122
|
-
includeschanger.replace('[define,requirement,REFERENCE]')
|
|
123
|
-
includeschanger.replace('--')
|
|
97
|
+
includeschanger.replace('sub/one_file.adoc', '[define,requirement,REFERENCE]')
|
|
98
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
124
99
|
end
|
|
125
100
|
|
|
126
101
|
it do
|
|
127
|
-
expect(includeschanger.replace("include::orig[]\n"))
|
|
102
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
128
103
|
.to(eq("include::dest[]\n"))
|
|
129
104
|
end
|
|
130
105
|
|
|
131
106
|
it do
|
|
132
|
-
includeschanger.replace("include::orig[]\n")
|
|
133
|
-
expect(File).to(have_received(:rename).with('orig', 'dest'))
|
|
107
|
+
includeschanger.replace('sub/one_file.adoc', "include::orig[]\n")
|
|
108
|
+
expect(File).to(have_received(:rename).with('sub/orig', 'sub/dest'))
|
|
134
109
|
end
|
|
135
110
|
|
|
136
111
|
it do
|
|
137
|
-
expect(includeschanger.replace("include::orig[leveloffset=offset,lines=ranges]\n"))
|
|
112
|
+
expect(includeschanger.replace('', "include::orig[leveloffset=offset,lines=ranges]\n"))
|
|
138
113
|
.to(eq("include::dest[leveloffset=offset,lines=ranges]\n"))
|
|
139
114
|
end
|
|
140
115
|
|
|
141
116
|
it do
|
|
142
|
-
includeschanger.replace("include::orig[leveloffset=offset,lines=ranges]\n")
|
|
143
|
-
expect(File).to(have_received(:rename).with('orig', 'dest'))
|
|
117
|
+
includeschanger.replace('sub/one_file.adoc', "include::orig[leveloffset=offset,lines=ranges]\n")
|
|
118
|
+
expect(File).to(have_received(:rename).with('sub/orig', 'sub/dest'))
|
|
144
119
|
end
|
|
145
120
|
|
|
146
121
|
it do
|
|
147
|
-
includeschanger.replace("include::orig[]\n")
|
|
148
|
-
expect(includeschanger).to(have_attributes(changes: [%w[orig dest]]))
|
|
122
|
+
includeschanger.replace('', "include::orig[]\n")
|
|
123
|
+
expect(includeschanger).to(have_attributes(changes: [%w[./orig ./dest]]))
|
|
149
124
|
end
|
|
150
125
|
|
|
151
126
|
it do
|
|
152
|
-
expect(includeschanger.replace("include::toto/orig[]\n"))
|
|
127
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::toto/orig[]\n"))
|
|
153
128
|
.to(eq("include::toto/dest[]\n"))
|
|
154
129
|
end
|
|
155
130
|
|
|
156
131
|
it do
|
|
157
|
-
includeschanger.replace("include::toto/orig[]\n")
|
|
158
|
-
expect(File).to(have_received(:rename).with('toto/orig', 'toto/dest'))
|
|
132
|
+
includeschanger.replace('sub/one_file.adoc', "include::toto/orig[]\n")
|
|
133
|
+
expect(File).to(have_received(:rename).with('sub/toto/orig', 'sub/toto/dest'))
|
|
159
134
|
end
|
|
160
135
|
|
|
161
136
|
it do
|
|
162
|
-
includeschanger.replace("include::toto/orig[]\n")
|
|
163
|
-
expect(includeschanger).to(have_attributes(changes: [%w[toto/orig toto/dest]]))
|
|
137
|
+
includeschanger.replace('sub/one_file.adoc', "include::toto/orig[]\n")
|
|
138
|
+
expect(includeschanger).to(have_attributes(changes: [%w[sub/toto/orig sub/toto/dest]]))
|
|
164
139
|
end
|
|
165
140
|
end
|
|
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
|
|
176
|
-
includeschanger.replace('[define,requirement,REF]')
|
|
148
|
+
includeschanger.replace('sub/one_file.adoc', '[define,requirement,REF]')
|
|
177
149
|
end
|
|
178
150
|
|
|
179
151
|
it do
|
|
180
|
-
expect(includeschanger.replace('include::any_path/one_file.extension[]'))
|
|
152
|
+
expect(includeschanger.replace('sub/one_file.adoc', 'include::any_path/one_file.extension[]'))
|
|
181
153
|
.to(eq('include::any_path/REF_one_file.extension[]'))
|
|
182
154
|
end
|
|
183
155
|
|
|
184
156
|
it do
|
|
185
|
-
includeschanger.replace('include::any_path/one_file.extension[]')
|
|
186
|
-
expect(File).to(
|
|
157
|
+
includeschanger.replace('sub/one_file.adoc', 'include::any_path/one_file.extension[]')
|
|
158
|
+
expect(File).to(
|
|
159
|
+
have_received(:rename).with('sub/any_path/one_file.extension', 'sub/any_path/REF_one_file.extension')
|
|
160
|
+
)
|
|
187
161
|
end
|
|
188
162
|
|
|
189
163
|
it do
|
|
190
|
-
changes = [%w[any_path/one_file.extension any_path/REF_one_file.extension]]
|
|
191
|
-
includeschanger.replace('include::any_path/one_file.extension[]')
|
|
164
|
+
changes = [%w[sub/any_path/one_file.extension sub/any_path/REF_one_file.extension]]
|
|
165
|
+
includeschanger.replace('sub/one_file.adoc', 'include::any_path/one_file.extension[]')
|
|
192
166
|
expect(includeschanger).to(have_attributes(changes: changes))
|
|
193
167
|
end
|
|
194
168
|
end
|
|
195
169
|
|
|
196
170
|
context 'when path with variable' do
|
|
197
|
-
subject(:includeschanger)
|
|
198
|
-
described_class.new(
|
|
199
|
-
from_regexp: 'orig',
|
|
200
|
-
to_template: 'dest'
|
|
201
|
-
)
|
|
202
|
-
end
|
|
171
|
+
subject(:includeschanger) { described_class.new(from_regexp: 'orig', to_template: 'dest') }
|
|
203
172
|
|
|
204
173
|
before do
|
|
205
|
-
includeschanger.replace(':any: one')
|
|
206
|
-
includeschanger.replace(':path: two')
|
|
207
|
-
includeschanger.replace(':var: three')
|
|
208
|
-
includeschanger.replace('[define,requirement,REFERENCE]')
|
|
209
|
-
includeschanger.replace('--')
|
|
174
|
+
includeschanger.replace('sub/one_file.adoc', ':any: one')
|
|
175
|
+
includeschanger.replace('sub/one_file.adoc', ':path: two')
|
|
176
|
+
includeschanger.replace('sub/one_file.adoc', ':var: three')
|
|
177
|
+
includeschanger.replace('sub/one_file.adoc', '[define,requirement,REFERENCE]')
|
|
178
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
210
179
|
end
|
|
211
180
|
|
|
212
181
|
it do
|
|
213
|
-
expect(includeschanger.replace('include::{any}/orig[]'))
|
|
214
|
-
.to(eq('include::{any}/dest[]'))
|
|
182
|
+
expect(includeschanger.replace('sub/one_file.adoc', 'include::{any}/orig[]')).to(eq('include::{any}/dest[]'))
|
|
215
183
|
end
|
|
216
184
|
|
|
217
185
|
it do
|
|
218
|
-
includeschanger.replace('include::{any}{var}/orig[]')
|
|
219
|
-
expect(File).to(have_received(:rename).with('onethree/orig', 'onethree/dest'))
|
|
186
|
+
includeschanger.replace('sub/one_file.adoc', 'include::{any}{var}/orig[]')
|
|
187
|
+
expect(File).to(have_received(:rename).with('sub/onethree/orig', 'sub/onethree/dest'))
|
|
220
188
|
end
|
|
221
189
|
|
|
222
190
|
it do
|
|
223
|
-
includeschanger.replace('include::{any}_{path}/orig[]')
|
|
224
|
-
expect(File).to(have_received(:rename).with('one_two/orig', 'one_two/dest'))
|
|
191
|
+
includeschanger.replace('sub/one_file.adoc', 'include::{any}_{path}/orig[]')
|
|
192
|
+
expect(File).to(have_received(:rename).with('sub/one_two/orig', 'sub/one_two/dest'))
|
|
225
193
|
end
|
|
226
194
|
|
|
227
195
|
it do
|
|
228
|
-
expect { includeschanger.replace('include::{bad_variable}/orig[]') }
|
|
196
|
+
expect { includeschanger.replace('sub/one_file.adoc', 'include::{bad_variable}/orig[]') }
|
|
229
197
|
.to(raise_error(KeyError, 'key not found: :bad_variable'))
|
|
230
198
|
end
|
|
231
199
|
|
|
232
200
|
it do
|
|
233
|
-
includeschanger.replace('include::{any}_{path}/orig[]')
|
|
234
|
-
expect(includeschanger).to(have_attributes(changes: [%w[one_two/orig one_two/dest]]))
|
|
201
|
+
includeschanger.replace('sub/one_file.adoc', 'include::{any}_{path}/orig[]')
|
|
202
|
+
expect(includeschanger).to(have_attributes(changes: [%w[sub/one_two/orig sub/one_two/dest]]))
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
context 'when definition\'s type does not fit a value' do
|
|
207
|
+
subject(:includeschanger) do
|
|
208
|
+
described_class.new(def_type: 'requirement', from_regexp: 'orig', to_template: 'dest')
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it do
|
|
212
|
+
includeschanger.replace('sub/one_file.adoc', '[define,whatever,REFERENCE]')
|
|
213
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
214
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
215
|
+
.to(eq("include::orig[]\n"))
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it do
|
|
219
|
+
includeschanger.replace('sub/one_file.adoc', '[define,requirement,REFERENCE]')
|
|
220
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
221
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
222
|
+
.to(eq("include::dest[]\n"))
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
context 'when definition\'s type is not included in a list' do
|
|
227
|
+
subject(:includeschanger) do
|
|
228
|
+
described_class.new(def_type: %w[requirement pouet], from_regexp: 'orig', to_template: 'dest')
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
it do
|
|
232
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
233
|
+
.to(eq("include::orig[]\n"))
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
it do
|
|
237
|
+
includeschanger.replace('sub/one_file.adoc', '[define,whatever,REFERENCE]')
|
|
238
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
239
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
240
|
+
.to(eq("include::orig[]\n"))
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it do
|
|
244
|
+
includeschanger.replace('sub/one_file.adoc', '[define,requirement,REFERENCE]')
|
|
245
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
246
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
247
|
+
.to(eq("include::dest[]\n"))
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
it do
|
|
251
|
+
includeschanger.replace('sub/one_file.adoc', '[define,pouet,REFERENCE]')
|
|
252
|
+
includeschanger.replace('sub/one_file.adoc', '--')
|
|
253
|
+
expect(includeschanger.replace('sub/one_file.adoc', "include::orig[]\n"))
|
|
254
|
+
.to(eq("include::dest[]\n"))
|
|
235
255
|
end
|
|
236
256
|
end
|
|
237
257
|
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
|
|
@@ -84,22 +77,22 @@ RSpec.describe(Defmastership::Modifier::UpdateDefChecksum) do
|
|
|
84
77
|
end
|
|
85
78
|
|
|
86
79
|
it do
|
|
87
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE]'))
|
|
80
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE]'))
|
|
88
81
|
.to(eq('[define,requirement,REFERENCE(~abcd1234)]'))
|
|
89
82
|
end
|
|
90
83
|
|
|
91
84
|
it do
|
|
92
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(~bad)]'))
|
|
85
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(~bad)]'))
|
|
93
86
|
.to(eq('[define,requirement,REFERENCE(~abcd1234)]'))
|
|
94
87
|
end
|
|
95
88
|
|
|
96
89
|
it do
|
|
97
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(toto~bad)]'))
|
|
90
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(toto~bad)]'))
|
|
98
91
|
.to(eq('[define,requirement,REFERENCE(toto~abcd1234)]'))
|
|
99
92
|
end
|
|
100
93
|
|
|
101
94
|
it do
|
|
102
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(toto)]'))
|
|
95
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(toto)]'))
|
|
103
96
|
.to(eq('[define,requirement,REFERENCE(toto~abcd1234)]'))
|
|
104
97
|
end
|
|
105
98
|
end
|
|
@@ -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))
|
|
@@ -103,18 +120,58 @@ RSpec.describe(Defmastership::Modifier::UpdateDef) do
|
|
|
103
120
|
end
|
|
104
121
|
|
|
105
122
|
it do
|
|
106
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(abcd)]'))
|
|
123
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(abcd)]'))
|
|
107
124
|
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
|
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 do
|
|
150
|
+
expect(modifier.replace_reference('', '[define,req,REFERENCE(abcd)]')).to(eq('[define,req,REFERENCE(abcd)]'))
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
context 'when definition has the good type' do
|
|
155
|
+
before do
|
|
156
|
+
allow(Defmastership::Document).to(receive(:new).and_return(document))
|
|
157
|
+
allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
|
|
158
|
+
allow(definition).to(receive(:sha256_short).and_return('~abcd1234'))
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it do
|
|
162
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(abcd)]'))
|
|
163
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it do
|
|
167
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(abcd~bad)]'))
|
|
168
|
+
.to(eq('[define,requirement,REFERENCE_something_abcd]'))
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it do
|
|
172
|
+
expect(modifier.replace_reference('', '// [define,requirement,REFERENCE(abcd~bad)]'))
|
|
173
|
+
.to(eq('// [define,requirement,REFERENCE(abcd~bad)]'))
|
|
174
|
+
end
|
|
118
175
|
end
|
|
119
176
|
end
|
|
120
177
|
end
|
|
@@ -20,13 +20,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
20
20
|
|
|
21
21
|
describe '#do_modifications' do
|
|
22
22
|
context 'when only one ref document' do
|
|
23
|
-
subject(:modifier)
|
|
24
|
-
described_class.new(
|
|
25
|
-
ref_document: 'ref_doc.adoc',
|
|
26
|
-
def_type: 'req',
|
|
27
|
-
first_version: 'a'
|
|
28
|
-
)
|
|
29
|
-
end
|
|
23
|
+
subject(:modifier) { described_class.new(ref_document: 'ref_doc.adoc', def_type: 'req', first_version: 'a') }
|
|
30
24
|
|
|
31
25
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
|
32
26
|
let(:ref_document) { instance_double(Defmastership::Document, 'ref_document') }
|
|
@@ -106,13 +100,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
106
100
|
end
|
|
107
101
|
|
|
108
102
|
context 'when ref_tag is provided' do
|
|
109
|
-
subject(:modifier)
|
|
110
|
-
described_class.new(
|
|
111
|
-
ref_tag: 'THE_TAG',
|
|
112
|
-
def_type: 'req',
|
|
113
|
-
first_version: 'a'
|
|
114
|
-
)
|
|
115
|
-
end
|
|
103
|
+
subject(:modifier) { described_class.new(ref_tag: 'THE_TAG', def_type: 'req', first_version: 'a') }
|
|
116
104
|
|
|
117
105
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
|
118
106
|
let(:ref_document) { instance_double(Defmastership::Document, 'ref_document') }
|
|
@@ -156,12 +144,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
156
144
|
|
|
157
145
|
context 'when ref_tag and ref_repo is provided' do
|
|
158
146
|
subject(:modifier) do
|
|
159
|
-
described_class.new(
|
|
160
|
-
ref_tag: 'THE_TAG',
|
|
161
|
-
ref_repo: 'not dot',
|
|
162
|
-
def_type: 'req',
|
|
163
|
-
first_version: 'a'
|
|
164
|
-
)
|
|
147
|
+
described_class.new(ref_tag: 'THE_TAG', ref_repo: 'not dot', def_type: 'req', first_version: 'a')
|
|
165
148
|
end
|
|
166
149
|
|
|
167
150
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
|
@@ -254,12 +237,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
254
237
|
end
|
|
255
238
|
|
|
256
239
|
describe '#replace_reference' do
|
|
257
|
-
subject(:modifier)
|
|
258
|
-
described_class.new(
|
|
259
|
-
def_type: 'requirement',
|
|
260
|
-
first_version: 'a'
|
|
261
|
-
)
|
|
262
|
-
end
|
|
240
|
+
subject(:modifier) { described_class.new(def_type: 'requirement', first_version: 'a') }
|
|
263
241
|
|
|
264
242
|
let(:document) { instance_double(Defmastership::Document, 'document') }
|
|
265
243
|
let(:ref_document) { instance_double(Defmastership::Document, 'ref_document') }
|
|
@@ -272,10 +250,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
272
250
|
end
|
|
273
251
|
|
|
274
252
|
context 'when definition has not the good type' do
|
|
275
|
-
it
|
|
276
|
-
expect(modifier.replace_reference('[define,req,REFERENCE]'))
|
|
277
|
-
.to(eq('[define,req,REFERENCE]'))
|
|
278
|
-
end
|
|
253
|
+
it { expect(modifier.replace_reference('', '[define,req,REFERENCE]')).to(eq('[define,req,REFERENCE]')) }
|
|
279
254
|
end
|
|
280
255
|
|
|
281
256
|
context 'when definition has the good type' do
|
|
@@ -292,19 +267,20 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
292
267
|
|
|
293
268
|
it do
|
|
294
269
|
allow(ref_definition).to(receive(:explicit_version).and_return(nil))
|
|
295
|
-
expect(
|
|
296
|
-
.
|
|
270
|
+
expect(
|
|
271
|
+
modifier.replace_reference('', '[define,requirement,REFERENCE]')
|
|
272
|
+
).to(eq('[define,requirement,REFERENCE]'))
|
|
297
273
|
end
|
|
298
274
|
|
|
299
275
|
it do
|
|
300
276
|
allow(ref_definition).to(receive(:explicit_version).and_return('c'))
|
|
301
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE]'))
|
|
277
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE]'))
|
|
302
278
|
.to(eq('[define,requirement,REFERENCE(c)]'))
|
|
303
279
|
end
|
|
304
280
|
|
|
305
281
|
it do
|
|
306
282
|
allow(ref_definition).to(receive(:explicit_version).and_return('c'))
|
|
307
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(tyty~1234)]'))
|
|
283
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(tyty~1234)]'))
|
|
308
284
|
.to(eq('[define,requirement,REFERENCE(c~1234)]'))
|
|
309
285
|
end
|
|
310
286
|
end
|
|
@@ -325,7 +301,7 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
325
301
|
].each do |ref, from, to|
|
|
326
302
|
it do
|
|
327
303
|
allow(ref_definition).to(receive(:explicit_version).and_return(ref))
|
|
328
|
-
expect(modifier.replace_reference("[define,requirement,REFERENCE#{from}]"))
|
|
304
|
+
expect(modifier.replace_reference('', "[define,requirement,REFERENCE#{from}]"))
|
|
329
305
|
.to(eq("[define,requirement,REFERENCE#{to}]"))
|
|
330
306
|
end
|
|
331
307
|
end
|
|
@@ -337,12 +313,12 @@ RSpec.describe(Defmastership::Modifier::UpdateDefVersion) do
|
|
|
337
313
|
end
|
|
338
314
|
|
|
339
315
|
it do
|
|
340
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(whatever)]'))
|
|
316
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(whatever)]'))
|
|
341
317
|
.to(eq('[define,requirement,REFERENCE]'))
|
|
342
318
|
end
|
|
343
319
|
|
|
344
320
|
it do
|
|
345
|
-
expect(modifier.replace_reference('[define,requirement,REFERENCE(~1234)]'))
|
|
321
|
+
expect(modifier.replace_reference('', '[define,requirement,REFERENCE(~1234)]'))
|
|
346
322
|
.to(eq('[define,requirement,REFERENCE(~1234)]'))
|
|
347
323
|
end
|
|
348
324
|
end
|