synvert-core 0.15.1 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -2
- data/Gemfile +2 -0
- data/Guardfile +2 -0
- data/Rakefile +2 -0
- data/lib/synvert/core.rb +2 -3
- data/lib/synvert/core/configuration.rb +2 -1
- data/lib/synvert/core/engine.rb +1 -1
- data/lib/synvert/core/engine/erb.rb +31 -23
- data/lib/synvert/core/exceptions.rb +5 -3
- data/lib/synvert/core/node_ext.rb +107 -101
- data/lib/synvert/core/rewriter.rb +20 -14
- data/lib/synvert/core/rewriter/action.rb +5 -7
- data/lib/synvert/core/rewriter/action/append_action.rb +8 -6
- data/lib/synvert/core/rewriter/action/insert_action.rb +18 -19
- data/lib/synvert/core/rewriter/action/insert_after_action.rb +2 -2
- data/lib/synvert/core/rewriter/action/remove_action.rb +2 -2
- data/lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb +5 -4
- data/lib/synvert/core/rewriter/action/replace_with_action.rb +7 -5
- data/lib/synvert/core/rewriter/condition.rb +1 -1
- data/lib/synvert/core/rewriter/condition/if_exist_condition.rb +2 -2
- data/lib/synvert/core/rewriter/condition/if_only_exist_condition.rb +2 -3
- data/lib/synvert/core/rewriter/condition/unless_exist_condition.rb +2 -2
- data/lib/synvert/core/rewriter/gem_spec.rb +10 -10
- data/lib/synvert/core/rewriter/helper.rb +4 -6
- data/lib/synvert/core/rewriter/instance.rb +36 -22
- data/lib/synvert/core/rewriter/ruby_version.rb +1 -1
- data/lib/synvert/core/rewriter/scope.rb +1 -1
- data/lib/synvert/core/rewriter/scope/goto_scope.rb +2 -1
- data/lib/synvert/core/rewriter/scope/within_scope.rb +23 -7
- data/lib/synvert/core/rewriter/warning.rb +1 -1
- data/lib/synvert/core/version.rb +2 -2
- data/spec/spec_helper.rb +3 -1
- data/spec/support/parser_helper.rb +2 -0
- data/spec/synvert/core/configuration_spec.rb +3 -1
- data/spec/synvert/core/engine/erb_spec.rb +32 -30
- data/spec/synvert/core/node_ext_spec.rb +57 -54
- data/spec/synvert/core/rewriter/action/append_action_spec.rb +2 -0
- data/spec/synvert/core/rewriter/action/insert_action_spec.rb +10 -8
- data/spec/synvert/core/rewriter/action/insert_after_action_spec.rb +5 -3
- data/spec/synvert/core/rewriter/action/remove_action_spec.rb +3 -1
- data/spec/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action_spec.rb +2 -0
- data/spec/synvert/core/rewriter/action/replace_with_action_spec.rb +17 -11
- data/spec/synvert/core/rewriter/action_spec.rb +2 -0
- data/spec/synvert/core/rewriter/condition/if_exist_condition_spec.rb +19 -9
- data/spec/synvert/core/rewriter/condition/if_only_exist_condition_spec.rb +23 -12
- data/spec/synvert/core/rewriter/condition/unless_exist_condition_spec.rb +19 -9
- data/spec/synvert/core/rewriter/condition_spec.rb +2 -0
- data/spec/synvert/core/rewriter/gem_spec_spec.rb +13 -10
- data/spec/synvert/core/rewriter/helper_spec.rb +36 -31
- data/spec/synvert/core/rewriter/instance_spec.rb +118 -66
- data/spec/synvert/core/rewriter/scope/goto_scope_spec.rb +10 -6
- data/spec/synvert/core/rewriter/scope/within_scope.rb +18 -9
- data/spec/synvert/core/rewriter/scope_spec.rb +2 -0
- data/spec/synvert/core/rewriter/warning_spec.rb +2 -0
- data/spec/synvert/core/rewriter_spec.rb +106 -73
- data/synvert-core.gemspec +2 -2
- metadata +12 -12
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
module Synvert::Core
|
@@ -10,66 +12,104 @@ module Synvert::Core
|
|
10
12
|
}
|
11
13
|
|
12
14
|
it 'parses within_node' do
|
13
|
-
scope = double
|
14
|
-
block =
|
15
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
15
|
+
scope = double
|
16
|
+
block = proc {}
|
17
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
18
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: true }, &block)
|
19
|
+
.and_return(scope)
|
16
20
|
expect(scope).to receive(:process)
|
17
21
|
instance.within_node(type: 'send', message: 'create', &block)
|
18
22
|
end
|
19
23
|
|
20
24
|
it 'parses with_node' do
|
21
|
-
scope = double
|
22
|
-
block =
|
23
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
25
|
+
scope = double
|
26
|
+
block = proc {}
|
27
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
28
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: true }, &block)
|
29
|
+
.and_return(scope)
|
24
30
|
expect(scope).to receive(:process)
|
25
31
|
instance.with_node(type: 'send', message: 'create', &block)
|
26
32
|
end
|
27
33
|
|
34
|
+
it 'parses within_direct_node' do
|
35
|
+
scope = double
|
36
|
+
block = proc {}
|
37
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
38
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: false }, &block)
|
39
|
+
.and_return(scope)
|
40
|
+
expect(scope).to receive(:process)
|
41
|
+
instance.within_direct_node(type: 'send', message: 'create', &block)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'parses with_direct_node' do
|
45
|
+
scope = double
|
46
|
+
block = proc {}
|
47
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
48
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: false }, &block)
|
49
|
+
.and_return(scope)
|
50
|
+
expect(scope).to receive(:process)
|
51
|
+
instance.with_direct_node(type: 'send', message: 'create', &block)
|
52
|
+
end
|
53
|
+
|
28
54
|
it 'parses goto_node' do
|
29
|
-
scope = double
|
30
|
-
block =
|
55
|
+
scope = double
|
56
|
+
block = proc {}
|
31
57
|
expect(Rewriter::GotoScope).to receive(:new).with(instance, :caller, &block).and_return(scope)
|
32
58
|
expect(scope).to receive(:process)
|
33
59
|
instance.goto_node(:caller, &block)
|
34
60
|
end
|
35
61
|
|
36
62
|
it 'parses if_exist_node' do
|
37
|
-
condition = double
|
38
|
-
block =
|
39
|
-
expect(Rewriter::IfExistCondition).to receive(:new)
|
63
|
+
condition = double
|
64
|
+
block = proc {}
|
65
|
+
expect(Rewriter::IfExistCondition).to receive(:new)
|
66
|
+
.with(instance, type: 'send', message: 'create', &block)
|
67
|
+
.and_return(condition)
|
40
68
|
expect(condition).to receive(:process)
|
41
69
|
instance.if_exist_node(type: 'send', message: 'create', &block)
|
42
70
|
end
|
43
71
|
|
44
72
|
it 'parses unless_exist_node' do
|
45
|
-
condition = double
|
46
|
-
block =
|
47
|
-
expect(Rewriter::UnlessExistCondition).to receive(:new)
|
73
|
+
condition = double
|
74
|
+
block = proc {}
|
75
|
+
expect(Rewriter::UnlessExistCondition).to receive(:new)
|
76
|
+
.with(instance, type: 'send', message: 'create', &block)
|
77
|
+
.and_return(condition)
|
48
78
|
expect(condition).to receive(:process)
|
49
79
|
instance.unless_exist_node(type: 'send', message: 'create', &block)
|
50
80
|
end
|
51
81
|
|
52
82
|
it 'parses if_only_exist_node' do
|
53
|
-
condition = double
|
54
|
-
block =
|
55
|
-
expect(Rewriter::IfOnlyExistCondition).to receive(:new)
|
83
|
+
condition = double
|
84
|
+
block = proc {}
|
85
|
+
expect(Rewriter::IfOnlyExistCondition).to receive(:new)
|
86
|
+
.with(instance, type: 'send', message: 'create', &block)
|
87
|
+
.and_return(condition)
|
56
88
|
expect(condition).to receive(:process)
|
57
89
|
instance.if_only_exist_node(type: 'send', message: 'create', &block)
|
58
90
|
end
|
59
91
|
|
60
92
|
it 'parses append' do
|
61
93
|
expect(Rewriter::AppendAction).to receive(:new).with(instance, 'include FactoryGirl::Syntax::Methods', {})
|
62
|
-
instance.append
|
94
|
+
instance.append 'include FactoryGirl::Syntax::Methods'
|
63
95
|
end
|
64
96
|
|
65
97
|
it 'parses insert' do
|
66
|
-
expect(Rewriter::InsertAction).to receive(:new).with(
|
67
|
-
|
98
|
+
expect(Rewriter::InsertAction).to receive(:new).with(
|
99
|
+
instance,
|
100
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods',
|
101
|
+
{}
|
102
|
+
)
|
103
|
+
instance.insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
68
104
|
end
|
69
105
|
|
70
106
|
it 'parses insert_after' do
|
71
|
-
expect(Rewriter::InsertAfterAction).to receive(:new).with(
|
72
|
-
|
107
|
+
expect(Rewriter::InsertAfterAction).to receive(:new).with(
|
108
|
+
instance,
|
109
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods',
|
110
|
+
{}
|
111
|
+
)
|
112
|
+
instance.insert_after '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
73
113
|
end
|
74
114
|
|
75
115
|
it 'parses replace_with' do
|
@@ -91,25 +131,28 @@ module Synvert::Core
|
|
91
131
|
let(:rewriter) { Rewriter.new('foo', 'bar') }
|
92
132
|
|
93
133
|
it 'writes new code to file' do
|
94
|
-
instance =
|
95
|
-
|
96
|
-
|
134
|
+
instance =
|
135
|
+
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
136
|
+
with_node type: 'send', receiver: 'FactoryGirl', message: 'create' do
|
137
|
+
replace_with 'create {{arguments}}'
|
138
|
+
end
|
97
139
|
end
|
98
|
-
|
99
|
-
|
140
|
+
input =
|
141
|
+
"
|
100
142
|
it 'uses factory_girl' do
|
101
143
|
user = FactoryGirl.create :user
|
102
144
|
post = FactoryGirl.create :post, user: user
|
103
145
|
assert post.valid?
|
104
146
|
end
|
105
|
-
"
|
106
|
-
output =
|
147
|
+
"
|
148
|
+
output =
|
149
|
+
"
|
107
150
|
it 'uses factory_girl' do
|
108
151
|
user = create :user
|
109
152
|
post = create :post, user: user
|
110
153
|
assert post.valid?
|
111
154
|
end
|
112
|
-
"
|
155
|
+
"
|
113
156
|
expect(Dir).to receive(:glob).with('./spec/**/*_spec.rb').and_return(['spec/models/post_spec.rb'])
|
114
157
|
expect(File).to receive(:read).with('spec/models/post_spec.rb').and_return(input)
|
115
158
|
expect(File).to receive(:write).with('spec/models/post_spec.rb', output)
|
@@ -117,23 +160,26 @@ end
|
|
117
160
|
end
|
118
161
|
|
119
162
|
it 'does not write if file content is not changed' do
|
120
|
-
instance =
|
121
|
-
|
122
|
-
|
123
|
-
|
163
|
+
instance =
|
164
|
+
Rewriter::Instance.new rewriter, 'spec/spec_helper.rb' do
|
165
|
+
with_node type: 'block', caller: { receiver: 'RSpec', message: 'configure' } do
|
166
|
+
unless_exist_node type: 'send', message: 'include', arguments: ['FactoryGirl::Syntax::Methods'] do
|
167
|
+
insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
168
|
+
end
|
124
169
|
end
|
125
170
|
end
|
126
|
-
|
127
|
-
|
171
|
+
input =
|
172
|
+
'
|
128
173
|
RSpec.configure do |config|
|
129
174
|
config.include FactoryGirl::Syntax::Methods
|
130
175
|
end
|
131
|
-
|
132
|
-
output =
|
176
|
+
'
|
177
|
+
output =
|
178
|
+
'
|
133
179
|
RSpec.configure do |config|
|
134
180
|
config.include FactoryGirl::Syntax::Methods
|
135
181
|
end
|
136
|
-
|
182
|
+
'
|
137
183
|
expect(Dir).to receive(:glob).with('./spec/spec_helper.rb').and_return(['spec/spec_helper.rb'])
|
138
184
|
expect(File).to receive(:read).with('spec/spec_helper.rb').and_return(input)
|
139
185
|
expect(File).not_to receive(:write).with('spec/spec_helper.rb', output)
|
@@ -141,23 +187,26 @@ end
|
|
141
187
|
end
|
142
188
|
|
143
189
|
it 'does not read file if already read' do
|
144
|
-
instance =
|
145
|
-
|
146
|
-
|
147
|
-
|
190
|
+
instance =
|
191
|
+
Rewriter::Instance.new rewriter, 'spec/spec_helper.rb' do
|
192
|
+
with_node type: 'block', caller: { receiver: 'RSpec', message: 'configure' } do
|
193
|
+
unless_exist_node type: 'send', message: 'include', arguments: ['FactoryGirl::Syntax::Methods'] do
|
194
|
+
insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
195
|
+
end
|
148
196
|
end
|
149
197
|
end
|
150
|
-
|
151
|
-
|
198
|
+
input =
|
199
|
+
'
|
152
200
|
RSpec.configure do |config|
|
153
201
|
config.include FactoryGirl::Syntax::Methods
|
154
202
|
end
|
155
|
-
|
156
|
-
output =
|
203
|
+
'
|
204
|
+
output =
|
205
|
+
'
|
157
206
|
RSpec.configure do |config|
|
158
207
|
config.include FactoryGirl::Syntax::Methods
|
159
208
|
end
|
160
|
-
|
209
|
+
'
|
161
210
|
expect(Dir).to receive(:glob).with('./spec/spec_helper.rb').and_return(['spec/spec_helper.rb']).twice
|
162
211
|
expect(File).to receive(:read).with('spec/spec_helper.rb').and_return(input).once
|
163
212
|
expect(File).not_to receive(:write).with('spec/spec_helper.rb', output)
|
@@ -166,25 +215,28 @@ end
|
|
166
215
|
end
|
167
216
|
|
168
217
|
it 'updates file_source and file_ast when writing a file' do
|
169
|
-
instance =
|
170
|
-
|
171
|
-
|
218
|
+
instance =
|
219
|
+
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
220
|
+
with_node type: 'send', receiver: 'FactoryGirl', message: 'create' do
|
221
|
+
replace_with 'create {{arguments}}'
|
222
|
+
end
|
172
223
|
end
|
173
|
-
|
174
|
-
|
224
|
+
input =
|
225
|
+
"
|
175
226
|
it 'uses factory_girl' do
|
176
227
|
user = FactoryGirl.create :user
|
177
228
|
post = FactoryGirl.create :post, user: user
|
178
229
|
assert post.valid?
|
179
230
|
end
|
180
|
-
"
|
181
|
-
output =
|
231
|
+
"
|
232
|
+
output =
|
233
|
+
"
|
182
234
|
it 'uses factory_girl' do
|
183
235
|
user = create :user
|
184
236
|
post = create :post, user: user
|
185
237
|
assert post.valid?
|
186
238
|
end
|
187
|
-
"
|
239
|
+
"
|
188
240
|
expect(Dir).to receive(:glob).with('./spec/**/*_spec.rb').and_return(['spec/models/post_spec.rb']).twice
|
189
241
|
expect(File).to receive(:read).with('spec/models/post_spec.rb').and_return(input)
|
190
242
|
expect(File).to receive(:write).with('spec/models/post_spec.rb', output)
|
@@ -194,10 +246,10 @@ end
|
|
194
246
|
end
|
195
247
|
end
|
196
248
|
|
197
|
-
describe
|
249
|
+
describe '#get_conflict_actions' do
|
198
250
|
let(:rewriter) { Rewriter.new('foo', 'bar') }
|
199
251
|
|
200
|
-
it
|
252
|
+
it 'has no conflict' do
|
201
253
|
action1 = double(begin_pos: 10, end_pos: 20)
|
202
254
|
action2 = double(begin_pos: 30, end_pos: 40)
|
203
255
|
action3 = double(begin_pos: 50, end_pos: 60)
|
@@ -205,10 +257,10 @@ end
|
|
205
257
|
instance.instance_variable_set :@actions, [action1, action2, action3]
|
206
258
|
conflict_actions = instance.send(:get_conflict_actions)
|
207
259
|
expect(conflict_actions).to eq []
|
208
|
-
expect(instance.instance_variable_get
|
260
|
+
expect(instance.instance_variable_get(:@actions)).to eq [action1, action2, action3]
|
209
261
|
end
|
210
262
|
|
211
|
-
it
|
263
|
+
it 'has no conflict' do
|
212
264
|
action1 = double(begin_pos: 30, end_pos: 40)
|
213
265
|
action2 = double(begin_pos: 50, end_pos: 60)
|
214
266
|
action3 = double(begin_pos: 10, end_pos: 20)
|
@@ -216,14 +268,14 @@ end
|
|
216
268
|
instance.instance_variable_set :@actions, [action1, action2, action3]
|
217
269
|
conflict_actions = instance.send(:get_conflict_actions)
|
218
270
|
expect(conflict_actions).to eq [action2, action1]
|
219
|
-
expect(instance.instance_variable_get
|
271
|
+
expect(instance.instance_variable_get(:@actions)).to eq [action3]
|
220
272
|
end
|
221
273
|
end
|
222
274
|
|
223
275
|
describe '#process_with_node' do
|
224
276
|
it 'resets current_node' do
|
225
|
-
node1 = double
|
226
|
-
node2 = double
|
277
|
+
node1 = double
|
278
|
+
node2 = double
|
227
279
|
instance.process_with_node(node1) do
|
228
280
|
instance.current_node = node2
|
229
281
|
expect(instance.current_node).to eq node2
|
@@ -234,9 +286,9 @@ end
|
|
234
286
|
|
235
287
|
describe '#process_with_other_node' do
|
236
288
|
it 'resets current_node' do
|
237
|
-
node1 = double
|
238
|
-
node2 = double
|
239
|
-
node3 = double
|
289
|
+
node1 = double
|
290
|
+
node2 = double
|
291
|
+
node3 = double
|
240
292
|
instance.current_node = node1
|
241
293
|
instance.process_with_other_node(node2) do
|
242
294
|
instance.current_node = node3
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
module Synvert::Core
|
@@ -6,10 +8,11 @@ module Synvert::Core
|
|
6
8
|
rewriter = Rewriter.new('foo', 'bar')
|
7
9
|
Rewriter::Instance.new(rewriter, 'file pattern')
|
8
10
|
}
|
9
|
-
let(:source) {
|
11
|
+
let(:source) {
|
12
|
+
'
|
10
13
|
Factory.define :user do |user|
|
11
14
|
end
|
12
|
-
'
|
15
|
+
'
|
13
16
|
}
|
14
17
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
15
18
|
before do
|
@@ -21,10 +24,11 @@ end
|
|
21
24
|
it 'call block with child node' do
|
22
25
|
run = false
|
23
26
|
type_in_scope = nil
|
24
|
-
scope =
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
scope =
|
28
|
+
Rewriter::GotoScope.new instance, :caller do
|
29
|
+
run = true
|
30
|
+
type_in_scope = node.type
|
31
|
+
end
|
28
32
|
scope.process
|
29
33
|
expect(run).to be_truthy
|
30
34
|
expect(type_in_scope).to eq :send
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
module Synvert::Core
|
@@ -6,13 +8,14 @@ module Synvert::Core
|
|
6
8
|
rewriter = Rewriter.new('foo', 'bar')
|
7
9
|
Rewriter::Instance.new(rewriter, 'file pattern')
|
8
10
|
}
|
9
|
-
let(:source) {
|
11
|
+
let(:source) {
|
12
|
+
"
|
10
13
|
describe Post do
|
11
14
|
it 'gets post' do
|
12
15
|
FactoryGirl.create :post
|
13
16
|
end
|
14
17
|
end
|
15
|
-
"
|
18
|
+
"
|
16
19
|
}
|
17
20
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
18
21
|
before do
|
@@ -23,9 +26,10 @@ end
|
|
23
26
|
describe '#process' do
|
24
27
|
it 'not call block if no matching node' do
|
25
28
|
run = false
|
26
|
-
scope =
|
27
|
-
|
28
|
-
|
29
|
+
scope =
|
30
|
+
Rewriter::WithinScope.new instance, type: 'send', message: 'missing' do
|
31
|
+
run = true
|
32
|
+
end
|
29
33
|
scope.process
|
30
34
|
expect(run).to be_falsey
|
31
35
|
end
|
@@ -33,10 +37,15 @@ end
|
|
33
37
|
it 'call block if there is matching node' do
|
34
38
|
run = false
|
35
39
|
type_in_scope = nil
|
36
|
-
scope =
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
scope =
|
41
|
+
Rewriter::WithinScope.new instance,
|
42
|
+
type: 'send',
|
43
|
+
receiver: 'FactoryGirl',
|
44
|
+
message: 'create',
|
45
|
+
arguments: [':post'] do
|
46
|
+
run = true
|
47
|
+
type_in_scope = node.type
|
48
|
+
end
|
40
49
|
scope.process
|
41
50
|
expect(run).to be_truthy
|
42
51
|
expect(type_in_scope).to eq :send
|
@@ -1,28 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
module Synvert::Core
|
4
6
|
describe Rewriter do
|
7
|
+
it '.execute' do
|
8
|
+
run = false
|
9
|
+
Rewriter.execute { run = true }
|
10
|
+
expect(run).to be_truthy
|
11
|
+
end
|
12
|
+
|
5
13
|
it 'parses description' do
|
6
|
-
rewriter =
|
7
|
-
|
8
|
-
|
14
|
+
rewriter =
|
15
|
+
Rewriter.new 'group', 'name' do
|
16
|
+
description 'rewriter description'
|
17
|
+
end
|
9
18
|
rewriter.process
|
10
19
|
expect(rewriter.description).to eq 'rewriter description'
|
11
20
|
end
|
12
21
|
|
13
22
|
it 'parses if_ruby' do
|
14
|
-
|
15
|
-
rewriter =
|
16
|
-
|
17
|
-
|
23
|
+
expect(Rewriter::RubyVersion).to receive(:new).with('2.0.0')
|
24
|
+
rewriter =
|
25
|
+
Rewriter.new 'group', 'name' do
|
26
|
+
if_ruby '2.0.0'
|
27
|
+
end
|
18
28
|
rewriter.process
|
19
29
|
end
|
20
30
|
|
21
31
|
it 'parses if_gem' do
|
22
|
-
expect(Rewriter::GemSpec).to receive(:new).with('synvert', {gte: '1.0.0'})
|
23
|
-
rewriter =
|
24
|
-
|
25
|
-
|
32
|
+
expect(Rewriter::GemSpec).to receive(:new).with('synvert', { gte: '1.0.0' })
|
33
|
+
rewriter =
|
34
|
+
Rewriter.new 'group', 'name' do
|
35
|
+
if_gem 'synvert', { gte: '1.0.0' }
|
36
|
+
end
|
26
37
|
rewriter.process
|
27
38
|
end
|
28
39
|
|
@@ -30,76 +41,90 @@ module Synvert::Core
|
|
30
41
|
it 'does nothing if if_ruby does not match' do
|
31
42
|
stub_const('RUBY_VERSION', '2.0.0')
|
32
43
|
expect_any_instance_of(Rewriter::Instance).not_to receive(:process)
|
33
|
-
rewriter =
|
34
|
-
|
35
|
-
|
36
|
-
|
44
|
+
rewriter =
|
45
|
+
Rewriter.new 'group', 'name' do
|
46
|
+
if_ruby '2.2.3'
|
47
|
+
within_file 'config/routes.rb' do
|
48
|
+
end
|
49
|
+
end
|
37
50
|
rewriter.process
|
38
51
|
end
|
39
52
|
|
40
53
|
it 'delegates process to instances if if_ruby matches' do
|
41
54
|
stub_const('RUBY_VERSION', '2.0.0')
|
42
55
|
expect_any_instance_of(Rewriter::Instance).to receive(:process)
|
43
|
-
rewriter =
|
44
|
-
|
45
|
-
|
46
|
-
|
56
|
+
rewriter =
|
57
|
+
Rewriter.new 'group', 'name' do
|
58
|
+
if_ruby '1.9.3'
|
59
|
+
within_file 'config/routes.rb' do
|
60
|
+
end
|
61
|
+
end
|
47
62
|
rewriter.process
|
48
63
|
end
|
49
64
|
|
50
65
|
it 'does nothing if if_gem does not match' do
|
51
66
|
expect_any_instance_of(Rewriter::GemSpec).to receive(:match?).and_return(false)
|
52
67
|
expect_any_instance_of(Rewriter::Instance).not_to receive(:process)
|
53
|
-
rewriter =
|
54
|
-
|
55
|
-
|
56
|
-
|
68
|
+
rewriter =
|
69
|
+
Rewriter.new 'group', 'name' do
|
70
|
+
if_gem 'synvert', '1.0.0'
|
71
|
+
within_file 'config/routes.rb' do
|
72
|
+
end
|
73
|
+
end
|
57
74
|
rewriter.process
|
58
75
|
end
|
59
76
|
|
60
77
|
it 'delegates process to instances if if_gem matches' do
|
61
78
|
expect_any_instance_of(Rewriter::GemSpec).to receive(:match?).and_return(true)
|
62
79
|
expect_any_instance_of(Rewriter::Instance).to receive(:process)
|
63
|
-
rewriter =
|
64
|
-
|
65
|
-
|
66
|
-
|
80
|
+
rewriter =
|
81
|
+
Rewriter.new 'group', 'name' do
|
82
|
+
if_gem 'synvert', '1.0.0'
|
83
|
+
within_file 'config/routes.rb' do
|
84
|
+
end
|
85
|
+
end
|
67
86
|
rewriter.process
|
68
87
|
end
|
69
88
|
|
70
89
|
it 'delegates process to instances if if_ruby and if_gem do not exist' do
|
71
90
|
expect_any_instance_of(Rewriter::Instance).to receive(:process)
|
72
|
-
rewriter =
|
73
|
-
|
74
|
-
|
91
|
+
rewriter =
|
92
|
+
Rewriter.new 'group', 'name' do
|
93
|
+
within_file 'config/routes.rb' do
|
94
|
+
end
|
95
|
+
end
|
75
96
|
rewriter.process
|
76
97
|
end
|
77
98
|
|
78
99
|
it 'does nothing in sandbox mode' do
|
79
100
|
expect_any_instance_of(Rewriter::GemSpec).not_to receive(:match?)
|
80
101
|
expect_any_instance_of(Rewriter::Instance).not_to receive(:process)
|
81
|
-
rewriter =
|
82
|
-
|
83
|
-
|
84
|
-
|
102
|
+
rewriter =
|
103
|
+
Rewriter.new 'group', 'name' do
|
104
|
+
if_gem 'synvert', '1.0.0'
|
105
|
+
within_file 'config/routes.rb' do
|
106
|
+
end
|
107
|
+
end
|
85
108
|
rewriter.process_with_sandbox
|
86
109
|
end
|
87
110
|
end
|
88
111
|
|
89
112
|
describe 'parses add_file' do
|
90
113
|
it 'creates a new file' do
|
91
|
-
rewriter =
|
92
|
-
|
93
|
-
|
114
|
+
rewriter =
|
115
|
+
Rewriter.new 'group', 'rewriter2' do
|
116
|
+
add_file 'foo.bar', 'FooBar'
|
117
|
+
end
|
94
118
|
rewriter.process
|
95
|
-
expect(File.read
|
119
|
+
expect(File.read('./foo.bar')).to eq 'FooBar'
|
96
120
|
FileUtils.rm './foo.bar'
|
97
121
|
end
|
98
122
|
|
99
123
|
it 'does nothing in sandbox mode' do
|
100
|
-
rewriter =
|
101
|
-
|
102
|
-
|
124
|
+
rewriter =
|
125
|
+
Rewriter.new 'group', 'rewriter2' do
|
126
|
+
add_file 'foo.bar', 'FooBar'
|
127
|
+
end
|
103
128
|
rewriter.process_with_sandbox
|
104
129
|
expect(File.exist?('./foo.bar')).to be_falsey
|
105
130
|
end
|
@@ -108,26 +133,29 @@ module Synvert::Core
|
|
108
133
|
describe 'parses remove_file' do
|
109
134
|
it 'removes a file' do
|
110
135
|
FileUtils.touch './foo.bar'
|
111
|
-
rewriter =
|
112
|
-
|
113
|
-
|
136
|
+
rewriter =
|
137
|
+
Rewriter.new 'group', 'rewriter2' do
|
138
|
+
remove_file 'foo.bar'
|
139
|
+
end
|
114
140
|
rewriter.process
|
115
|
-
expect(File.exist?
|
141
|
+
expect(File.exist?('./foo.bar')).to be_falsey
|
116
142
|
end
|
117
143
|
|
118
144
|
it 'does nothing if file not exist' do
|
119
|
-
rewriter =
|
120
|
-
|
121
|
-
|
145
|
+
rewriter =
|
146
|
+
Rewriter.new 'group', 'rewriter2' do
|
147
|
+
remove_file 'foo.bar'
|
148
|
+
end
|
122
149
|
rewriter.process
|
123
|
-
expect(File.exist?
|
150
|
+
expect(File.exist?('./foo.bar')).to be_falsey
|
124
151
|
end
|
125
152
|
|
126
153
|
it 'does nothing in sandbox mode' do
|
127
154
|
FileUtils.touch './foo.bar'
|
128
|
-
rewriter =
|
129
|
-
|
130
|
-
|
155
|
+
rewriter =
|
156
|
+
Rewriter.new 'group', 'rewriter2' do
|
157
|
+
add_file 'foo.bar', 'FooBar'
|
158
|
+
end
|
131
159
|
rewriter.process_with_sandbox
|
132
160
|
expect(File.exist?('./foo.bar')).to be_truthy
|
133
161
|
FileUtils.rm './foo.bar'
|
@@ -137,46 +165,51 @@ module Synvert::Core
|
|
137
165
|
describe 'parses add_snippet' do
|
138
166
|
it 'processes the rewritter' do
|
139
167
|
rewriter1 = Rewriter.new 'group', 'rewriter1'
|
140
|
-
rewriter2 =
|
141
|
-
|
142
|
-
|
168
|
+
rewriter2 =
|
169
|
+
Rewriter.new 'group', 'rewriter2' do
|
170
|
+
add_snippet :group, :rewriter1
|
171
|
+
end
|
143
172
|
expect(rewriter1).to receive(:process)
|
144
173
|
rewriter2.process
|
145
174
|
end
|
146
175
|
|
147
176
|
it 'adds sub_snippets' do
|
148
177
|
rewriter1 = Rewriter.new 'group', 'rewriter1'
|
149
|
-
rewriter2 =
|
150
|
-
|
151
|
-
|
178
|
+
rewriter2 =
|
179
|
+
Rewriter.new 'group', 'rewriter2' do
|
180
|
+
add_snippet :group, :rewriter1
|
181
|
+
end
|
152
182
|
expect(rewriter1).to receive(:process)
|
153
183
|
rewriter2.process
|
154
184
|
expect(rewriter2.sub_snippets).to eq [rewriter1]
|
155
185
|
end
|
156
186
|
|
157
187
|
it 'raises RewriterNotFound' do
|
158
|
-
rewriter =
|
159
|
-
|
160
|
-
|
188
|
+
rewriter =
|
189
|
+
Rewriter.new 'group', 'name' do
|
190
|
+
add_snippet :group, :not_exist
|
191
|
+
end
|
161
192
|
expect { rewriter.process }.to raise_error(RewriterNotFound)
|
162
193
|
end
|
163
194
|
end
|
164
195
|
|
165
196
|
it 'parses helper_method' do
|
166
|
-
rewriter =
|
167
|
-
|
168
|
-
'
|
197
|
+
rewriter =
|
198
|
+
Rewriter.new 'group', 'name' do
|
199
|
+
helper_method 'dynamic_helper' do |_arg1, _arg2|
|
200
|
+
'dynamic result'
|
201
|
+
end
|
169
202
|
end
|
170
|
-
end
|
171
203
|
rewriter.process
|
172
204
|
instance = Rewriter::Instance.new(rewriter, '*.rb')
|
173
205
|
expect(instance.dynamic_helper('arg1', 'arg2')).to eq 'dynamic result'
|
174
206
|
end
|
175
207
|
|
176
208
|
it 'parses todo' do
|
177
|
-
rewriter =
|
178
|
-
|
179
|
-
|
209
|
+
rewriter =
|
210
|
+
Rewriter.new 'group', 'name' do
|
211
|
+
todo "this rewriter doesn't do blah blah blah"
|
212
|
+
end
|
180
213
|
rewriter.process
|
181
214
|
expect(rewriter.todo).to eq "this rewriter doesn't do blah blah blah"
|
182
215
|
end
|
@@ -201,18 +234,18 @@ module Synvert::Core
|
|
201
234
|
expect { Rewriter.call 'group', 'rewriter' }.to raise_error(RewriterNotFound)
|
202
235
|
end
|
203
236
|
|
204
|
-
context
|
237
|
+
context 'exist?' do
|
205
238
|
it 'returns true if rewriter exists' do
|
206
239
|
Rewriter.new 'group', 'rewriter'
|
207
|
-
expect(Rewriter.exist?
|
240
|
+
expect(Rewriter.exist?('group', 'rewriter')).to be_truthy
|
208
241
|
end
|
209
242
|
|
210
243
|
it 'returns false if rewriter does not exist' do
|
211
|
-
expect(Rewriter.exist?
|
244
|
+
expect(Rewriter.exist?('group', 'rewriter')).to be_falsey
|
212
245
|
end
|
213
246
|
end
|
214
247
|
|
215
|
-
context
|
248
|
+
context 'available' do
|
216
249
|
it 'lists empty rewriters' do
|
217
250
|
expect(Rewriter.availables).to eq({})
|
218
251
|
end
|
@@ -220,7 +253,7 @@ module Synvert::Core
|
|
220
253
|
it 'registers and lists all available rewriters' do
|
221
254
|
rewriter1 = Rewriter.new 'group', 'rewriter1'
|
222
255
|
rewriter2 = Rewriter.new 'group', 'rewriter2'
|
223
|
-
expect(Rewriter.availables).to eq({'group' => {'rewriter1' => rewriter1, 'rewriter2' => rewriter2}})
|
256
|
+
expect(Rewriter.availables).to eq({ 'group' => { 'rewriter1' => rewriter1, 'rewriter2' => rewriter2 } })
|
224
257
|
end
|
225
258
|
end
|
226
259
|
end
|