r2m 0.2.2 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 503c7c4d167a93d9ab4e6cdc6ca79954e6069e0fd19057d299f8ea7246af1f4d
4
- data.tar.gz: c902939ee55bc510b05dd89f4518654b38299dce0a26c0f8e565a3faab69acb9
3
+ metadata.gz: 39cf102836307d757425f6c28d74674bb77001f61f7506ef1babf56b531f0405
4
+ data.tar.gz: a481c0b6dd240ea5f908d6481f8cdef1b61fa748bdf83d3c526890b0be9be894
5
5
  SHA512:
6
- metadata.gz: '048f7dbdf9e279ab9bba516b66a57b5fce3faf108d9e4b0eef140c6a7131a2ba961fae58181c693055ec4cffd09acb3751da4c2dffe9527e66748572c67cf2aa'
7
- data.tar.gz: 4ed428ef6032d856d2f0db3b95673d67b5473c08a8ffed490922f703854f21a86bc10d254f1bdc4930c81a2f93a653787d1d26c35e870339f6144fd205b58ba2
6
+ metadata.gz: 26b7a0da0e111484d6fcd55954c9d8efbccfc223279a220abe81b0438225fc868335051e2d77e78542ad8126d75115712a67cf156c927ed9f9402e284c889c84
7
+ data.tar.gz: 3db7a67f1bbfef5c88e1a95e942b0b93e37230c9417334a78c56d3fdaacf063c234db93389b17b59feb28ac275c344bc788ca80c7989ee883f091903635e62fd
data/Gemfile CHANGED
@@ -5,3 +5,7 @@ gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
7
  gem "minitest", "~> 5.0"
8
+
9
+ gem 'rspec'
10
+ gem 'minitest-around'
11
+ gem 'minitest-spec-rails'
data/exe/rspec2minitest CHANGED
@@ -6,14 +6,20 @@ cp -a $tests_path test/
6
6
 
7
7
  tests_path=test/$(basename $tests_path)
8
8
 
9
+ # require helpers
9
10
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/system_helper/application_system_test_case/g' {} \;
10
11
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/rails_helper/test_helper/g' {} \;
11
12
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/spec_helper/test_helper/g' {} \;
13
+
12
14
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/context/describe/g' {} \;
15
+
16
+ # mocks
13
17
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/stub(/stubs(/g' {} \;
14
18
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/double/stub/g' {} \;
15
19
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/should_receive/expects/g' {} \;
16
20
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/and_return/returns/g' {} \;
21
+
22
+ # matchers
17
23
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to be ==/.must_equal/g' {} \;
18
24
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to be_empty/.must_be_empty/g' {} \;
19
25
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to_not be_empty/.wont_be_empty/g' {} \;
@@ -24,21 +30,29 @@ find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to_not be_nil/.wont_be_ni
24
30
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.not_to be_an_\(.*\)/.wont_be :\1\?/g' {} \;
25
31
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_a(/.must_be_kind_of(/g' {} \;
26
32
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_an(/.must_be_kind_of(/g' {} \;
33
+
27
34
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_an_\(.*\)/.must_be :\1\?/g' {} \;
35
+ find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_\(.*\)/.must_be :\1\?/g' {} \;
28
36
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to_not be_\(.*\)/.wont_be :\1\?/g' {} \;
29
37
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.not_to be_\(.*\)/.wont_be :\1\?/g' {} \;
30
- find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_\(.*\)/.must_be :\1\?/g' {} \;
38
+
31
39
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to be_nil/.must_be_nil/g' {} \;
40
+
32
41
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to eq/.must_equal/g' {} \;
33
42
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.not_to eq/.wont_equal/g' {} \;
34
43
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to_not eq/.wont_equal/g' {} \;
44
+
35
45
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.not_to include/.wont_include/g' {} \;
36
46
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to_not include/.wont_include/g' {} \;
37
47
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to include/.must_include/g' {} \;
48
+
49
+ find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to match/.must_match/g' {} \;
50
+
38
51
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/\.to be_kind_of/.must_be_kind_of/g' {} \;
52
+
53
+ # requests
39
54
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/expect(response).to have_http_status/assert_response/g' {} \;
40
55
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to redirect_to/.must_redirect_to/g' {} \;
41
- find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to match/.must_match/g' {} \;
42
56
 
43
57
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to have_content/assert_text/g' {} \;
44
58
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to have_no_content/assert_no_text/g' {} \;
@@ -46,19 +60,18 @@ find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(
46
60
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to have_selector/assert_selector/g' {} \;
47
61
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.not_to have_selector/assert_no_selector/g' {} \;
48
62
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to_not have_selector/assert_no_selector/g' {} \;
63
+ find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to have_checked_field/assert_checked_field/g' {} \;
64
+ find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.not_to have_checked_field/assert_no_checked_field/g' {} \;
65
+ find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to_not have_checked_field/assert_no_checked_field/g' {} \;
49
66
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_content/.must_have_content/g' {} \;
50
67
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.not_to have_content/.wont_have_content/g' {} \;
51
68
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_no_content/.wont_have_content/g' {} \;
52
69
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_field/.must_have_field/g' {} \;
53
- find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to have_checked_field/assert_checked_field/g' {} \;
54
- find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.not_to have_checked_field/assert_no_checked_field/g' {} \;
55
- find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/expect(page)\.to_not have_checked_field/assert_no_checked_field/g' {} \;
56
70
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_link/.must_have_link/g' {} \;
57
71
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_no_link/.wont_have_link/g' {} \;
58
72
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_button/.must_have_button/g' {} \;
59
73
  find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/\.to have_no_button/.wont_have_button/g' {} \;
60
74
 
61
- find $tests_path -name '*_spec.rb' -exec sed -i '' 's/.to match/.must_match/g' {} \;
62
75
 
63
76
  find $tests_path -name '*_spec.rb' -exec sed -i '' "s/expect[ {]/skip('FIXME: NEED TO MIGRATE MANUALLY FROM RSPEC')
64
77
  expect /g" {} \;
@@ -66,21 +79,22 @@ expect /g" {} \;
66
79
 
67
80
  find $tests_path -path '*/helpers/*' -name '*_spec.rb' -exec sed -i '' 's/helper\.//g' {} \;
68
81
 
69
- find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe '"'"'\(.*\)'"'"' do.*/Class.new(ApplicationSystemTestCase) do #\1/g' {} \;
70
- find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/, screenshot: true//g' {} \;
71
-
72
82
  find $tests_path -path '*/controllers/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe \(.*Controller\).*/class \1Test < ActionController::TestCase/g' {} \;
73
83
  find $tests_path -path '*/mailers/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe \(.*Mailer\).*/class \1Test < ActionMailer::TestCase/g' {} \;
74
84
  find $tests_path -path '*/helpers/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe \(.*Helper\).*/class \1Test < ActionView::TestCase/g' {} \;
75
-
76
85
  find $tests_path -path '*/requests/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe '"'"'\(.*\)'"'"' do.*/class \1Test < ActionDispatch::IntegrationTest/g' {} \;
77
86
 
87
+ find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe '"'"'\(.*\)'"'"' do.*/Class.new(ApplicationSystemTestCase) do #\1/g' {} \;
88
+
78
89
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe '"'"'\(.*\)'"'"' do/class \1Test < ActiveSupport::TestCase/g' {} \;
79
90
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/RSpec\.describe \(.*\) do/class \1Test < ActiveSupport::TestCase/g' {} \;
80
91
 
81
92
 
82
93
  find $tests_path -name '*_spec.rb' -exec sed -i '' 's/around do/warn "FIX: AROUND"; around do/g' {} \;
83
94
 
95
+ # other project specific
96
+ #find $tests_path -path '*/system/*' -name '*_spec.rb' -exec sed -i '' 's/, screenshot: true//g' {} \;
97
+
84
98
 
85
99
  rubocop --safe-auto-correct --disable-uncorrectable $tests_path
86
100
 
data/lib/r2m/processor.rb CHANGED
@@ -11,7 +11,14 @@ module R2M
11
11
 
12
12
  def process(file)
13
13
  # it 'converts it"s to test method with # support' do # => def test_converts_it_s_to_test_method_with_support
14
+ convert_require_helpers(file)
15
+ convert_declarations(file)
16
+ convert_declarations(file)
17
+ convert_context_to_describe(file)
14
18
  convert_it_to_methods(file)
19
+ convert_helpers_suites(file)
20
+ convert_mather_be_empty(file)
21
+ convert_simple_matcher(file)
15
22
  end
16
23
 
17
24
  # Finds +it+ cases and converts to test methods declarations
@@ -26,6 +33,22 @@ module R2M
26
33
  @command.gsub_file(file, /it '_?(.*)' do/, 'def test_\1')
27
34
  end
28
35
 
36
+ # Finds +it+ cases and converts to test methods declarations
37
+ #
38
+ # context 'with context' do # => describe 'with context' do
39
+ def convert_context_to_describe(file)
40
+ @command.gsub_file(file, /\bcontext( '.*?' do\b)/, 'describe\1')
41
+ end
42
+
43
+ # Finds +it+ cases and converts to test methods declarations
44
+ #
45
+ # context 'with context' do # => describe 'with context' do
46
+ def convert_require_helpers(file)
47
+ @command.gsub_file(file, /\bsystem_helper\b/, 'application_system_test_case')
48
+ @command.gsub_file(file, /\b(rails_helper|spec_helper)\b/, 'test_helper')
49
+ @command.gsub_file(file, /require (['"]?)rspec\1/, "require 'minitest/autorun'")
50
+ end
51
+
29
52
  # Finds +be_empty+ RSpec matchers and converts to minitest matchers
30
53
  #
31
54
  # expect(target).to be_empty # => expect(target).must_be_empty
@@ -35,5 +58,97 @@ module R2M
35
58
  @command.gsub_file(file, /\.to be_empty/, '.must_be_empty')
36
59
  @command.gsub_file(file, /\.(to_not|not_to) be_empty/, '.wont_be_empty')
37
60
  end
61
+
62
+ # Finds +equal+ RSpec matchers and converts to minitest matchers
63
+ #
64
+ # expect(target).to eq expect # => expect(target).must_equal expect
65
+ # expect(target).not_to eq expect # => expect(target).wont_equal expect
66
+ def convert_simple_matcher(file)
67
+ @command.gsub_file(file, /\.(to_not|not_to|to)\s+(eq|include|match|be_kind_of)\b/) do |match|
68
+ match
69
+ .gsub(/\s+/, ' ')
70
+ .gsub(/\.\w+ /, '.to_not ' => '.wont_', '.not_to ' => '.wont_', '.to ' => '.must_')
71
+ .gsub(/(?<=_)eq/, 'equal')
72
+ end
73
+ end
74
+
75
+ def convert_helpers_suites(file)
76
+ @command.gsub_file(file, /\bhelper\./, '') if located_in_helpers?(file)
77
+ end
78
+
79
+ def convert_declarations(file)
80
+ @command.gsub_file(file, /RSpec\.describe (['"])(.*?)\1 do\b/) do |match|
81
+ title = match[/RSpec\.describe (['"])(.*?)\1 do/, 2]
82
+
83
+ camelCasedTitle = title.split('::').map do |title_part|
84
+ title_part
85
+ .split
86
+ .reject(&:empty?)
87
+ .map { |part| part[0].upcase + part[1..-1] }.join
88
+ end.join('::')
89
+
90
+ "RSpec.describe '#{camelCasedTitle}' do"
91
+ end
92
+
93
+ @command.gsub_file(
94
+ file,
95
+ /RSpec\.describe ['"]?(.+?Controller)['"]? do\b/,
96
+ 'class \1Test < ActionController::TestCase'
97
+ )
98
+ @command.gsub_file(
99
+ file,
100
+ /RSpec\.describe ['"]?(.+?Mailer)['"]? do\b/,
101
+ 'class \1Test < ActionMailer::TestCase'
102
+ )
103
+
104
+ @command.gsub_file(
105
+ file,
106
+ /RSpec\.describe ['"]?(.+?Helper)['"]? do\b/,
107
+ 'class \1Test < ActionView::TestCase'
108
+ )
109
+
110
+ if located_in_requests?(file)
111
+ @command.gsub_file(
112
+ file,
113
+ /RSpec\.describe ['"]?(.+?)['"]? do\b/,
114
+ 'class \1Test < ActionDispatch::IntegrationTest'
115
+ )
116
+ end
117
+
118
+ if located_in?(file, :systems)
119
+ @command.gsub_file(
120
+ file,
121
+ /RSpec\.describe ['"]?(.+?)['"]? do\b/,
122
+ 'class \1Test < ApplicationSystemTestCase'
123
+ )
124
+ end
125
+
126
+ @command.gsub_file(
127
+ file,
128
+ /RSpec\.describe ['"]?(.+?)['"]? do\b/,
129
+ 'class \1Test < ActiveSupport::TestCase'
130
+ )
131
+ end
132
+
133
+ MANUAL_AROUND_PROCESS = "skip 'TODO: Remove this skip when `around` will be migrated manually by replacing `run` with `call`'"
134
+ def convert_around(file)
135
+ @command.gsub_file(file, /^\s*?\baround\b.+?\bdo\b.*?$/) do |match|
136
+ "#{MANUAL_AROUND_PROCESS}\n#{match}"
137
+ end
138
+ end
139
+
140
+ private
141
+
142
+ def located_in_helpers?(file)
143
+ located_in?(file, :helpers)
144
+ end
145
+
146
+ def located_in_requests?(file)
147
+ located_in?(file, :requests)
148
+ end
149
+
150
+ def located_in?(file, sub_folder)
151
+ file =~ /(test|spec)\/#{sub_folder}\//
152
+ end
38
153
  end
39
154
  end
data/lib/r2m/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module R2M
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
data/r2m.gemspec CHANGED
@@ -1,31 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/r2m/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
4
- spec.name = "r2m"
6
+ spec.name = 'r2m'
5
7
  spec.version = R2M::VERSION
6
- spec.authors = ["Paul Keen"]
7
- spec.email = ["info@jetthoughts.com"]
8
+ spec.authors = ['Paul Keen']
9
+ spec.email = ['info@jetthoughts.com']
8
10
 
9
- spec.summary = "Converts RSpec files to minitest"
10
- spec.description = "A command-line tool for converting RSpec files to minitest."
11
- spec.homepage = "https://github.com/jetthoughts/r2m"
12
- spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
11
+ spec.summary = 'Converts RSpec files to minitest'
12
+ spec.description = 'A command-line tool for converting RSpec files to minitest.'
13
+ spec.homepage = 'https://github.com/jetthoughts/r2m'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
14
16
 
15
17
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
16
18
 
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/jetthoughts/r2m"
19
- spec.metadata["changelog_uri"] = "https://github.com/jetthoughts/r2m/README.md"
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = 'https://github.com/jetthoughts/r2m'
21
+ spec.metadata['changelog_uri'] = 'https://github.com/jetthoughts/r2m/README.md'
20
22
 
21
23
  # Specify which files should be added to the gem when it is released.
22
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/}) }
25
27
  end
26
- spec.bindir = "exe"
28
+ spec.bindir = 'exe'
27
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
30
+ spec.require_paths = ['lib']
29
31
 
30
- spec.add_development_dependency 'thor'
32
+ spec.add_dependency 'thor'
31
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r2m
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Keen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-01 00:00:00.000000000 Z
11
+ date: 2020-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -17,7 +17,7 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- type: :development
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements: