mig-rspec_abandoner 0.2
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.
- data/History.txt +8 -0
- data/Manifest.txt +7 -0
- data/README.txt +44 -0
- data/Rakefile +9 -0
- data/bin/rspec_abandoner +4 -0
- data/lib/rspec_abandoner.rb +110 -0
- data/test/test_rspec_abandoner.rb +62 -0
- metadata +63 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
= RspecAbandoner
|
2
|
+
|
3
|
+
== DESCRIPTION:
|
4
|
+
|
5
|
+
This is a script, that when run inside of your project, will convert your RSpec specs to Test::Unit tests.
|
6
|
+
|
7
|
+
== FEATURES/PROBLEMS:
|
8
|
+
|
9
|
+
* Not every "should" scenario has been covered
|
10
|
+
* The formatting for output could use some work
|
11
|
+
|
12
|
+
== SYNOPSIS:
|
13
|
+
|
14
|
+
cd /my/ruby_or_rails_project
|
15
|
+
rspec_abandoner
|
16
|
+
|
17
|
+
== INSTALL:
|
18
|
+
|
19
|
+
gem install mig-rspec_abandoner --source=http://gems.github.com
|
20
|
+
|
21
|
+
== LICENSE:
|
22
|
+
|
23
|
+
(The MIT License)
|
24
|
+
|
25
|
+
Copyright (c) 2008 Mig Swasey
|
26
|
+
|
27
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
28
|
+
a copy of this software and associated documentation files (the
|
29
|
+
'Software'), to deal in the Software without restriction, including
|
30
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
31
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
32
|
+
permit persons to whom the Software is furnished to do so, subject to
|
33
|
+
the following conditions:
|
34
|
+
|
35
|
+
The above copyright notice and this permission notice shall be
|
36
|
+
included in all copies or substantial portions of the Software.
|
37
|
+
|
38
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
39
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
40
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
41
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
42
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
43
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
44
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'hoe'
|
3
|
+
require './lib/rspec_abandoner.rb'
|
4
|
+
|
5
|
+
Hoe.new('RspecAbandoner', RspecAbandoner::VERSION) do |p|
|
6
|
+
p.developer('Mig Swasey', 'mig@pggbee.com')
|
7
|
+
p.summary = "A script that will convert your rspec specs into Test::Unit tests"
|
8
|
+
p.url = "http://pggbee.com"
|
9
|
+
end
|
data/bin/rspec_abandoner
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
class RspecAbandoner
|
4
|
+
VERSION = '0.2'
|
5
|
+
|
6
|
+
def self.start
|
7
|
+
abandoner = RspecAbandoner.new
|
8
|
+
abandoner.start
|
9
|
+
end
|
10
|
+
|
11
|
+
def start
|
12
|
+
FileUtils.cp_r("spec", "spec_converted")
|
13
|
+
specs = Dir.glob("spec_converted/**/*_spec.rb")
|
14
|
+
specs.each do |spec|
|
15
|
+
read_spec_file(spec)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def read_spec_file(file)
|
20
|
+
output = ""
|
21
|
+
File.open(file) do |io|
|
22
|
+
io.each_line do |line|
|
23
|
+
output << go(line)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
File.open(file.gsub(/_spec/, "_test"), "w") do |io|
|
28
|
+
io.write(output)
|
29
|
+
end
|
30
|
+
File.delete(file)
|
31
|
+
end
|
32
|
+
|
33
|
+
def describe_block
|
34
|
+
/describe\s(.*)\s.*do/
|
35
|
+
end
|
36
|
+
|
37
|
+
def it_block
|
38
|
+
/it\s*(\'|\")(.*)(\'|\")\s*do/
|
39
|
+
end
|
40
|
+
|
41
|
+
def before_block
|
42
|
+
/before.*do/
|
43
|
+
end
|
44
|
+
|
45
|
+
def should_equal_block
|
46
|
+
/(.*).should\s*(==|equal)[\s\(]([\w\'\"]*)(.*)/
|
47
|
+
end
|
48
|
+
|
49
|
+
def should_eql_block
|
50
|
+
/(.*).should\s*(===|eql)[\s\(]([\w\'\"]*)(.*)/
|
51
|
+
end
|
52
|
+
|
53
|
+
def should_not_block
|
54
|
+
/(.*).should_not\s*(==|equal)[\s\(]([\w\'\"]*)(.*)/
|
55
|
+
end
|
56
|
+
|
57
|
+
def should_be_kind_of_block
|
58
|
+
/(.*).should\s*be_a_kind_of[\s\(]([\w]*)(.*)/
|
59
|
+
end
|
60
|
+
|
61
|
+
def should_be_nil_block
|
62
|
+
/(.*).should(_not)?\s*be_nil/
|
63
|
+
end
|
64
|
+
|
65
|
+
def should_be_whatever_block
|
66
|
+
/(.*).should\s*be_(.*)/
|
67
|
+
end
|
68
|
+
|
69
|
+
def go(input)
|
70
|
+
|
71
|
+
input.gsub!(describe_block) do
|
72
|
+
"class #{$1}Test < Test::Unit::TestCase"
|
73
|
+
end if input.match(describe_block)
|
74
|
+
|
75
|
+
input.gsub!(it_block) do
|
76
|
+
"def test_#{$2.split(' ').join('_')}"
|
77
|
+
end if input.match(it_block)
|
78
|
+
|
79
|
+
input.gsub!(before_block) do
|
80
|
+
"def setup"
|
81
|
+
end if input.match(before_block)
|
82
|
+
|
83
|
+
input.gsub!(should_equal_block) do
|
84
|
+
"assert_equal #{$3}, #{$1}"
|
85
|
+
end if input.match(should_equal_block)
|
86
|
+
|
87
|
+
input.gsub!(should_eql_block) do
|
88
|
+
"assert_same #{$3}, #{$1}"
|
89
|
+
end if input.match(should_eql_block)
|
90
|
+
|
91
|
+
input.gsub!(should_not_block) do
|
92
|
+
"assert ! #{$3} == #{$1}"
|
93
|
+
end if input.match(should_not_block)
|
94
|
+
|
95
|
+
input.gsub!(should_be_kind_of_block) do
|
96
|
+
"assert_kind_of #{$2}, #{$1}"
|
97
|
+
end if input.match(should_be_kind_of_block)
|
98
|
+
|
99
|
+
input.gsub!(should_be_nil_block) do
|
100
|
+
"assert#{$2}_nil #{$1}"
|
101
|
+
end
|
102
|
+
|
103
|
+
input.gsub!(should_be_whatever_block) do
|
104
|
+
"assert_#{$2} #{$1}"
|
105
|
+
end
|
106
|
+
|
107
|
+
input
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'mocha'
|
4
|
+
require File.dirname(__FILE__) + "/../lib/rspec_abandoner"
|
5
|
+
|
6
|
+
class TestRspecAbandoner < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@abandon = RspecAbandoner.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_should_replace_describe_block_with_class_declaration
|
13
|
+
assert_equal %[class CrabShackTest < Test::Unit::TestCase],
|
14
|
+
@abandon.go(%[describe CrabShack do])
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_replace_it_blocks_with_a_test_method
|
18
|
+
assert_equal %[def test_should_know_things_are_weird],
|
19
|
+
@abandon.go(%[it "should know things are weird" do])
|
20
|
+
assert_equal %[def test_should_know_things_are_chill],
|
21
|
+
@abandon.go(%[it 'should know things are chill' do])
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_replace_before_and_before_each_blocks_with_setup
|
25
|
+
assert_equal %[def setup], @abandon.go(%[before do])
|
26
|
+
assert_equal %[def setup], @abandon.go(%[before(:each) do])
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_replace_should_equals_with_assert_equals
|
30
|
+
assert_equal %[assert_equal "hi", say_hi], @abandon.go(%[say_hi.should == "hi"])
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_should_replace_should_equals_spelled_out_with_assert_equals
|
34
|
+
assert_equal %[assert_equal "hi", say_hi], @abandon.go(%[say_hi.should equal("hi")])
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_replace_should_eql_with_assert_same
|
38
|
+
assert_equal %[assert_same me, you], @abandon.go(%[you.should eql(me)])
|
39
|
+
assert_equal %[assert_same me, you], @abandon.go(%[you.should === me])
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_replace_should_not_with_assert_bang
|
43
|
+
assert_equal %[assert ! true == false], @abandon.go(%[false.should_not == true])
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_replace_should_be_a_kind_of_with_assert_kind_of
|
47
|
+
assert_equal %[assert_kind_of Hash, rocket], @abandon.go(%[rocket.should be_a_kind_of(Hash)])
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_replace_should_be_nil_and_should_not_be_nil_with_assert_nil_or_assert_not_nil
|
51
|
+
assert_equal %[assert_nil personality], @abandon.go(%[personality.should be_nil])
|
52
|
+
assert_equal %[assert_not_nil ego], @abandon.go(%[ego.should_not be_nil])
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_should_replace_should_be_valid_with_assert_valid
|
56
|
+
assert_equal %[assert_valid @post], @abandon.go(%[@post.should be_valid])
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_should_replace_should_be_whatever_with_assert_whatever
|
60
|
+
assert_equal %[assert_crazy @dad], @abandon.go(%[@dad.should be_crazy])
|
61
|
+
end
|
62
|
+
end
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mig-rspec_abandoner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.2"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mig Swasey
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-06-13 00:00:00 -07:00
|
13
|
+
default_executable: rspec_abandoner
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: This is a script, that when run inside of your project, will convert your RSpec specs to Test::Unit tests.
|
17
|
+
email:
|
18
|
+
- mig@pggbee.com
|
19
|
+
executables:
|
20
|
+
- rspec_abandoner
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files:
|
24
|
+
- History.txt
|
25
|
+
- Manifest.txt
|
26
|
+
- README.txt
|
27
|
+
files:
|
28
|
+
- History.txt
|
29
|
+
- Manifest.txt
|
30
|
+
- README.txt
|
31
|
+
- Rakefile
|
32
|
+
- bin/rspec_abandoner
|
33
|
+
- lib/rspec_abandoner.rb
|
34
|
+
- test/test_rspec_abandoner.rb
|
35
|
+
has_rdoc: true
|
36
|
+
homepage: http://pggbee.com
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options:
|
39
|
+
- --main
|
40
|
+
- README.txt
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
version:
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
requirements: []
|
56
|
+
|
57
|
+
rubyforge_project:
|
58
|
+
rubygems_version: 1.2.0
|
59
|
+
signing_key:
|
60
|
+
specification_version: 2
|
61
|
+
summary: A script that will convert your rspec specs into Test::Unit tests
|
62
|
+
test_files:
|
63
|
+
- test/test_rspec_abandoner.rb
|