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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Copyright (c) 2020 Jerome Arbez-Gindre
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require('defmastership/document')
|
|
5
|
+
require('defmastership/export/yaml/formatter')
|
|
6
|
+
|
|
7
|
+
RSpec.describe(Defmastership::Export::YAML::Formatter) do
|
|
8
|
+
subject(:formatter) { described_class.new(document) }
|
|
9
|
+
|
|
10
|
+
let(:document) { instance_double(Defmastership::Document, 'document') }
|
|
11
|
+
|
|
12
|
+
describe '.new' do
|
|
13
|
+
it { is_expected.not_to(be_nil) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#export_to' do
|
|
17
|
+
let(:header) { instance_double(Defmastership::Export::HeaderFormatter, 'header') }
|
|
18
|
+
let(:bodies) do
|
|
19
|
+
[
|
|
20
|
+
instance_double(Defmastership::Export::BodyFormatter, 'bodies[0]'),
|
|
21
|
+
instance_double(Defmastership::Export::BodyFormatter, 'bodies[1]')
|
|
22
|
+
]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
let(:yaml) { instance_double(YAML, 'yaml') }
|
|
26
|
+
let(:expected_hash_array) do
|
|
27
|
+
[
|
|
28
|
+
{
|
|
29
|
+
'checksum header': 'checksum def0 body',
|
|
30
|
+
'reference header': 'reference def0 body',
|
|
31
|
+
'type header': 'type def0 body',
|
|
32
|
+
'value header': 'value def0 body'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
'checksum header': 'checksum def1 body',
|
|
36
|
+
'reference header': 'reference def1 body',
|
|
37
|
+
'type header': 'type def1 body',
|
|
38
|
+
'value header': 'value def1 body'
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
before do
|
|
44
|
+
allow(Defmastership::Export::HeaderFormatter).to(receive(:new).with(document).and_return(header))
|
|
45
|
+
bodies.each_with_index do |body, index|
|
|
46
|
+
allow(Defmastership::Export::BodyFormatter).to(
|
|
47
|
+
receive(:new).with(
|
|
48
|
+
document,
|
|
49
|
+
:"def#{index}"
|
|
50
|
+
).and_return(body)
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
allow(document).to(receive(:definitions).and_return(%i[def0 def1]))
|
|
54
|
+
allow(document).to(receive(:summaries?).with(no_args).and_return(false))
|
|
55
|
+
allow(document).to(receive(:wrong_explicit_checksum?).with(no_args).and_return(false))
|
|
56
|
+
allow(document).to(receive(:explicit_version?).with(no_args).and_return(false))
|
|
57
|
+
allow(document).to(receive(:labels).with(no_args).and_return([]))
|
|
58
|
+
allow(document).to(receive(:eref).with(no_args).and_return([]))
|
|
59
|
+
allow(document).to(receive(:iref).with(no_args).and_return(false))
|
|
60
|
+
allow(document).to(receive(:attributes).with(no_args).and_return([]))
|
|
61
|
+
|
|
62
|
+
COLUMN_METHODS.each do |method|
|
|
63
|
+
allow(header).to(receive(method).with(no_args).and_return(["#{method} header"]))
|
|
64
|
+
bodies.each_with_index do |body, index|
|
|
65
|
+
allow(body).to(receive(method).with(no_args).and_return(["#{method} def#{index} body"]))
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
allow(YAML).to(receive(:dump)).and_return('the generated yaml')
|
|
70
|
+
allow(File).to(receive(:write).with('filename', 'the generated yaml'))
|
|
71
|
+
formatter.export_to('filename')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
COLUMN_METHODS.each do |method|
|
|
75
|
+
it { expect(header).to(have_received(method).with(no_args)) }
|
|
76
|
+
|
|
77
|
+
2.times do |index|
|
|
78
|
+
it { expect(bodies[index]).to(have_received(method).with(no_args)) }
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it { expect(YAML).to(have_received(:dump).with(expected_hash_array)) }
|
|
83
|
+
it { expect(File).to(have_received(:write).with('filename', 'the generated yaml')) }
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -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,71 +22,48 @@ 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
|
|
50
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP(a~12345678)]'))
|
|
35
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TEMP(a~12345678)]'))
|
|
51
36
|
.to(eq('[define, whatever, TUTU(a~12345678)]'))
|
|
52
37
|
end
|
|
53
38
|
|
|
54
39
|
it do
|
|
55
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP(~12345678)]'))
|
|
40
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TEMP(~12345678)]'))
|
|
56
41
|
.to(eq('[define, whatever, TUTU(~12345678)]'))
|
|
57
42
|
end
|
|
58
43
|
|
|
59
44
|
it do
|
|
60
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP(a)]'))
|
|
61
|
-
.to(eq('[define, whatever, TUTU(a)]'))
|
|
45
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TEMP(a)]')).to(eq('[define, whatever, TUTU(a)]'))
|
|
62
46
|
end
|
|
63
47
|
end
|
|
64
48
|
|
|
65
49
|
context 'when no valid definition' do
|
|
66
50
|
it do
|
|
67
|
-
expect(refchanger.replace_refdef('[pouet, whatever, TEMP]'))
|
|
68
|
-
.to(eq('[pouet, whatever, TEMP]'))
|
|
51
|
+
expect(refchanger.replace_refdef('', '[pouet, whatever, TEMP]')).to(eq('[pouet, whatever, TEMP]'))
|
|
69
52
|
end
|
|
70
53
|
end
|
|
71
54
|
end
|
|
72
55
|
|
|
73
56
|
context 'when template is variable' do
|
|
74
57
|
subject(:refchanger) do
|
|
75
|
-
described_class.new(
|
|
76
|
-
from_regexp: 'TEMP',
|
|
77
|
-
to_template: 'TOTO-%<next_ref>04d',
|
|
78
|
-
next_ref: 124
|
|
79
|
-
)
|
|
58
|
+
described_class.new(from_regexp: 'TEMP', to_template: 'TOTO-%<next_ref>04d', next_ref: 124)
|
|
80
59
|
end
|
|
81
60
|
|
|
82
61
|
it do
|
|
83
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
|
|
84
|
-
.to(eq('[define, whatever, TOTO-0124]'))
|
|
62
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TEMP]')).to(eq('[define, whatever, TOTO-0124]'))
|
|
85
63
|
end
|
|
86
64
|
|
|
87
65
|
it do
|
|
88
|
-
refchanger.replace_refdef('[define, whatever, TEMP]')
|
|
66
|
+
refchanger.replace_refdef('', '[define, whatever, TEMP]')
|
|
89
67
|
expect(refchanger).to(have_attributes(next_ref: 125))
|
|
90
68
|
end
|
|
91
69
|
end
|
|
@@ -100,59 +78,58 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
|
100
78
|
end
|
|
101
79
|
|
|
102
80
|
it do
|
|
103
|
-
expect(refchanger.replace_refdef('[define, whatever, TOTO-TEMP]'))
|
|
104
|
-
.to(eq('[define, whatever, TOTO-0132]'))
|
|
81
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP]')).to(eq('[define, whatever, TOTO-0132]'))
|
|
105
82
|
end
|
|
106
83
|
|
|
107
84
|
it do
|
|
108
|
-
refchanger.replace_refdef('[define, whatever, TOTO-TEMP]')
|
|
109
|
-
expect(refchanger.replace_refdef('[define, whatever, TITI-TEMP]'))
|
|
110
|
-
.to(eq('[define, whatever, TITI-0133]'))
|
|
85
|
+
refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP]')
|
|
86
|
+
expect(refchanger.replace_refdef('', '[define, whatever, TITI-TEMP]')).to(eq('[define, whatever, TITI-0133]'))
|
|
111
87
|
end
|
|
112
88
|
|
|
113
89
|
it do
|
|
114
|
-
refchanger.replace_refdef('[define, whatever, TOTO-TEMP1]')
|
|
115
|
-
refchanger.replace_refdef('[define, whatever, TITI-TEMP2]')
|
|
90
|
+
refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP1]')
|
|
91
|
+
refchanger.replace_refdef('', '[define, whatever, TITI-TEMP2]')
|
|
116
92
|
expect(refchanger).to(have_attributes(changes: [%w[TOTO-TEMP1 TOTO-0132], %w[TITI-TEMP2 TITI-0133]]))
|
|
117
93
|
end
|
|
118
94
|
end
|
|
119
95
|
|
|
120
96
|
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
|
|
97
|
+
subject(:refchanger) { described_class.new(from_regexp: 'TEMP', to_template: 'TUTU') }
|
|
127
98
|
|
|
128
99
|
before do
|
|
129
|
-
refchanger.replace_refdef('....')
|
|
100
|
+
refchanger.replace_refdef('', '....')
|
|
130
101
|
end
|
|
131
102
|
|
|
132
|
-
it
|
|
133
|
-
expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
|
|
134
|
-
.to(eq('[define, whatever, TEMP]'))
|
|
135
|
-
end
|
|
103
|
+
it { expect(refchanger.replace_refdef('', '[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
|
136
104
|
end
|
|
137
105
|
|
|
138
|
-
context 'when
|
|
106
|
+
context 'when definition is after literal block' do
|
|
139
107
|
subject(:refchanger) do
|
|
140
|
-
described_class.new(
|
|
141
|
-
from_regexp: 'TEMP',
|
|
142
|
-
to_template: 'TUTU'
|
|
143
|
-
)
|
|
108
|
+
described_class.new(from_regexp: 'TEMP', to_template: 'TUTU')
|
|
144
109
|
end
|
|
145
110
|
|
|
146
111
|
before do
|
|
147
|
-
refchanger.replace_refdef("....\n")
|
|
148
|
-
refchanger.replace_refdef('[define, whatever, TEMP]')
|
|
149
|
-
refchanger.replace_refdef("....\n")
|
|
112
|
+
refchanger.replace_refdef('', "....\n")
|
|
113
|
+
refchanger.replace_refdef('', '[define, whatever, TEMP]')
|
|
114
|
+
refchanger.replace_refdef('', "....\n")
|
|
150
115
|
end
|
|
151
116
|
|
|
152
|
-
it
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
117
|
+
it { expect(refchanger.replace_refdef('', '[define, whatever, TEMP]')).to(eq('[define, whatever, TUTU]')) }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context 'when definition do no fit with a definition\'s type value' do
|
|
121
|
+
subject(:refchanger) { described_class.new(def_type: 'req', from_regexp: 'TEMP', to_template: 'TUTU') }
|
|
122
|
+
|
|
123
|
+
it { expect(refchanger.replace_refdef('', '[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
|
124
|
+
it { expect(refchanger.replace_refdef('', '[define, req, TEMP]')).to(eq('[define, req, TUTU]')) }
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
context 'when definition do no fit with a definition\'s type list' do
|
|
128
|
+
subject(:refchanger) { described_class.new(def_type: %w[req pouet], from_regexp: 'TEMP', to_template: 'TUTU') }
|
|
129
|
+
|
|
130
|
+
it { expect(refchanger.replace_refdef('', '[define, whatever, TEMP]')).to(eq('[define, whatever, TEMP]')) }
|
|
131
|
+
it { expect(refchanger.replace_refdef('', '[define, req, TEMP]')).to(eq('[define, req, TUTU]')) }
|
|
132
|
+
it { expect(refchanger.replace_refdef('', '[define, pouet, TEMP]')).to(eq('[define, pouet, TUTU]')) }
|
|
156
133
|
end
|
|
157
134
|
end
|
|
158
135
|
|
|
@@ -166,33 +143,22 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
|
166
143
|
end
|
|
167
144
|
|
|
168
145
|
before do
|
|
169
|
-
refchanger.replace_refdef('[define, whatever, TOTO-TEMP123]')
|
|
170
|
-
refchanger.replace_refdef('[define, whatever, TITI-TEMP421]')
|
|
146
|
+
refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP123]')
|
|
147
|
+
refchanger.replace_refdef('', '[define, whatever, TITI-TEMP421]')
|
|
171
148
|
end
|
|
172
149
|
|
|
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
|
|
150
|
+
it { expect(refchanger.replace_irefs('', 'defs:iref[TOTO-TEMP1234]')).to(eq('defs:iref[TOTO-TEMP1234]')) }
|
|
151
|
+
it { expect(refchanger.replace_irefs('', 'defs:iref[TOTO-TEMP123]')).to(eq('defs:iref[TOTO-0132]')) }
|
|
182
152
|
|
|
183
153
|
it do
|
|
184
154
|
expect(
|
|
185
|
-
refchanger.replace_irefs(
|
|
186
|
-
'defs:iref[TOTO-TEMP123] defs:iref[TITI-TEMP421] bla'
|
|
187
|
-
)
|
|
155
|
+
refchanger.replace_irefs('', 'defs:iref[TOTO-TEMP123] defs:iref[TITI-TEMP421] bla')
|
|
188
156
|
).to(eq('defs:iref[TOTO-0132] defs:iref[TITI-0133] bla'))
|
|
189
157
|
end
|
|
190
158
|
|
|
191
159
|
it do
|
|
192
160
|
expect(
|
|
193
|
-
refchanger.replace_irefs(
|
|
194
|
-
'defs:iref[TOTO-TEMP123] defs:iref[TOTO-TEMP123] bla'
|
|
195
|
-
)
|
|
161
|
+
refchanger.replace_irefs('', 'defs:iref[TOTO-TEMP123] defs:iref[TOTO-TEMP123] bla')
|
|
196
162
|
).to(eq('defs:iref[TOTO-0132] defs:iref[TOTO-0132] bla'))
|
|
197
163
|
end
|
|
198
164
|
end
|
|
@@ -207,12 +173,12 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
|
207
173
|
end
|
|
208
174
|
|
|
209
175
|
before do
|
|
210
|
-
refchanger.replace_refdef('[define, whatever, TOTO-TEMP123]')
|
|
211
|
-
refchanger.replace_refdef('[define, whatever, TITI-TEMP421]')
|
|
176
|
+
refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP123]')
|
|
177
|
+
refchanger.replace_refdef('', '[define, whatever, TITI-TEMP421]')
|
|
212
178
|
end
|
|
213
179
|
|
|
214
180
|
it do
|
|
215
|
-
expect(refchanger.replace_irefs('include::target[tags=TOTO-TEMP1234]'))
|
|
181
|
+
expect(refchanger.replace_irefs('', 'include::target[tags=TOTO-TEMP1234]'))
|
|
216
182
|
.to(eq('include::target[tags=TOTO-TEMP1234]'))
|
|
217
183
|
end
|
|
218
184
|
|
|
@@ -225,8 +191,9 @@ 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(
|
|
229
|
-
.
|
|
194
|
+
expect(
|
|
195
|
+
refchanger.replace_include_tags('', "include::path/target[#{from}]")
|
|
196
|
+
).to(eq("include::path/target[#{to}]"))
|
|
230
197
|
end
|
|
231
198
|
end
|
|
232
199
|
|
|
@@ -236,7 +203,7 @@ RSpec.describe(Defmastership::Modifier::ChangeRef) do
|
|
|
236
203
|
'include:target[tag=TITI-TEMP421]',
|
|
237
204
|
'# include::target[tag=TITI-TEMP421]'
|
|
238
205
|
].each do |unchanged|
|
|
239
|
-
it { expect(refchanger.replace_include_tags(unchanged)).to(eq(unchanged)) }
|
|
206
|
+
it { expect(refchanger.replace_include_tags('', unchanged)).to(eq(unchanged)) }
|
|
240
207
|
end
|
|
241
208
|
end
|
|
242
209
|
|
|
@@ -282,30 +249,32 @@ MIF
|
|
|
282
249
|
end
|
|
283
250
|
|
|
284
251
|
before do
|
|
285
|
-
refchanger.replace_refdef('[define, whatever, TOTO-TEMP123]')
|
|
286
|
-
refchanger.replace_refdef('[define, whatever, TITI-TEMP421]')
|
|
252
|
+
refchanger.replace_refdef('', '[define, whatever, TOTO-TEMP123]')
|
|
253
|
+
refchanger.replace_refdef('', '[define, whatever, TITI-TEMP421]')
|
|
287
254
|
|
|
288
|
-
allow(File).to(receive(:readlines)).with('target').and_return(['
|
|
289
|
-
allow(File).to(receive(:readlines)).with('path/target').and_return(original_included_file.split)
|
|
255
|
+
allow(File).to(receive(:readlines)).with('sub/target').and_return(['whatever'])
|
|
256
|
+
allow(File).to(receive(:readlines)).with('sub/path/target').and_return(original_included_file.split)
|
|
257
|
+
allow(File).to(receive(:readlines)).with('./path/target').and_return(['whatever'])
|
|
258
|
+
allow(File).to(receive(:readlines)).with('./target').and_return(['whatever'])
|
|
290
259
|
|
|
291
260
|
allow(File).to(receive(:writelines))
|
|
292
261
|
|
|
293
|
-
refchanger.replace_tags_in_included_files('include::path/target[]')
|
|
294
|
-
refchanger.replace_tags_in_included_files('includ::otherpath/othertarget[]')
|
|
262
|
+
refchanger.replace_tags_in_included_files('sub/one_file.adoc', 'include::path/target[]')
|
|
263
|
+
refchanger.replace_tags_in_included_files('', 'includ::otherpath/othertarget[]')
|
|
295
264
|
end
|
|
296
265
|
|
|
297
|
-
it { expect(File).to(have_received(:readlines).with('path/target')) }
|
|
266
|
+
it { expect(File).to(have_received(:readlines).with('sub/path/target')) }
|
|
298
267
|
|
|
299
268
|
it do
|
|
300
|
-
expect(File).to(
|
|
301
|
-
have_received(:writelines).with('path/target', mofified_included_file.split)
|
|
302
|
-
)
|
|
269
|
+
expect(File).to(have_received(:writelines).with('sub/path/target', mofified_included_file.split))
|
|
303
270
|
end
|
|
304
271
|
|
|
305
272
|
it { expect(File).not_to(have_received(:readlines).with('otherpath/othertarget')) }
|
|
306
273
|
|
|
307
|
-
it { expect(refchanger.replace_tags_in_included_files('include::target[]')).to(eq('include::target[]')) }
|
|
274
|
+
it { expect(refchanger.replace_tags_in_included_files('', 'include::target[]')).to(eq('include::target[]')) }
|
|
308
275
|
|
|
309
|
-
it
|
|
276
|
+
it do
|
|
277
|
+
expect(refchanger.replace_tags_in_included_files('', 'include::path/target[]')).to(eq('include::path/target[]'))
|
|
278
|
+
end
|
|
310
279
|
end
|
|
311
280
|
end
|
|
@@ -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
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Copyright (c) 2023 Jerome Arbez-Gindre
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
+
require('defmastership/modifier/modifier_common')
|
|
5
|
+
|
|
4
6
|
# just a class for test
|
|
5
7
|
class DummyClassParent
|
|
6
8
|
# This method smells of :reek:ControlParameter
|
|
@@ -30,13 +32,13 @@ class DummyClass < DummyClassParent
|
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
# This method smells of :reek:UtilityFunction
|
|
33
|
-
def replace_pouet_by_foo(line)
|
|
34
|
-
line.gsub('pouet',
|
|
35
|
+
def replace_pouet_by_foo(filename, line)
|
|
36
|
+
line.gsub('pouet', "foo(#{filename})")
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
# This method smells of :reek:UtilityFunction
|
|
38
|
-
def replace_foo_by_zoo(line)
|
|
39
|
-
line.gsub('foo',
|
|
40
|
+
def replace_foo_by_zoo(filename, line)
|
|
41
|
+
line.gsub('foo', "zoo(#{filename})")
|
|
40
42
|
end
|
|
41
43
|
end
|
|
42
44
|
|
|
@@ -68,7 +70,7 @@ RSpec.describe(Defmastership::Modifier::ModifierCommon) do
|
|
|
68
70
|
adoc_sources = { first: "pouet\ntoto\npouet", second: "toto\npouet\ntoto" }
|
|
69
71
|
|
|
70
72
|
expect(modifier.do_modifications(adoc_sources))
|
|
71
|
-
.to(eq({ first: "zoo\ntoto\nzoo", second: "toto\nzoo\ntoto" }))
|
|
73
|
+
.to(eq({ first: "zoo(first)(first)\ntoto\nzoo(first)(first)", second: "toto\nzoo(second)(second)\ntoto" }))
|
|
72
74
|
end
|
|
73
75
|
end
|
|
74
76
|
end
|