transpec 2.3.1 → 2.3.2

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.
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