rbiphonetest 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|