transpec 1.13.0 → 1.13.1
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 -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
|