rbiphonetest 0.2.0 → 0.3.0
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 +7 -0
- data/Manifest.txt +21 -2
- data/README.rdoc +7 -2
- data/app_generators/rbiphonetest/rbiphonetest_generator.rb +18 -8
- data/app_generators/rbiphonetest/templates/Rakefile +1 -10
- data/bin/rbiphonetest +3 -2
- data/lib/rbiphonetest/version.rb +1 -1
- data/rbiphonetest_generators/install_rspec/USAGE +5 -0
- data/rbiphonetest_generators/install_rspec/install_rspec_generator.rb +51 -0
- data/rbiphonetest_generators/install_rspec/templates/spec/spec_helper.rb +3 -0
- data/rbiphonetest_generators/install_rspec/templates/tasks/rspec.rake +9 -0
- data/rbiphonetest_generators/install_test_unit/USAGE +5 -0
- data/rbiphonetest_generators/install_test_unit/install_test_unit_generator.rb +52 -0
- data/rbiphonetest_generators/install_test_unit/templates/tasks/test_unit.rake +11 -0
- data/rbiphonetest_generators/install_test_unit/templates/test/test_helper.rb +4 -0
- data/rbiphonetest_generators/model/model_generator.rb +34 -3
- data/rbiphonetest_generators/model_rspec/model_rspec_generator.rb +51 -0
- data/rbiphonetest_generators/model_rspec/templates/spec.rb +12 -0
- data/rbiphonetest_generators/model_test_unit/model_test_unit_generator.rb +51 -0
- data/rbiphonetest_generators/{model → model_test_unit}/templates/test.rb +0 -0
- data/rbiphonetest_generators/story/USAGE +5 -0
- data/rbiphonetest_generators/story/story_generator.rb +55 -0
- data/rbiphonetest_generators/story/templates/steps.rb +8 -0
- data/rbiphonetest_generators/story/templates/story +13 -0
- data/rbiphonetest_generators/story/templates/story.rb +5 -0
- data/rbiphonetest_generators/story/templates/story_helper.rb +15 -0
- data/test/test_install_rspec_generator.rb +46 -0
- data/test/test_install_test_unit_generator.rb +46 -0
- data/test/test_model_generator.rb +23 -1
- data/test/test_rbiphonetest_generator.rb +14 -5
- data/test/test_story_generator.rb +49 -0
- metadata +26 -4
- data/app_generators/rbiphonetest/templates/test/test_helper.rb +0 -8
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.3.0 2008-07-05
|
2
|
+
|
3
|
+
* Support for test/unit AND rspec test frameworks (via install_test_unit and install_rspec generators)
|
4
|
+
* model generator: creates test/test_model.rb or spec/model_spec.rb as required
|
5
|
+
* story generator added for rspec developers
|
6
|
+
* app generator: adds selected test framework to script/generate
|
7
|
+
|
1
8
|
== 0.2.0 2008-07-03
|
2
9
|
|
3
10
|
* Renamed project from 'iphoneruby' to 'rbiphonetest'
|
data/Manifest.txt
CHANGED
@@ -8,18 +8,34 @@ app_generators/rbiphonetest/USAGE
|
|
8
8
|
app_generators/rbiphonetest/rbiphonetest_generator.rb
|
9
9
|
app_generators/rbiphonetest/templates/Rakefile
|
10
10
|
app_generators/rbiphonetest/templates/dot_autotest
|
11
|
-
app_generators/rbiphonetest/templates/test/test_helper.rb
|
12
11
|
bin/iphoneruby
|
13
12
|
bin/rbiphonetest
|
14
13
|
config/hoe.rb
|
15
14
|
config/requirements.rb
|
16
15
|
lib/rbiphonetest.rb
|
17
16
|
lib/rbiphonetest/version.rb
|
17
|
+
rbiphonetest_generators/install_rspec/USAGE
|
18
|
+
rbiphonetest_generators/install_rspec/install_rspec_generator.rb
|
19
|
+
rbiphonetest_generators/install_rspec/templates/spec/spec_helper.rb
|
20
|
+
rbiphonetest_generators/install_rspec/templates/tasks/rspec.rake
|
21
|
+
rbiphonetest_generators/install_test_unit/USAGE
|
22
|
+
rbiphonetest_generators/install_test_unit/install_test_unit_generator.rb
|
23
|
+
rbiphonetest_generators/install_test_unit/templates/tasks/test_unit.rake
|
24
|
+
rbiphonetest_generators/install_test_unit/templates/test/test_helper.rb
|
18
25
|
rbiphonetest_generators/model/USAGE
|
19
26
|
rbiphonetest_generators/model/model_generator.rb
|
20
27
|
rbiphonetest_generators/model/templates/model.h
|
21
28
|
rbiphonetest_generators/model/templates/model.m
|
22
|
-
rbiphonetest_generators/
|
29
|
+
rbiphonetest_generators/model_rspec/model_rspec_generator.rb
|
30
|
+
rbiphonetest_generators/model_rspec/templates/spec.rb
|
31
|
+
rbiphonetest_generators/model_test_unit/model_test_unit_generator.rb
|
32
|
+
rbiphonetest_generators/model_test_unit/templates/test.rb
|
33
|
+
rbiphonetest_generators/story/USAGE
|
34
|
+
rbiphonetest_generators/story/story_generator.rb
|
35
|
+
rbiphonetest_generators/story/templates/steps.rb
|
36
|
+
rbiphonetest_generators/story/templates/story
|
37
|
+
rbiphonetest_generators/story/templates/story.rb
|
38
|
+
rbiphonetest_generators/story/templates/story_helper.rb
|
23
39
|
script/console
|
24
40
|
script/destroy
|
25
41
|
script/generate
|
@@ -30,6 +46,9 @@ tasks/environment.rake
|
|
30
46
|
tasks/website.rake
|
31
47
|
test/test_generator_helper.rb
|
32
48
|
test/test_helper.rb
|
49
|
+
test/test_install_rspec_generator.rb
|
50
|
+
test/test_install_test_unit_generator.rb
|
33
51
|
test/test_model_generator.rb
|
34
52
|
test/test_rbiphonetest.rb
|
35
53
|
test/test_rbiphonetest_generator.rb
|
54
|
+
test/test_story_generator.rb
|
data/README.rdoc
CHANGED
@@ -4,7 +4,12 @@
|
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
Want to write iPhone apps with unit tests? Want to write them in Ruby?
|
7
|
+
Want to write iPhone apps with unit tests? Want to write them in Ruby?
|
8
|
+
|
9
|
+
* Blog introduction: http://drnicwilliams.com/2008/07/04/unit-testing-iphone-apps-with-ruby-rbiphonetest/
|
10
|
+
* Video introduction: http://www.vimeo.com/1262916
|
11
|
+
* Google Group: http://groups.google.com/group/rbiphonetest
|
12
|
+
* Bugs/Features: http://drnic.lighthouseapp.com/projects/13763-rbiphonetest
|
8
13
|
|
9
14
|
== FEATURES/PROBLEMS:
|
10
15
|
|
@@ -51,7 +56,7 @@ If using autotest, your tests will be re-run if the test files or the Objective-
|
|
51
56
|
|
52
57
|
== INSTALL:
|
53
58
|
|
54
|
-
sudo gem install rbiphonetest
|
59
|
+
sudo gem install rbiphonetest
|
55
60
|
|
56
61
|
From source:
|
57
62
|
|
@@ -3,9 +3,11 @@ class RbiphonetestGenerator < RubiGen::Base
|
|
3
3
|
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
4
4
|
Config::CONFIG['ruby_install_name'])
|
5
5
|
|
6
|
-
default_options :author => nil
|
6
|
+
default_options :author => nil,
|
7
|
+
:test_framework => 'test_unit'
|
7
8
|
|
8
9
|
attr_reader :name
|
10
|
+
attr_reader :test_framework
|
9
11
|
|
10
12
|
def initialize(runtime_args, runtime_options = {})
|
11
13
|
super
|
@@ -24,9 +26,16 @@ class RbiphonetestGenerator < RubiGen::Base
|
|
24
26
|
# Create stubs
|
25
27
|
m.file_copy_each ["Rakefile"]
|
26
28
|
m.file "dot_autotest", ".autotest"
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
|
30
|
+
# Selecting a test framework
|
31
|
+
case test_framework
|
32
|
+
when "test_unit"
|
33
|
+
m.dependency "install_test_unit", [name], :destination => destination_root, :collision => :force
|
34
|
+
when "rspec"
|
35
|
+
m.dependency "install_rspec", [name], :destination => destination_root, :collision => :force
|
36
|
+
end
|
37
|
+
|
38
|
+
m.dependency "install_rubigen_scripts", [destination_root, 'rbiphonetest', 'iphone', test_framework],
|
30
39
|
:shebang => options[:shebang], :collision => :force
|
31
40
|
end
|
32
41
|
end
|
@@ -46,9 +55,9 @@ EOS
|
|
46
55
|
opts.separator 'Options:'
|
47
56
|
# For each option below, place the default
|
48
57
|
# at the top of the file next to "default_options"
|
49
|
-
|
50
|
-
|
51
|
-
|
58
|
+
opts.on("-s", "--test-with=TEST_FRAMEWORK", String,
|
59
|
+
"Select your preferred testing framework.",
|
60
|
+
"Options: test_unit (default), rspec.") { |x| options[:test_framework] = x }
|
52
61
|
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
53
62
|
end
|
54
63
|
|
@@ -57,12 +66,13 @@ EOS
|
|
57
66
|
# Templates can access these value via the attr_reader-generated methods, but not the
|
58
67
|
# raw instance variable value.
|
59
68
|
# @author = options[:author]
|
69
|
+
@test_framework = options[:test_framework] || "test_unit"
|
60
70
|
end
|
61
71
|
|
62
72
|
# Installation skeleton. Intermediate directories are automatically
|
63
73
|
# created so don't sweat their absence here.
|
64
74
|
BASEDIRS = %w(
|
65
75
|
Classes
|
66
|
-
|
76
|
+
tasks
|
67
77
|
)
|
68
78
|
end
|
@@ -1,14 +1,7 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "rake"
|
3
|
-
require "rake/testtask"
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
Rake::TestTask.new do |t|
|
8
|
-
t.libs << "test" << "test/bundles"
|
9
|
-
t.test_files = FileList['test/test*.rb']
|
10
|
-
t.verbose = true
|
11
|
-
end
|
4
|
+
Dir['tasks/**/*.rake'].each { |rake| load rake }
|
12
5
|
|
13
6
|
namespace :objc do
|
14
7
|
desc "Compiles all Objective-C bundles for testing"
|
@@ -17,8 +10,6 @@ end
|
|
17
10
|
|
18
11
|
task :compile => "objc:compile"
|
19
12
|
|
20
|
-
task :test => :compile
|
21
|
-
|
22
13
|
namespace :objc do
|
23
14
|
# look for Classes/*.m files containing a line "void Init_ClassName"
|
24
15
|
# These are the primary classes for bundles; make a bundle for each
|
data/bin/rbiphonetest
CHANGED
@@ -10,8 +10,9 @@ if %w(-v --version).include? ARGV.first
|
|
10
10
|
end
|
11
11
|
|
12
12
|
require 'rubigen/scripts/generate'
|
13
|
-
source = RubiGen::PathSource.new(:application,
|
14
|
-
File.join(File.dirname(__FILE__), "../app_generators"))
|
15
13
|
RubiGen::Base.reset_sources
|
14
|
+
source = RubiGen::PathSource.new(:application, File.join(File.dirname(__FILE__), "../app_generators"))
|
15
|
+
RubiGen::Base.append_sources source
|
16
|
+
source = RubiGen::PathSource.new(:application, File.join(File.dirname(__FILE__), "../rbiphonetest_generators"))
|
16
17
|
RubiGen::Base.append_sources source
|
17
18
|
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'rbiphonetest')
|
data/lib/rbiphonetest/version.rb
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
class InstallRspecGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift
|
11
|
+
extract_options
|
12
|
+
end
|
13
|
+
|
14
|
+
def manifest
|
15
|
+
record do |m|
|
16
|
+
# Ensure appropriate folder(s) exists
|
17
|
+
m.directory 'spec'
|
18
|
+
m.directory 'tasks'
|
19
|
+
|
20
|
+
m.file_copy_each ["spec/spec_helper.rb"]
|
21
|
+
m.file_copy_each ["tasks/rspec.rake"]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
def banner
|
27
|
+
<<-EOS
|
28
|
+
Creates a ...
|
29
|
+
|
30
|
+
USAGE: #{$0} #{spec.name} name
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_options!(opts)
|
35
|
+
# opts.separator ''
|
36
|
+
# opts.separator 'Options:'
|
37
|
+
# For each option below, place the default
|
38
|
+
# at the top of the file next to "default_options"
|
39
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
40
|
+
# "Some comment about this option",
|
41
|
+
# "Default: none") { |options[:author]| }
|
42
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
43
|
+
end
|
44
|
+
|
45
|
+
def extract_options
|
46
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
47
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
48
|
+
# raw instance variable value.
|
49
|
+
# @author = options[:author]
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class InstallTestUnitGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift
|
11
|
+
extract_options
|
12
|
+
end
|
13
|
+
|
14
|
+
def manifest
|
15
|
+
record do |m|
|
16
|
+
# Ensure appropriate folder(s) exists
|
17
|
+
m.directory 'test'
|
18
|
+
m.directory 'tasks'
|
19
|
+
|
20
|
+
m.file_copy_each ["test/test_helper.rb"]
|
21
|
+
m.file_copy_each ["tasks/test_unit.rake"]
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def banner
|
28
|
+
<<-EOS
|
29
|
+
Creates a ...
|
30
|
+
|
31
|
+
USAGE: #{$0} #{spec.name} name
|
32
|
+
EOS
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_options!(opts)
|
36
|
+
# opts.separator ''
|
37
|
+
# opts.separator 'Options:'
|
38
|
+
# For each option below, place the default
|
39
|
+
# at the top of the file next to "default_options"
|
40
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
41
|
+
# "Some comment about this option",
|
42
|
+
# "Default: none") { |options[:author]| }
|
43
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
44
|
+
end
|
45
|
+
|
46
|
+
def extract_options
|
47
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
48
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
49
|
+
# raw instance variable value.
|
50
|
+
# @author = options[:author]
|
51
|
+
end
|
52
|
+
end
|
@@ -3,6 +3,7 @@ class ModelGenerator < RubiGen::Base
|
|
3
3
|
default_options :author => nil
|
4
4
|
|
5
5
|
attr_reader :name, :class_name
|
6
|
+
attr_reader :installed_frameworks
|
6
7
|
|
7
8
|
def initialize(runtime_args, runtime_options = {})
|
8
9
|
super
|
@@ -10,25 +11,35 @@ class ModelGenerator < RubiGen::Base
|
|
10
11
|
@name = args.shift.underscore
|
11
12
|
@class_name = @name.camelcase
|
12
13
|
extract_options
|
14
|
+
extract_test_frameworks
|
13
15
|
end
|
14
16
|
|
15
17
|
def manifest
|
16
18
|
record do |m|
|
17
19
|
# Ensure appropriate folder(s) exists
|
18
20
|
m.directory 'Classes'
|
19
|
-
m.directory 'test'
|
20
21
|
|
21
22
|
# Create stubs
|
22
23
|
m.template "model.h", "Classes/#{class_name}.h"
|
23
24
|
m.template "model.m", "Classes/#{class_name}.m"
|
24
|
-
|
25
|
+
|
26
|
+
# It is possible for 2+ test frameworks to be installed.
|
27
|
+
# Current behaviour is to generate test stubs for all of them
|
28
|
+
# and let the developer delete files they don't want
|
29
|
+
if installed_frameworks.include? "test_unit"
|
30
|
+
m.dependency "model_test_unit", [name], :destination => destination_root, :collision => :force
|
31
|
+
end
|
32
|
+
if installed_frameworks.include? "rspec"
|
33
|
+
m.dependency "model_rspec", [name], :destination => destination_root, :collision => :force
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
28
38
|
protected
|
29
39
|
def banner
|
30
40
|
<<-EOS
|
31
|
-
Creates
|
41
|
+
Creates an NSObject model (header and implementation files)
|
42
|
+
plus a Ruby test file (either test/unit or rspec).
|
32
43
|
|
33
44
|
USAGE: #{$0} #{spec.name} name
|
34
45
|
EOS
|
@@ -51,4 +62,24 @@ EOS
|
|
51
62
|
# raw instance variable value.
|
52
63
|
# @author = options[:author]
|
53
64
|
end
|
65
|
+
|
66
|
+
# Attempts to determine which test framework is being used
|
67
|
+
# Else prompts user
|
68
|
+
def extract_test_frameworks
|
69
|
+
@installed_frameworks = []
|
70
|
+
@installed_frameworks << "test_unit" if Dir[File.join(destination_root, "test")].length > 0
|
71
|
+
@installed_frameworks << "rspec" if Dir[File.join(destination_root, "spec")].length > 0
|
72
|
+
|
73
|
+
if @installed_frameworks.length == 0
|
74
|
+
# no test-related files created
|
75
|
+
puts <<-EOS
|
76
|
+
WARNING: you do not have a test-framework installed.
|
77
|
+
Run either:
|
78
|
+
script/generate install_test_unit
|
79
|
+
script/generate install_rspec
|
80
|
+
|
81
|
+
and then rerun this generator.
|
82
|
+
EOS
|
83
|
+
end
|
84
|
+
end
|
54
85
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class ModelRspecGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name, :class_name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift.underscore
|
11
|
+
@class_name = @name.camelcase
|
12
|
+
extract_options
|
13
|
+
end
|
14
|
+
|
15
|
+
def manifest
|
16
|
+
record do |m|
|
17
|
+
# Ensure appropriate folder(s) exists
|
18
|
+
m.directory 'spec'
|
19
|
+
|
20
|
+
m.template "spec.rb", "spec/#{name}_spec.rb"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
def banner
|
26
|
+
<<-EOS
|
27
|
+
Creates an RSpec-based spec file for a model.
|
28
|
+
NOTE: this generator is typically called via the 'model' generator.
|
29
|
+
|
30
|
+
USAGE: #{$0} #{spec.name} name
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_options!(opts)
|
35
|
+
# opts.separator ''
|
36
|
+
# opts.separator 'Options:'
|
37
|
+
# For each option below, place the default
|
38
|
+
# at the top of the file next to "default_options"
|
39
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
40
|
+
# "Some comment about this option",
|
41
|
+
# "Default: none") { |options[:author]| }
|
42
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
43
|
+
end
|
44
|
+
|
45
|
+
def extract_options
|
46
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
47
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
48
|
+
# raw instance variable value.
|
49
|
+
# @author = options[:author]
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class ModelTestUnitGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name, :class_name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift.underscore
|
11
|
+
@class_name = @name.camelcase
|
12
|
+
extract_options
|
13
|
+
end
|
14
|
+
|
15
|
+
def manifest
|
16
|
+
record do |m|
|
17
|
+
# Ensure appropriate folder(s) exists
|
18
|
+
m.directory 'test'
|
19
|
+
|
20
|
+
m.template "test.rb", "test/test_#{name}.rb"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
def banner
|
26
|
+
<<-EOS
|
27
|
+
Creates an Test/Unit-based test file for a model.
|
28
|
+
NOTE: this generator is typically called via the 'model' generator.
|
29
|
+
|
30
|
+
USAGE: #{$0} #{spec.name} name
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_options!(opts)
|
35
|
+
# opts.separator ''
|
36
|
+
# opts.separator 'Options:'
|
37
|
+
# For each option below, place the default
|
38
|
+
# at the top of the file next to "default_options"
|
39
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
40
|
+
# "Some comment about this option",
|
41
|
+
# "Default: none") { |options[:author]| }
|
42
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
43
|
+
end
|
44
|
+
|
45
|
+
def extract_options
|
46
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
47
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
48
|
+
# raw instance variable value.
|
49
|
+
# @author = options[:author]
|
50
|
+
end
|
51
|
+
end
|
File without changes
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class StoryGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name, :class_name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift
|
11
|
+
@class_name = @name.camelcase
|
12
|
+
extract_options
|
13
|
+
end
|
14
|
+
|
15
|
+
def manifest
|
16
|
+
record do |m|
|
17
|
+
# Ensure appropriate folder(s) exists
|
18
|
+
m.directory 'stories'
|
19
|
+
m.directory 'stories/steps'
|
20
|
+
|
21
|
+
# Create stubs
|
22
|
+
m.file "story_helper.rb", "stories/story_helper.rb"
|
23
|
+
m.template "story", "stories/#{name}_story"
|
24
|
+
m.template "story.rb", "stories/#{name}_story.rb"
|
25
|
+
m.template "steps.rb", "stories/steps/#{name}_steps.rb"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
def banner
|
31
|
+
<<-EOS
|
32
|
+
Creates a ...
|
33
|
+
|
34
|
+
USAGE: #{$0} #{spec.name} name
|
35
|
+
EOS
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_options!(opts)
|
39
|
+
# opts.separator ''
|
40
|
+
# opts.separator 'Options:'
|
41
|
+
# For each option below, place the default
|
42
|
+
# at the top of the file next to "default_options"
|
43
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
44
|
+
# "Some comment about this option",
|
45
|
+
# "Default: none") { |options[:author]| }
|
46
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
47
|
+
end
|
48
|
+
|
49
|
+
def extract_options
|
50
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
51
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
52
|
+
# raw instance variable value.
|
53
|
+
# @author = options[:author]
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "spec/story"
|
3
|
+
require "ruby-debug"
|
4
|
+
|
5
|
+
require "osx/cocoa"
|
6
|
+
$:.unshift File.dirname(__FILE__) + "/../build/bundles"
|
7
|
+
|
8
|
+
dir = File.dirname(__FILE__)
|
9
|
+
Dir[File.expand_path("#{dir}/steps/*.rb")].uniq.each do |file|
|
10
|
+
require file
|
11
|
+
end
|
12
|
+
|
13
|
+
def run_local_story(filename, options={})
|
14
|
+
run File.join(File.dirname(__FILE__), filename), options
|
15
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
|
4
|
+
class TestInstallRspecGenerator < Test::Unit::TestCase
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
bare_setup
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
bare_teardown
|
13
|
+
end
|
14
|
+
|
15
|
+
# Some generator-related assertions:
|
16
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
17
|
+
# assert_directory_exists(name)
|
18
|
+
# assert_generated_class(name, &block)
|
19
|
+
# assert_generated_module(name, &block)
|
20
|
+
# assert_generated_test_for(name, &block)
|
21
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
22
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
23
|
+
#
|
24
|
+
# Other helper methods are:
|
25
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
26
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
27
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
28
|
+
|
29
|
+
def test_generator_without_options
|
30
|
+
name = "myapp"
|
31
|
+
run_generator('install_rspec', [name], sources)
|
32
|
+
assert_directory_exists "spec"
|
33
|
+
assert_generated_file "spec/spec_helper.rb"
|
34
|
+
assert_generated_file "tasks/rspec.rake"
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def sources
|
39
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
40
|
+
]
|
41
|
+
end
|
42
|
+
|
43
|
+
def generator_path
|
44
|
+
"rbiphonetest_generators"
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
|
4
|
+
class TestInstallTestUnitGenerator < Test::Unit::TestCase
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
bare_setup
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
bare_teardown
|
13
|
+
end
|
14
|
+
|
15
|
+
# Some generator-related assertions:
|
16
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
17
|
+
# assert_directory_exists(name)
|
18
|
+
# assert_generated_class(name, &block)
|
19
|
+
# assert_generated_module(name, &block)
|
20
|
+
# assert_generated_test_for(name, &block)
|
21
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
22
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
23
|
+
#
|
24
|
+
# Other helper methods are:
|
25
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
26
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
27
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
28
|
+
|
29
|
+
def test_generator_without_options
|
30
|
+
name = "myapp"
|
31
|
+
run_generator('install_test_unit', [name], sources)
|
32
|
+
assert_directory_exists "test"
|
33
|
+
assert_generated_file "test/test_helper.rb"
|
34
|
+
assert_generated_file "tasks/test_unit.rake"
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def sources
|
39
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
40
|
+
]
|
41
|
+
end
|
42
|
+
|
43
|
+
def generator_path
|
44
|
+
"rbiphonetest_generators"
|
45
|
+
end
|
46
|
+
end
|
@@ -26,8 +26,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
26
26
|
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
27
27
|
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
28
28
|
|
29
|
-
def
|
29
|
+
def test_generator_for_test_unit
|
30
30
|
name = "my_model"
|
31
|
+
FileUtils.mkdir_p File.join(APP_ROOT, "test")
|
31
32
|
run_generator('model', [name], sources)
|
32
33
|
assert_directory_exists "Classes"
|
33
34
|
assert_directory_exists "test"
|
@@ -36,6 +37,27 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
36
37
|
assert_generated_file "test/test_my_model.rb"
|
37
38
|
end
|
38
39
|
|
40
|
+
def test_generator_for_rspec
|
41
|
+
name = "my_model"
|
42
|
+
FileUtils.mkdir_p File.join(APP_ROOT, "spec")
|
43
|
+
run_generator("model", [name], sources)
|
44
|
+
assert_directory_exists "Classes"
|
45
|
+
assert_directory_exists "spec"
|
46
|
+
assert_generated_file "Classes/MyModel.h"
|
47
|
+
assert_generated_file "Classes/MyModel.m"
|
48
|
+
assert_generated_file "spec/my_model_spec.rb"
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_generator_without_test_framework_installed
|
52
|
+
name = "my_model"
|
53
|
+
run_generator("model", [name], sources)
|
54
|
+
assert_directory_exists "Classes"
|
55
|
+
assert_generated_file "Classes/MyModel.h"
|
56
|
+
assert_generated_file "Classes/MyModel.m"
|
57
|
+
# and nothing else is created
|
58
|
+
assert_equal(["./test/tmp/myproject/Classes"], Dir[File.join(APP_ROOT, '*')])
|
59
|
+
end
|
60
|
+
|
39
61
|
private
|
40
62
|
def sources
|
41
63
|
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
@@ -29,19 +29,28 @@ class TestIphonerubyGenerator < Test::Unit::TestCase
|
|
29
29
|
run_generator('rbiphonetest', [APP_ROOT], sources)
|
30
30
|
assert_directory_exists "Classes"
|
31
31
|
assert_directory_exists "test"
|
32
|
+
assert_directory_exists "tasks"
|
32
33
|
assert_generated_file ".autotest"
|
33
34
|
assert_generated_file "Rakefile"
|
34
35
|
assert_generated_file "test/test_helper.rb"
|
35
36
|
assert_generated_file "script/generate"
|
36
37
|
end
|
37
38
|
|
39
|
+
def test_generator_with_rspec
|
40
|
+
run_generator('rbiphonetest', [APP_ROOT], sources, {:test_framework => 'rspec'})
|
41
|
+
assert_directory_exists "Classes"
|
42
|
+
assert_directory_exists "test"
|
43
|
+
assert_directory_exists "tasks"
|
44
|
+
assert_generated_file ".autotest"
|
45
|
+
assert_generated_file "Rakefile"
|
46
|
+
assert_generated_file "spec/spec_helper.rb"
|
47
|
+
assert_generated_file "script/generate"
|
48
|
+
end
|
49
|
+
|
38
50
|
private
|
39
51
|
def sources
|
40
|
-
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..",
|
52
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", "app_generators")),
|
53
|
+
RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", "rbiphonetest_generators"))
|
41
54
|
]
|
42
55
|
end
|
43
|
-
|
44
|
-
def generator_path
|
45
|
-
"app_generators"
|
46
|
-
end
|
47
56
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
|
4
|
+
class TestStoryGenerator < Test::Unit::TestCase
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
bare_setup
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
bare_teardown
|
13
|
+
end
|
14
|
+
|
15
|
+
# Some generator-related assertions:
|
16
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
17
|
+
# assert_directory_exists(name)
|
18
|
+
# assert_generated_class(name, &block)
|
19
|
+
# assert_generated_module(name, &block)
|
20
|
+
# assert_generated_test_for(name, &block)
|
21
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
22
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
23
|
+
#
|
24
|
+
# Other helper methods are:
|
25
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
26
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
27
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
28
|
+
|
29
|
+
def test_generator_without_options
|
30
|
+
name = "story"
|
31
|
+
run_generator("story", [name], sources)
|
32
|
+
assert_directory_exists "stories"
|
33
|
+
assert_generated_file "stories/story_helper.rb"
|
34
|
+
assert_generated_file "stories/#{name}_story"
|
35
|
+
assert_generated_file "stories/#{name}_story.rb"
|
36
|
+
assert_directory_exists "stories/steps"
|
37
|
+
assert_generated_file "stories/steps/#{name}_steps.rb"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def sources
|
42
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
43
|
+
]
|
44
|
+
end
|
45
|
+
|
46
|
+
def generator_path
|
47
|
+
"rbiphonetest_generators"
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbiphonetest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-08 00:00:00 +10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -46,18 +46,34 @@ files:
|
|
46
46
|
- app_generators/rbiphonetest/rbiphonetest_generator.rb
|
47
47
|
- app_generators/rbiphonetest/templates/Rakefile
|
48
48
|
- app_generators/rbiphonetest/templates/dot_autotest
|
49
|
-
- app_generators/rbiphonetest/templates/test/test_helper.rb
|
50
49
|
- bin/iphoneruby
|
51
50
|
- bin/rbiphonetest
|
52
51
|
- config/hoe.rb
|
53
52
|
- config/requirements.rb
|
54
53
|
- lib/rbiphonetest.rb
|
55
54
|
- lib/rbiphonetest/version.rb
|
55
|
+
- rbiphonetest_generators/install_rspec/USAGE
|
56
|
+
- rbiphonetest_generators/install_rspec/install_rspec_generator.rb
|
57
|
+
- rbiphonetest_generators/install_rspec/templates/spec/spec_helper.rb
|
58
|
+
- rbiphonetest_generators/install_rspec/templates/tasks/rspec.rake
|
59
|
+
- rbiphonetest_generators/install_test_unit/USAGE
|
60
|
+
- rbiphonetest_generators/install_test_unit/install_test_unit_generator.rb
|
61
|
+
- rbiphonetest_generators/install_test_unit/templates/tasks/test_unit.rake
|
62
|
+
- rbiphonetest_generators/install_test_unit/templates/test/test_helper.rb
|
56
63
|
- rbiphonetest_generators/model/USAGE
|
57
64
|
- rbiphonetest_generators/model/model_generator.rb
|
58
65
|
- rbiphonetest_generators/model/templates/model.h
|
59
66
|
- rbiphonetest_generators/model/templates/model.m
|
60
|
-
- rbiphonetest_generators/
|
67
|
+
- rbiphonetest_generators/model_rspec/model_rspec_generator.rb
|
68
|
+
- rbiphonetest_generators/model_rspec/templates/spec.rb
|
69
|
+
- rbiphonetest_generators/model_test_unit/model_test_unit_generator.rb
|
70
|
+
- rbiphonetest_generators/model_test_unit/templates/test.rb
|
71
|
+
- rbiphonetest_generators/story/USAGE
|
72
|
+
- rbiphonetest_generators/story/story_generator.rb
|
73
|
+
- rbiphonetest_generators/story/templates/steps.rb
|
74
|
+
- rbiphonetest_generators/story/templates/story
|
75
|
+
- rbiphonetest_generators/story/templates/story.rb
|
76
|
+
- rbiphonetest_generators/story/templates/story_helper.rb
|
61
77
|
- script/console
|
62
78
|
- script/destroy
|
63
79
|
- script/generate
|
@@ -68,9 +84,12 @@ files:
|
|
68
84
|
- tasks/website.rake
|
69
85
|
- test/test_generator_helper.rb
|
70
86
|
- test/test_helper.rb
|
87
|
+
- test/test_install_rspec_generator.rb
|
88
|
+
- test/test_install_test_unit_generator.rb
|
71
89
|
- test/test_model_generator.rb
|
72
90
|
- test/test_rbiphonetest.rb
|
73
91
|
- test/test_rbiphonetest_generator.rb
|
92
|
+
- test/test_story_generator.rb
|
74
93
|
has_rdoc: true
|
75
94
|
homepage: http://github.com/drnic/rbiphonetest
|
76
95
|
post_install_message: |-
|
@@ -122,6 +141,9 @@ summary: Want to write iPhone unit tests? Want to write them in Ruby?
|
|
122
141
|
test_files:
|
123
142
|
- test/test_generator_helper.rb
|
124
143
|
- test/test_helper.rb
|
144
|
+
- test/test_install_rspec_generator.rb
|
145
|
+
- test/test_install_test_unit_generator.rb
|
125
146
|
- test/test_model_generator.rb
|
126
147
|
- test/test_rbiphonetest.rb
|
127
148
|
- test/test_rbiphonetest_generator.rb
|
149
|
+
- test/test_story_generator.rb
|