rails5-spec-converter 1.0.5 → 1.0.6
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/README.md +2 -0
- data/lib/rails5/spec_converter/cli.rb +6 -0
- data/lib/rails5/spec_converter/text_transformer.rb +39 -10
- data/lib/rails5/spec_converter/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75759003b02014251aae8a73ba90520b0e449412
|
4
|
+
data.tar.gz: 90d16a171d1f9b20561f213611f34f0e6c7720dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81753ebe7dd82067d0972ed3457f152f4461df3fc934573a3befbbb5dfe81d8481142f2f6ca21cf7900ce6101f39e870843e64e282ff46a59c8859b3e6557d64
|
7
|
+
data.tar.gz: 3a5e61d1fa027f4cba47220ba0b54222c0df770e655f586eaa89a59d88c864ecb3ac7ad7b5163e34c472588662ceb1031c553f4650963d0636997d93feb41893
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Rails5::SpecConverter
|
2
2
|
|
3
|
+
[](https://travis-ci.org/tjgrathwell/rails5-spec-converter)
|
4
|
+
|
3
5
|
A script that fixes the syntax of your tests so Rails 5 will like them better. Inspired by [transpec](https://github.com/yujinakayama/transpec), the RSpec 2 -> 3 syntax conversion tool.
|
4
6
|
|
5
7
|
If you write a test like this:
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rails5/spec_converter/text_transformer'
|
2
|
+
require 'rails5/spec_converter/version'
|
2
3
|
require 'optparse'
|
3
4
|
|
4
5
|
module Rails5
|
@@ -9,6 +10,11 @@ module Rails5
|
|
9
10
|
OptionParser.new do |opts|
|
10
11
|
opts.banner = "Usage: rails5-spec-converter [options] [files]"
|
11
12
|
|
13
|
+
opts.on("--version", "Print version number") do |q|
|
14
|
+
puts Rails5::SpecConverter::VERSION
|
15
|
+
exit
|
16
|
+
end
|
17
|
+
|
12
18
|
opts.on("-q", "--quiet", "Run quietly") do |q|
|
13
19
|
@options[:quiet] = q
|
14
20
|
end
|
@@ -95,7 +95,23 @@ module Rails5
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
+
def indent_before_first_pair(hash_node)
|
99
|
+
return nil unless hash_node.children.length > 0
|
100
|
+
|
101
|
+
text_before_first_pair = @content[hash_node.loc.expression.begin_pos...hash_node.children.first.loc.expression.begin_pos]
|
102
|
+
extract_indent(text_before_first_pair)
|
103
|
+
end
|
104
|
+
|
105
|
+
def indent_after_last_pair(hash_node)
|
106
|
+
return nil unless hash_node.children.length > 0
|
107
|
+
|
108
|
+
text_after_last_pair = @content[hash_node.children.last.loc.expression.begin_pos...hash_node.loc.expression.end_pos]
|
109
|
+
extract_indent(text_after_last_pair)
|
110
|
+
end
|
111
|
+
|
98
112
|
def additional_indent(hash_node)
|
113
|
+
return nil if indent_before_first_pair(hash_node)
|
114
|
+
|
99
115
|
joiner = joiner_between_pairs(hash_node)
|
100
116
|
joiner && joiner.include?("\n") ? @indent : nil
|
101
117
|
end
|
@@ -103,12 +119,13 @@ module Rails5
|
|
103
119
|
def existing_indent(hash_node)
|
104
120
|
previous_sibling = hash_node.parent.children[hash_node.sibling_index - 1]
|
105
121
|
text_before_hash = text_between_siblings(previous_sibling, hash_node)
|
106
|
-
|
107
|
-
return
|
122
|
+
whitespace_indent = extract_indent(text_before_hash)
|
123
|
+
return whitespace_indent if whitespace_indent
|
124
|
+
|
125
|
+
return indent_before_first_pair(hash_node) if indent_before_first_pair(hash_node)
|
108
126
|
|
109
127
|
joiner = joiner_between_pairs(hash_node)
|
110
|
-
|
111
|
-
return pair_joiner_match[1] if pair_joiner_match
|
128
|
+
extract_indent(joiner)
|
112
129
|
end
|
113
130
|
|
114
131
|
def has_space_after_curly?(hash_node)
|
@@ -133,11 +150,16 @@ module Rails5
|
|
133
150
|
end
|
134
151
|
|
135
152
|
def appropriately_spaced_params_hash(hash_node:, pairs:)
|
136
|
-
|
137
|
-
|
138
|
-
if
|
139
|
-
|
140
|
-
|
153
|
+
inner_indent = additional_indent(hash_node)
|
154
|
+
|
155
|
+
if inner_indent || indent_before_first_pair(hash_node)
|
156
|
+
outer_indent = existing_indent(hash_node)
|
157
|
+
restrung_hash = restring_hash(
|
158
|
+
pairs,
|
159
|
+
indent: outer_indent + (inner_indent || ''),
|
160
|
+
joiner: ",\n"
|
161
|
+
)
|
162
|
+
"{\n#{restrung_hash}\n#{indent_after_last_pair(hash_node) || outer_indent}}"
|
141
163
|
else
|
142
164
|
curly_sep = has_space_after_curly?(hash_node) ? '' : ' '
|
143
165
|
"{#{curly_sep}#{restring_hash(pairs)}#{curly_sep}}"
|
@@ -147,7 +169,7 @@ module Rails5
|
|
147
169
|
def wrap_arg(source_rewriter, node, key)
|
148
170
|
node_loc = node.loc.expression
|
149
171
|
node_source = node_loc.source
|
150
|
-
if node.hash_type? && !node_source.match(/^\s*\{.*\}$/)
|
172
|
+
if node.hash_type? && !node_source.match(/^\s*\{.*\}$/m)
|
151
173
|
node_source = "{ #{node_source} }"
|
152
174
|
end
|
153
175
|
source_rewriter.replace(node_loc, "#{key}: #{node_source}")
|
@@ -157,6 +179,13 @@ module Rails5
|
|
157
179
|
pairs.map { |pair| "#{indent}#{pair.loc.expression.source}" }.join(joiner)
|
158
180
|
end
|
159
181
|
|
182
|
+
def extract_indent(str)
|
183
|
+
return unless str
|
184
|
+
|
185
|
+
match = str.match("\n(\s*)")
|
186
|
+
match[1] if match
|
187
|
+
end
|
188
|
+
|
160
189
|
def log(str)
|
161
190
|
return if @quiet
|
162
191
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails5-spec-converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Grathwell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -139,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
142
|
+
rubygems_version: 2.5.1
|
143
143
|
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: A tool to upgrade Rails 4-style specs to Rails 5-style
|
146
146
|
test_files: []
|
147
|
-
has_rdoc:
|