transpec 1.13.0 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -3
- data/CHANGELOG.md +5 -0
- data/lib/transpec/dynamic_analyzer/rewriter.rb +3 -1
- data/lib/transpec/syntax/mixin/useless_and_return.rb +7 -2
- data/lib/transpec/syntax/rspec_configure.rb +1 -1
- data/lib/transpec/version.rb +1 -1
- data/spec/transpec/dynamic_analyzer/rewriter_spec.rb +33 -12
- data/spec/transpec/syntax/method_stub_spec.rb +56 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb62942d4b92b4b76ee2e2a74d1287ea3a54e8fb
|
4
|
+
data.tar.gz: 72298e837998e51fcb53877389d9d407f302c3dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8541244f475226a74a364370e379a1c188d173e0813553e04c96f419fd805247c30703abdba3dab20db9ba92f56f48e3720ff04f99c871a67bdb306b39883249
|
7
|
+
data.tar.gz: 9f906de970f67fd2638fb26103ac8ceea32fffeb940b2fcc271c51b7a1662e9920993c70e7c1c4b1f4efd671c78b6bf3b400f884cc0037b86f8871bd46601b8a
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Development
|
4
4
|
|
5
|
+
## v1.13.1
|
6
|
+
|
7
|
+
* Fix a bug where multiline expression `expect(obj).to receive(:message)\n.and_return { value }` was converted to `expect(obj).to.receive(:message)\n { value }` and the block was interpreted as a hash literal. ([#60](https://github.com/yujinakayama/transpec/issues/60))
|
8
|
+
* Fix a bug where dynamic analysis were not run partially when there are same structure nodes in an AST with `ast` gem 2.0.
|
9
|
+
|
5
10
|
## v1.13.0
|
6
11
|
|
7
12
|
* Improve the conversion performance.
|
@@ -13,8 +13,6 @@ module Transpec
|
|
13
13
|
|
14
14
|
def remove_useless_and_return!
|
15
15
|
return unless useless_and_return?
|
16
|
-
map = and_return_node.loc
|
17
|
-
and_return_range = map.dot.join(map.expression.end)
|
18
16
|
remove(and_return_range)
|
19
17
|
true
|
20
18
|
end
|
@@ -43,6 +41,13 @@ module Transpec
|
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
44
|
+
private
|
45
|
+
|
46
|
+
def and_return_range
|
47
|
+
receiver_node = and_return_node.children.first
|
48
|
+
receiver_node.loc.expression.end.join(and_return_node.loc.expression.end)
|
49
|
+
end
|
50
|
+
|
46
51
|
class UselessAndReturnRecord < Record
|
47
52
|
def initialize(host, *)
|
48
53
|
@host = host
|
@@ -15,7 +15,7 @@ module Transpec
|
|
15
15
|
|
16
16
|
define_dynamic_analysis do |rewriter|
|
17
17
|
code = "TranspecAnalysis.global_data[:rspec_configure_run_order] ||= 0\n" \
|
18
|
-
|
18
|
+
'TranspecAnalysis.global_data[:rspec_configure_run_order] += 1'
|
19
19
|
rewriter.register_request(node, :run_order, code)
|
20
20
|
end
|
21
21
|
|
data/lib/transpec/version.rb
CHANGED
@@ -97,24 +97,45 @@ module Transpec
|
|
97
97
|
end
|
98
98
|
|
99
99
|
describe '#register_request' do
|
100
|
-
|
101
|
-
|
100
|
+
include_context 'parsed objects'
|
101
|
+
|
102
|
+
let(:source) do
|
103
|
+
<<-END
|
104
|
+
1
|
105
|
+
2
|
106
|
+
END
|
107
|
+
end
|
108
|
+
|
109
|
+
let(:a_node) { ast.children[0] }
|
110
|
+
let(:another_node) { ast.children[1] }
|
102
111
|
|
103
112
|
it 'stores requests for each node' do
|
104
|
-
rewriter.register_request(
|
113
|
+
rewriter.register_request(a_node, :odd, 'odd?', :object)
|
105
114
|
rewriter.register_request(another_node, :even, 'even?', :object)
|
106
|
-
rewriter.requests.should == {
|
107
|
-
|
108
|
-
another_node => { even: [:object, 'even?'] }
|
109
|
-
}
|
115
|
+
rewriter.requests[a_node].should == { odd: [:object, 'odd?'] }
|
116
|
+
rewriter.requests[another_node].should == { even: [:object, 'even?'] }
|
110
117
|
end
|
111
118
|
|
112
119
|
it 'merges multiple requests for same node' do
|
113
|
-
rewriter.register_request(
|
114
|
-
rewriter.register_request(
|
115
|
-
rewriter.requests.should == {
|
116
|
-
|
117
|
-
|
120
|
+
rewriter.register_request(a_node, :odd, 'odd?', :object)
|
121
|
+
rewriter.register_request(a_node, :even, 'even?', :object)
|
122
|
+
rewriter.requests[a_node].should == { odd: [:object, 'odd?'], even: [:object, 'even?'] }
|
123
|
+
end
|
124
|
+
|
125
|
+
context 'when there are same structure nodes but they are not identical objects' do
|
126
|
+
let(:source) do
|
127
|
+
<<-END
|
128
|
+
1
|
129
|
+
1
|
130
|
+
END
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'properly diffrenciate them' do
|
134
|
+
rewriter.register_request(a_node, :odd, 'odd?', :object)
|
135
|
+
rewriter.register_request(another_node, :even, 'even?', :object)
|
136
|
+
rewriter.requests[a_node].should == { odd: [:object, 'odd?'] }
|
137
|
+
rewriter.requests[another_node].should == { even: [:object, 'even?'] }
|
138
|
+
end
|
118
139
|
end
|
119
140
|
end
|
120
141
|
end
|
@@ -1132,6 +1132,62 @@ module Transpec
|
|
1132
1132
|
end
|
1133
1133
|
end
|
1134
1134
|
|
1135
|
+
context 'with multiline expression `obj.stub(:message)\n.and_return { value }`' do
|
1136
|
+
let(:source) do
|
1137
|
+
<<-END
|
1138
|
+
describe 'example' do
|
1139
|
+
it 'responds to #foo and returns 1' do
|
1140
|
+
subject.stub(:foo)
|
1141
|
+
.and_return { 1 }
|
1142
|
+
end
|
1143
|
+
end
|
1144
|
+
END
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
let(:expected_source) do
|
1148
|
+
<<-END
|
1149
|
+
describe 'example' do
|
1150
|
+
it 'responds to #foo and returns 1' do
|
1151
|
+
subject.stub(:foo) { 1 }
|
1152
|
+
end
|
1153
|
+
end
|
1154
|
+
END
|
1155
|
+
end
|
1156
|
+
|
1157
|
+
it 'converts to `obj.stub(:message) { value }` form' \
|
1158
|
+
'while preventing the block from being interpreted as a hash' do
|
1159
|
+
rewritten_source.should == expected_source
|
1160
|
+
end
|
1161
|
+
end
|
1162
|
+
|
1163
|
+
context 'with multiline expression `obj.stub(:message).\nand_return { value }`' do
|
1164
|
+
let(:source) do
|
1165
|
+
<<-END
|
1166
|
+
describe 'example' do
|
1167
|
+
it 'responds to #foo and returns 1' do
|
1168
|
+
subject.stub(:foo).
|
1169
|
+
and_return { 1 }
|
1170
|
+
end
|
1171
|
+
end
|
1172
|
+
END
|
1173
|
+
end
|
1174
|
+
|
1175
|
+
let(:expected_source) do
|
1176
|
+
<<-END
|
1177
|
+
describe 'example' do
|
1178
|
+
it 'responds to #foo and returns 1' do
|
1179
|
+
subject.stub(:foo) { 1 }
|
1180
|
+
end
|
1181
|
+
end
|
1182
|
+
END
|
1183
|
+
end
|
1184
|
+
|
1185
|
+
it 'converts to `obj.stub(:message) { value }` form' \
|
1186
|
+
'while preventing the block from being interpreted as a hash' do
|
1187
|
+
rewritten_source.should == expected_source
|
1188
|
+
end
|
1189
|
+
end
|
1190
|
+
|
1135
1191
|
context 'with expression `obj.stub(:message).and_return`' do
|
1136
1192
|
let(:source) do
|
1137
1193
|
<<-END
|
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: 1.13.
|
4
|
+
version: 1.13.1
|
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-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|