transpec 2.3.1 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/Gemfile +0 -2
  5. data/README.md +13 -5
  6. data/README.md.erb +13 -5
  7. data/lib/transpec/ast/node.rb +2 -75
  8. data/lib/transpec/directory_cloner.rb +53 -0
  9. data/lib/transpec/dynamic_analyzer.rb +10 -50
  10. data/lib/transpec/record.rb +10 -1
  11. data/lib/transpec/rspec_dsl.rb +0 -2
  12. data/lib/transpec/static_context_inspector.rb +3 -3
  13. data/lib/transpec/syntax/current_example.rb +3 -8
  14. data/lib/transpec/syntax/example.rb +1 -1
  15. data/lib/transpec/syntax/example_group.rb +15 -11
  16. data/lib/transpec/syntax/have/dynamic_analysis.rb +0 -2
  17. data/lib/transpec/syntax/have/record_builder.rb +1 -5
  18. data/lib/transpec/syntax/its.rb +2 -6
  19. data/lib/transpec/syntax/method_stub.rb +6 -21
  20. data/lib/transpec/syntax/mixin/any_instance_block.rb +1 -5
  21. data/lib/transpec/syntax/mixin/expect_base.rb +1 -1
  22. data/lib/transpec/syntax/mixin/metadata.rb +10 -1
  23. data/lib/transpec/syntax/mixin/should_base.rb +4 -0
  24. data/lib/transpec/syntax/mixin/useless_and_return.rb +1 -5
  25. data/lib/transpec/syntax/oneliner_should.rb +4 -23
  26. data/lib/transpec/syntax/operator.rb +1 -1
  27. data/lib/transpec/syntax/raise_error.rb +1 -5
  28. data/lib/transpec/syntax/rspec_configure/config_modification.rb +2 -3
  29. data/lib/transpec/syntax/rspec_configure/framework.rb +2 -3
  30. data/lib/transpec/syntax/rspec_configure/mocks.rb +0 -4
  31. data/lib/transpec/syntax/rspec_configure.rb +0 -4
  32. data/lib/transpec/syntax/should.rb +1 -13
  33. data/lib/transpec/syntax/should_receive.rb +2 -11
  34. data/lib/transpec/syntax.rb +1 -1
  35. data/lib/transpec/util.rb +2 -3
  36. data/lib/transpec/version.rb +1 -1
  37. data/spec/transpec/directory_cloner_spec.rb +74 -0
  38. data/spec/transpec/dynamic_analyzer_spec.rb +0 -57
  39. data/spec/transpec/spec_suite_spec.rb +2 -2
  40. data/spec/transpec/static_context_inspector_spec.rb +0 -7
  41. data/spec/transpec/syntax/current_example_spec.rb +3 -6
  42. data/spec/transpec/syntax/double_spec.rb +3 -6
  43. data/spec/transpec/syntax/example_group_spec.rb +96 -1
  44. data/spec/transpec/syntax/example_spec.rb +3 -5
  45. data/spec/transpec/syntax/expect_spec.rb +3 -6
  46. data/spec/transpec/syntax/have_spec.rb +3 -5
  47. data/spec/transpec/syntax/its_spec.rb +3 -5
  48. data/spec/transpec/syntax/method_stub_spec.rb +3 -6
  49. data/spec/transpec/syntax/oneliner_should_spec.rb +3 -6
  50. data/spec/transpec/syntax/pending_spec.rb +3 -5
  51. data/transpec.gemspec +2 -1
  52. metadata +27 -6
  53. data/spec/transpec/ast/node_spec.rb +0 -323
@@ -14,13 +14,10 @@ module Transpec
14
14
 
15
15
  describe '#conversion_target?' do
16
16
  let(:target_node) do
17
- ast.each_descendent_node do |node|
18
- next unless node.send_type?
19
- method_name = node.children[1]
20
- next unless method_name == :stub
21
- return node
17
+ ast.each_node(:send).find do |send_node|
18
+ method_name = send_node.children[1]
19
+ method_name == :stub
22
20
  end
23
- fail 'No #stub node is found!'
24
21
  end
25
22
 
26
23
  let(:method_stub_object) do
@@ -13,13 +13,10 @@ module Transpec
13
13
 
14
14
  describe '#conversion_target?' do
15
15
  let(:target_node) do
16
- ast.each_descendent_node do |node|
17
- next unless node.send_type?
18
- method_name = node.children[1]
19
- next unless method_name == :should
20
- return node
16
+ ast.each_node(:send).find do |send_node|
17
+ method_name = send_node.children[1]
18
+ method_name == :should
21
19
  end
22
- fail 'No #should node is found!'
23
20
  end
24
21
 
25
22
  let(:should_object) do
@@ -13,12 +13,10 @@ module Transpec
13
13
 
14
14
  describe '#conversion_target?' do
15
15
  let(:target_node) do
16
- ast.each_descendent_node do |node|
17
- next unless node.send_type?
18
- method_name = node.children[1]
19
- return node if method_name == :pending
16
+ ast.each_node(:send).find do |send_node|
17
+ method_name = send_node.children[1]
18
+ method_name == :pending
20
19
  end
21
- fail 'No #pending node is found!'
22
20
  end
23
21
 
24
22
  let(:pending_object) do
data/transpec.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.required_ruby_version = '>= 1.9.3'
24
24
 
25
25
  spec.add_runtime_dependency 'parser', '>= 2.1.6', '< 3.0'
26
+ spec.add_runtime_dependency 'astrolabe', '>= 0.5.1', '< 0.6'
26
27
  spec.add_runtime_dependency 'bundler', '~> 1.3'
27
28
  spec.add_runtime_dependency 'rainbow', '>= 1.99.1', '< 3.0'
28
29
  spec.add_runtime_dependency 'json', '~> 1.8'
@@ -32,7 +33,7 @@ Gem::Specification.new do |spec|
32
33
  spec.add_development_dependency 'rspec', '~> 2.14.0'
33
34
  spec.add_development_dependency 'fuubar', '~> 1.3'
34
35
  spec.add_development_dependency 'simplecov', '~> 0.7'
35
- spec.add_development_dependency 'rubocop', '~> 0.19'
36
+ spec.add_development_dependency 'rubocop', '~> 0.24'
36
37
  spec.add_development_dependency 'guard-rspec', '>= 4.2.3', '< 5.0'
37
38
  spec.add_development_dependency 'guard-rubocop', '~> 1.0'
38
39
  spec.add_development_dependency 'guard-shell', '~> 0.5'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transpec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2014-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: astrolabe
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.5.1
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.6'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.5.1
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.6'
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: bundler
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -160,14 +180,14 @@ dependencies:
160
180
  requirements:
161
181
  - - "~>"
162
182
  - !ruby/object:Gem::Version
163
- version: '0.19'
183
+ version: '0.24'
164
184
  type: :development
165
185
  prerelease: false
166
186
  version_requirements: !ruby/object:Gem::Requirement
167
187
  requirements:
168
188
  - - "~>"
169
189
  - !ruby/object:Gem::Version
170
- version: '0.19'
190
+ version: '0.24'
171
191
  - !ruby/object:Gem::Dependency
172
192
  name: guard-rspec
173
193
  requirement: !ruby/object:Gem::Requirement
@@ -261,6 +281,7 @@ files:
261
281
  - lib/transpec/config.rb
262
282
  - lib/transpec/conversion_error.rb
263
283
  - lib/transpec/converter.rb
284
+ - lib/transpec/directory_cloner.rb
264
285
  - lib/transpec/dynamic_analyzer.rb
265
286
  - lib/transpec/dynamic_analyzer/node_util.rb
266
287
  - lib/transpec/dynamic_analyzer/rewriter.rb
@@ -332,11 +353,11 @@ files:
332
353
  - spec/support/cache_helper.rb
333
354
  - spec/support/file_helper.rb
334
355
  - spec/support/shared_context.rb
335
- - spec/transpec/ast/node_spec.rb
336
356
  - spec/transpec/cli_spec.rb
337
357
  - spec/transpec/commit_message_spec.rb
338
358
  - spec/transpec/config_spec.rb
339
359
  - spec/transpec/converter_spec.rb
360
+ - spec/transpec/directory_cloner_spec.rb
340
361
  - spec/transpec/dynamic_analyzer/rewriter_spec.rb
341
362
  - spec/transpec/dynamic_analyzer_spec.rb
342
363
  - spec/transpec/file_finder_spec.rb
@@ -416,11 +437,11 @@ test_files:
416
437
  - spec/support/cache_helper.rb
417
438
  - spec/support/file_helper.rb
418
439
  - spec/support/shared_context.rb
419
- - spec/transpec/ast/node_spec.rb
420
440
  - spec/transpec/cli_spec.rb
421
441
  - spec/transpec/commit_message_spec.rb
422
442
  - spec/transpec/config_spec.rb
423
443
  - spec/transpec/converter_spec.rb
444
+ - spec/transpec/directory_cloner_spec.rb
424
445
  - spec/transpec/dynamic_analyzer/rewriter_spec.rb
425
446
  - spec/transpec/dynamic_analyzer_spec.rb
426
447
  - spec/transpec/file_finder_spec.rb
@@ -1,323 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
- require 'transpec/ast/node'
5
-
6
- module Transpec
7
- module AST
8
- describe Node do
9
- include ::AST::Sexp
10
- include_context 'parsed objects'
11
-
12
- let(:source) do
13
- <<-END
14
- def some_method(arg_a, arg_b)
15
- 1.times do
16
- do_something(arg_a)
17
- end
18
- end
19
- END
20
- end
21
-
22
- # (def :some_method
23
- # (args
24
- # (arg :arg_a)
25
- # (arg :arg_b))
26
- # (block
27
- # (send
28
- # (int 1) :times)
29
- # (args)
30
- # (send nil :do_something
31
- # (lvar :arg_a))))
32
-
33
- describe '#parent_node' do
34
- context 'when the node has parent' do
35
- let(:target_node) do
36
- ast.each_descendent_node do |node|
37
- return node if node == s(:args)
38
- end
39
- end
40
-
41
- it 'returns the parent node' do
42
- target_node.parent_node.type.should == :block
43
- end
44
- end
45
-
46
- context 'when the node does not have parent' do
47
- it 'returns nil' do
48
- ast.parent_node.should be_nil
49
- end
50
- end
51
- end
52
-
53
- shared_context 'ancestor nodes' do
54
- let(:target_node) do
55
- ast.each_descendent_node do |node|
56
- return node if node == s(:args)
57
- end
58
- end
59
-
60
- let(:expected_types) { [:block, :def] }
61
- end
62
-
63
- describe '#each_ancestor_node' do
64
- include_context 'ancestor nodes'
65
-
66
- context 'when a block is given' do
67
- it 'yields each ancestor node' do
68
- index = 0
69
-
70
- target_node.each_ancestor_node do |node|
71
- expected_type = expected_types[index]
72
- node.type.should == expected_type
73
- index += 1
74
- end
75
-
76
- index.should_not == 0
77
- end
78
-
79
- it 'returns itself' do
80
- returned_value = target_node.each_ancestor_node {}
81
- returned_value.should be(target_node)
82
- end
83
- end
84
-
85
- context 'when no block is given' do
86
- it 'returns enumerator' do
87
- target_node.each_ancestor_node.should be_a(Enumerator)
88
- end
89
-
90
- describe 'the returned enumerator' do
91
- it 'enumerates the ancestor nodes' do
92
- enumerator = target_node.each_ancestor_node
93
-
94
- expected_types.each do |expected_type|
95
- enumerator.next.type.should == expected_type
96
- end
97
- end
98
- end
99
- end
100
- end
101
-
102
- describe '#ancestor_nodes' do
103
- include_context 'ancestor nodes'
104
-
105
- it 'returns an array' do
106
- target_node.ancestor_nodes.should be_an(Array)
107
- end
108
-
109
- it 'returns same nodes as #each_ancestor_node' do
110
- types = target_node.ancestor_nodes.map(&:type)
111
- types.should == expected_types
112
- end
113
- end
114
-
115
- shared_context 'child nodes' do
116
- let(:expected_types) { [:args, :block] }
117
- end
118
-
119
- describe '#each_child_node' do
120
- include_context 'child nodes'
121
-
122
- context 'when a block is given' do
123
- it 'yields each child node' do
124
- index = 0
125
-
126
- ast.each_child_node do |node|
127
- expected_type = expected_types[index]
128
- node.type.should == expected_type
129
- index += 1
130
- end
131
-
132
- index.should_not == 0
133
- end
134
-
135
- it 'returns itself' do
136
- returned_value = ast.each_child_node {}
137
- returned_value.should be(ast)
138
- end
139
- end
140
-
141
- context 'when no block is given' do
142
- it 'returns enumerator' do
143
- ast.each_child_node.should be_a(Enumerator)
144
- end
145
-
146
- describe 'the returned enumerator' do
147
- it 'enumerates the child nodes' do
148
- enumerator = ast.each_child_node
149
-
150
- expected_types.each do |expected_type|
151
- enumerator.next.type.should == expected_type
152
- end
153
- end
154
- end
155
- end
156
- end
157
-
158
- describe '#child_nodes' do
159
- include_context 'child nodes'
160
-
161
- it 'returns an array' do
162
- ast.child_nodes.should be_an(Array)
163
- end
164
-
165
- it 'returns same nodes as #each_child_node' do
166
- types = ast.child_nodes.map(&:type)
167
- types.should == expected_types
168
- end
169
- end
170
-
171
- shared_context 'descendent nodes' do
172
- let(:expected_types) do
173
- [:args, :arg, :arg, :block, :send, :int, :args, :send, :lvar]
174
- end
175
- end
176
-
177
- describe '#each_descendent_node' do
178
- include_context 'descendent nodes'
179
-
180
- context 'when a block is given' do
181
- it 'yields each descendent node with depth first order' do
182
- index = 0
183
-
184
- ast.each_descendent_node do |node|
185
- expected_type = expected_types[index]
186
- node.type.should == expected_type
187
- index += 1
188
- end
189
-
190
- index.should_not == 0
191
- end
192
-
193
- it 'returns itself' do
194
- returned_value = ast.each_descendent_node {}
195
- returned_value.should be(ast)
196
- end
197
- end
198
-
199
- context 'when no block is given' do
200
- it 'returns enumerator' do
201
- ast.each_descendent_node.should be_a(Enumerator)
202
- end
203
-
204
- describe 'the returned enumerator' do
205
- it 'enumerates the child nodes' do
206
- enumerator = ast.each_descendent_node
207
-
208
- expected_types.each do |expected_type|
209
- enumerator.next.type.should == expected_type
210
- end
211
- end
212
- end
213
- end
214
- end
215
-
216
- describe '#descendent_nodes' do
217
- include_context 'descendent nodes'
218
-
219
- it 'returns an array' do
220
- ast.descendent_nodes.should be_an(Array)
221
- end
222
-
223
- it 'returns same nodes as #each_descendent_node' do
224
- types = ast.descendent_nodes.map(&:type)
225
- types.should == expected_types
226
- end
227
- end
228
-
229
- describe '#each_node' do
230
- let(:expected_types) do
231
- [:def, :args, :arg, :arg, :block, :send, :int, :args, :send, :lvar]
232
- end
233
-
234
- context 'when a block is given' do
235
- it 'yields itself and each descendent node with depth first order' do
236
- index = 0
237
-
238
- ast.each_node do |node|
239
- expected_type = expected_types[index]
240
- node.type.should == expected_type
241
- index += 1
242
- end
243
-
244
- index.should_not == 0
245
- end
246
-
247
- it 'returns itself' do
248
- returned_value = ast.each_node {}
249
- returned_value.should be(ast)
250
- end
251
- end
252
-
253
- context 'when no block is given' do
254
- it 'returns enumerator' do
255
- ast.each_node.should be_a(Enumerator)
256
- end
257
-
258
- describe 'the returned enumerator' do
259
- it 'enumerates the child nodes' do
260
- enumerator = ast.each_node
261
-
262
- expected_types.each do |expected_type|
263
- enumerator.next.type.should == expected_type
264
- end
265
- end
266
- end
267
- end
268
- end
269
-
270
- describe '#send_type?' do
271
- context 'when the node is send type' do
272
- let(:source) do
273
- <<-END
274
- do_something
275
- END
276
- end
277
-
278
- it 'returns true' do
279
- ast.send_type?.should be_true
280
- end
281
- end
282
-
283
- context 'when the node is not send type' do
284
- let(:source) do
285
- <<-END
286
- foo = 1
287
- END
288
- end
289
-
290
- it 'returns false' do
291
- ast.send_type?.should be_false
292
- end
293
- end
294
- end
295
-
296
- describe '#defined_type?' do
297
- context 'when the node is defined? type' do
298
- let(:source) do
299
- <<-END
300
- defined?(Foo)
301
- END
302
- end
303
-
304
- it 'returns true' do
305
- ast.defined_type?.should be_true
306
- end
307
- end
308
-
309
- context 'when the node is not defined? type' do
310
- let(:source) do
311
- <<-END
312
- foo = 1
313
- END
314
- end
315
-
316
- it 'returns false' do
317
- ast.defined_type?.should be_false
318
- end
319
- end
320
- end
321
- end
322
- end
323
- end