transpec 2.3.6 → 2.3.7
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/.rubocop.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +6 -1
- data/README.md.erb +6 -1
- data/lib/transpec/dynamic_analyzer.rb +1 -6
- data/lib/transpec/dynamic_analyzer/constants.rb +11 -0
- data/lib/transpec/dynamic_analyzer/rewriter.rb +1 -1
- data/lib/transpec/dynamic_analyzer/runtime_data.rb +1 -0
- data/lib/transpec/option_parser.rb +3 -2
- data/lib/transpec/{file_finder.rb → spec_file_finder.rb} +1 -1
- data/lib/transpec/spec_suite.rb +2 -2
- data/lib/transpec/static_context_inspector.rb +11 -4
- data/lib/transpec/version.rb +1 -1
- data/spec/transpec/{file_finder_spec.rb → spec_file_finder_spec.rb} +8 -8
- data/spec/transpec/static_context_inspector_spec.rb +8 -0
- data/spec/transpec/syntax/example_group_spec.rb +27 -0
- data/transpec.gemspec +1 -1
- metadata +10 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ce681149f6777fb46a239bcee88f92b42523600
|
4
|
+
data.tar.gz: 1536c4975b64ec6168e53ec1dffd4b315abe329e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5d797314a4304bf65be434947f3408cdeccb68379ce7696539854788b4f92cede514bed025c5d8f1876302b5535a2987186d136ca3c357f923f064c2bdd24a6
|
7
|
+
data.tar.gz: cd41e8284cb963cfd971fb64b05d5ca6988b406da92836ab6719ee675c3b955a47843edcb7a45b83a0399896218b90cbdb3d21ddb5a20169795f3c2de30d4b7d
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## Development
|
4
4
|
|
5
|
+
## v2.3.7
|
6
|
+
|
7
|
+
* Fix a bug where nested example groups in `RSpec.describe` are wrongly converted to non-monkey-patch form when dynamic analysis is skipped. ([#89](https://github.com/yujinakayama/transpec/issues/89))
|
8
|
+
|
5
9
|
## v2.3.6
|
6
10
|
|
7
11
|
* Fix error `Unresolved dependency found during sorting - parser` on `gem install transpec`.
|
data/README.md
CHANGED
@@ -292,7 +292,12 @@ See [Supported Conversions - Method stubs with a hash argument](#method-stubs-wi
|
|
292
292
|
|
293
293
|
### `-s/--skip-dynamic-analysis`
|
294
294
|
|
295
|
-
Skip dynamic analysis and convert with only static analysis.
|
295
|
+
Skip dynamic analysis and convert with only static analysis.
|
296
|
+
The use of this option is basically **discouraged**
|
297
|
+
since it significantly decreases the overall conversion accuracy.
|
298
|
+
|
299
|
+
This would be useful only if your spec suite takes really long (like an hour) to run
|
300
|
+
and you prefer a combination of the rough but fast conversion by Transpec and manual fixes after that.
|
296
301
|
|
297
302
|
### `-n/--negative-form`
|
298
303
|
|
data/README.md.erb
CHANGED
@@ -280,7 +280,12 @@ See [Supported Conversions - Method stubs with a hash argument](#method-stubs-wi
|
|
280
280
|
|
281
281
|
### `-s/--skip-dynamic-analysis`
|
282
282
|
|
283
|
-
Skip dynamic analysis and convert with only static analysis.
|
283
|
+
Skip dynamic analysis and convert with only static analysis.
|
284
|
+
The use of this option is basically **discouraged**
|
285
|
+
since it significantly decreases the overall conversion accuracy.
|
286
|
+
|
287
|
+
This would be useful only if your spec suite takes really long (like an hour) to run
|
288
|
+
and you prefer a combination of the rough but fast conversion by Transpec and manual fixes after that.
|
284
289
|
|
285
290
|
### `-n/--negative-form`
|
286
291
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
+
require 'transpec/dynamic_analyzer/constants'
|
3
4
|
require 'transpec/dynamic_analyzer/rewriter'
|
4
5
|
require 'transpec/dynamic_analyzer/runtime_data'
|
5
6
|
require 'transpec/directory_cloner'
|
@@ -12,12 +13,6 @@ require 'English'
|
|
12
13
|
|
13
14
|
module Transpec
|
14
15
|
class DynamicAnalyzer
|
15
|
-
ANALYSIS_MODULE = 'Transpec'
|
16
|
-
ANALYSIS_METHOD = 'analyze'
|
17
|
-
RUNTIME_DATA_ERROR_MESSAGE_KEY = :error_message
|
18
|
-
HELPER_TEMPLATE_FILE = 'transpec_analysis_helper.rb.erb'
|
19
|
-
RESULT_FILE = 'transpec_analysis_result.json'
|
20
|
-
|
21
16
|
attr_reader :project, :rspec_command, :silent
|
22
17
|
alias_method :silent?, :silent
|
23
18
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Transpec
|
4
|
+
class DynamicAnalyzer
|
5
|
+
ANALYSIS_MODULE = 'Transpec'
|
6
|
+
ANALYSIS_METHOD = 'analyze'
|
7
|
+
RUNTIME_DATA_ERROR_MESSAGE_KEY = :error_message
|
8
|
+
HELPER_TEMPLATE_FILE = 'transpec_analysis_helper.rb.erb'
|
9
|
+
RESULT_FILE = 'transpec_analysis_result.json'
|
10
|
+
end
|
11
|
+
end
|
@@ -129,8 +129,9 @@ module Transpec
|
|
129
129
|
'Force processing even if the current Git repository is not clean.'
|
130
130
|
],
|
131
131
|
'-s' => [
|
132
|
-
'Skip dynamic analysis and convert with only static analysis.
|
133
|
-
'
|
132
|
+
'Skip dynamic analysis and convert with only static analysis. The',
|
133
|
+
'use of this option is basically *discouraged* since it',
|
134
|
+
'significantly decreases the overall conversion accuracy.'
|
134
135
|
],
|
135
136
|
'-c' => [
|
136
137
|
'Specify a command to run your specs that is used for dynamic',
|
data/lib/transpec/spec_suite.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
require 'transpec/file_finder'
|
4
3
|
require 'transpec/processed_source'
|
4
|
+
require 'transpec/spec_file_finder'
|
5
5
|
require 'transpec/syntax'
|
6
6
|
|
7
7
|
Transpec::Syntax.require_all
|
@@ -19,7 +19,7 @@ module Transpec
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def specs
|
22
|
-
@specs ||=
|
22
|
+
@specs ||= SpecFileFinder.find(@base_paths).map do |path|
|
23
23
|
ProcessedSource.from_file(path)
|
24
24
|
end
|
25
25
|
end
|
@@ -68,7 +68,7 @@ module Transpec
|
|
68
68
|
def valid_ancestor_nodes
|
69
69
|
valid_nodes = []
|
70
70
|
|
71
|
-
self_and_ancestor_nodes = [node] + node.
|
71
|
+
self_and_ancestor_nodes = [node] + node.ancestors
|
72
72
|
|
73
73
|
self_and_ancestor_nodes.each_cons(2) do |child, parent|
|
74
74
|
valid_nodes << parent unless belong_to_direct_outer_scope?(child)
|
@@ -101,12 +101,19 @@ module Transpec
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
-
def special_block_type(block_node)
|
104
|
+
def special_block_type(block_node) # rubocop:disable MethodLength, CyclomaticComplexity
|
105
105
|
send_node = block_node.children.first
|
106
106
|
receiver_node, method_name, *_ = *send_node
|
107
107
|
|
108
|
-
if const_name(receiver_node) == 'RSpec'
|
109
|
-
|
108
|
+
if const_name(receiver_node) == 'RSpec'
|
109
|
+
case method_name
|
110
|
+
when :configure
|
111
|
+
:rspec_configure
|
112
|
+
when *EXAMPLE_GROUP_METHODS
|
113
|
+
:example_group
|
114
|
+
else
|
115
|
+
nil
|
116
|
+
end
|
110
117
|
elsif HOOK_METHODS.include?(method_name)
|
111
118
|
hook_type(send_node)
|
112
119
|
elsif receiver_node
|
data/lib/transpec/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
|
-
require 'transpec/
|
4
|
+
require 'transpec/spec_file_finder'
|
5
5
|
|
6
6
|
module Transpec
|
7
|
-
describe
|
7
|
+
describe SpecFileFinder do
|
8
8
|
include FileHelper
|
9
9
|
|
10
10
|
describe '.find' do
|
@@ -16,7 +16,7 @@ module Transpec
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
subject {
|
19
|
+
subject { SpecFileFinder.find(paths) }
|
20
20
|
|
21
21
|
context 'when no path is passed' do
|
22
22
|
let(:paths) { [] }
|
@@ -33,7 +33,7 @@ module Transpec
|
|
33
33
|
|
34
34
|
context 'and there is not "spec" directory' do
|
35
35
|
it 'raises error' do
|
36
|
-
-> {
|
36
|
+
-> { SpecFileFinder.find(paths) }.should raise_error(ArgumentError)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -58,7 +58,7 @@ module Transpec
|
|
58
58
|
let(:paths) { ['non-existent-file'] }
|
59
59
|
|
60
60
|
it 'raises error' do
|
61
|
-
-> {
|
61
|
+
-> { SpecFileFinder.find(paths) }.should raise_error(ArgumentError) { |error|
|
62
62
|
error.message.should == 'No such file or directory "non-existent-file"'
|
63
63
|
}
|
64
64
|
end
|
@@ -76,7 +76,7 @@ module Transpec
|
|
76
76
|
describe '.base_paths' do
|
77
77
|
include_context 'isolated environment'
|
78
78
|
|
79
|
-
subject {
|
79
|
+
subject { SpecFileFinder.base_paths(paths) }
|
80
80
|
|
81
81
|
context 'when target paths are specified' do
|
82
82
|
let(:paths) { ['foo_spec.rb', 'spec/bar_spec.rb'] }
|
@@ -90,7 +90,7 @@ module Transpec
|
|
90
90
|
let(:paths) { ['../foo_spec.rb', 'spec/bar_spec.rb'] }
|
91
91
|
|
92
92
|
it 'raises error' do
|
93
|
-
-> {
|
93
|
+
-> { SpecFileFinder.base_paths(paths) }.should raise_error(ArgumentError)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -109,7 +109,7 @@ module Transpec
|
|
109
109
|
|
110
110
|
context 'and there is not "spec" directory' do
|
111
111
|
it 'raises error' do
|
112
|
-
-> {
|
112
|
+
-> { SpecFileFinder.base_paths(paths) }.should raise_error(ArgumentError)
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
@@ -49,6 +49,10 @@ module Transpec
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
RSpec.describe 'something' do
|
53
|
+
in_rspec_describe
|
54
|
+
end
|
55
|
+
|
52
56
|
feature 'Capybara DSL' do
|
53
57
|
background do
|
54
58
|
in_background
|
@@ -118,6 +122,10 @@ module Transpec
|
|
118
122
|
'send nil :in_block',
|
119
123
|
'in normal block in #describe in module',
|
120
124
|
[:module]
|
125
|
+
], [
|
126
|
+
'send nil :in_rspec_describe',
|
127
|
+
'in RSpec.describe',
|
128
|
+
[:example_group]
|
121
129
|
], [
|
122
130
|
'send nil :in_background',
|
123
131
|
'in #background block in #feature',
|
@@ -126,6 +126,33 @@ module Transpec
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
+
context 'when the #describe is in another RSpec.describe' do
|
130
|
+
include_context 'multiple #describes'
|
131
|
+
|
132
|
+
let(:source) do
|
133
|
+
<<-END
|
134
|
+
RSpec.describe 'something' do
|
135
|
+
describe '#some_method' do
|
136
|
+
end
|
137
|
+
end
|
138
|
+
END
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'without runtime information' do
|
142
|
+
it 'does nothing' do
|
143
|
+
rewritten_source.should == source
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
context 'with runtime information' do
|
148
|
+
include_context 'dynamic analysis objects'
|
149
|
+
|
150
|
+
it 'does nothing' do
|
151
|
+
rewritten_source.should == source
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
129
156
|
context 'when logical-inner #describe is placed outside of the outer #describe in source' do
|
130
157
|
include_context 'multiple #describes'
|
131
158
|
|
data/transpec.gemspec
CHANGED
@@ -23,7 +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.2.0.pre.3', '< 3.0'
|
26
|
-
spec.add_runtime_dependency 'astrolabe', '
|
26
|
+
spec.add_runtime_dependency 'astrolabe', '~> 1.2'
|
27
27
|
spec.add_runtime_dependency 'bundler', '~> 1.3'
|
28
28
|
spec.add_runtime_dependency 'rainbow', '>= 1.99.1', '< 3.0'
|
29
29
|
spec.add_runtime_dependency 'json', '~> 1.8'
|
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.
|
4
|
+
version: 2.3.7
|
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-
|
11
|
+
date: 2014-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -34,22 +34,16 @@ dependencies:
|
|
34
34
|
name: astrolabe
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0.6'
|
40
|
-
- - "<"
|
37
|
+
- - "~>"
|
41
38
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
39
|
+
version: '1.2'
|
43
40
|
type: :runtime
|
44
41
|
prerelease: false
|
45
42
|
version_requirements: !ruby/object:Gem::Requirement
|
46
43
|
requirements:
|
47
|
-
- - "
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0.6'
|
50
|
-
- - "<"
|
44
|
+
- - "~>"
|
51
45
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
46
|
+
version: '1.2'
|
53
47
|
- !ruby/object:Gem::Dependency
|
54
48
|
name: bundler
|
55
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -283,11 +277,11 @@ files:
|
|
283
277
|
- lib/transpec/converter.rb
|
284
278
|
- lib/transpec/directory_cloner.rb
|
285
279
|
- lib/transpec/dynamic_analyzer.rb
|
280
|
+
- lib/transpec/dynamic_analyzer/constants.rb
|
286
281
|
- lib/transpec/dynamic_analyzer/node_util.rb
|
287
282
|
- lib/transpec/dynamic_analyzer/rewriter.rb
|
288
283
|
- lib/transpec/dynamic_analyzer/runtime_data.rb
|
289
284
|
- lib/transpec/dynamic_analyzer/transpec_analysis_helper.rb.erb
|
290
|
-
- lib/transpec/file_finder.rb
|
291
285
|
- lib/transpec/git.rb
|
292
286
|
- lib/transpec/option_parser.rb
|
293
287
|
- lib/transpec/processed_source.rb
|
@@ -296,6 +290,7 @@ files:
|
|
296
290
|
- lib/transpec/report.rb
|
297
291
|
- lib/transpec/rspec_dsl.rb
|
298
292
|
- lib/transpec/rspec_version.rb
|
293
|
+
- lib/transpec/spec_file_finder.rb
|
299
294
|
- lib/transpec/spec_suite.rb
|
300
295
|
- lib/transpec/static_context_inspector.rb
|
301
296
|
- lib/transpec/syntax.rb
|
@@ -360,7 +355,6 @@ files:
|
|
360
355
|
- spec/transpec/directory_cloner_spec.rb
|
361
356
|
- spec/transpec/dynamic_analyzer/rewriter_spec.rb
|
362
357
|
- spec/transpec/dynamic_analyzer_spec.rb
|
363
|
-
- spec/transpec/file_finder_spec.rb
|
364
358
|
- spec/transpec/git_spec.rb
|
365
359
|
- spec/transpec/option_parser_spec.rb
|
366
360
|
- spec/transpec/processed_source_spec.rb
|
@@ -368,6 +362,7 @@ files:
|
|
368
362
|
- spec/transpec/record_spec.rb
|
369
363
|
- spec/transpec/report_spec.rb
|
370
364
|
- spec/transpec/rspec_version_spec.rb
|
365
|
+
- spec/transpec/spec_file_finder_spec.rb
|
371
366
|
- spec/transpec/spec_suite_spec.rb
|
372
367
|
- spec/transpec/static_context_inspector_spec.rb
|
373
368
|
- spec/transpec/syntax/allow_spec.rb
|
@@ -444,7 +439,6 @@ test_files:
|
|
444
439
|
- spec/transpec/directory_cloner_spec.rb
|
445
440
|
- spec/transpec/dynamic_analyzer/rewriter_spec.rb
|
446
441
|
- spec/transpec/dynamic_analyzer_spec.rb
|
447
|
-
- spec/transpec/file_finder_spec.rb
|
448
442
|
- spec/transpec/git_spec.rb
|
449
443
|
- spec/transpec/option_parser_spec.rb
|
450
444
|
- spec/transpec/processed_source_spec.rb
|
@@ -452,6 +446,7 @@ test_files:
|
|
452
446
|
- spec/transpec/record_spec.rb
|
453
447
|
- spec/transpec/report_spec.rb
|
454
448
|
- spec/transpec/rspec_version_spec.rb
|
449
|
+
- spec/transpec/spec_file_finder_spec.rb
|
455
450
|
- spec/transpec/spec_suite_spec.rb
|
456
451
|
- spec/transpec/static_context_inspector_spec.rb
|
457
452
|
- spec/transpec/syntax/allow_spec.rb
|