rbiphonetest 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/History.txt +7 -0
  2. data/Manifest.txt +21 -2
  3. data/README.rdoc +7 -2
  4. data/app_generators/rbiphonetest/rbiphonetest_generator.rb +18 -8
  5. data/app_generators/rbiphonetest/templates/Rakefile +1 -10
  6. data/bin/rbiphonetest +3 -2
  7. data/lib/rbiphonetest/version.rb +1 -1
  8. data/rbiphonetest_generators/install_rspec/USAGE +5 -0
  9. data/rbiphonetest_generators/install_rspec/install_rspec_generator.rb +51 -0
  10. data/rbiphonetest_generators/install_rspec/templates/spec/spec_helper.rb +3 -0
  11. data/rbiphonetest_generators/install_rspec/templates/tasks/rspec.rake +9 -0
  12. data/rbiphonetest_generators/install_test_unit/USAGE +5 -0
  13. data/rbiphonetest_generators/install_test_unit/install_test_unit_generator.rb +52 -0
  14. data/rbiphonetest_generators/install_test_unit/templates/tasks/test_unit.rake +11 -0
  15. data/rbiphonetest_generators/install_test_unit/templates/test/test_helper.rb +4 -0
  16. data/rbiphonetest_generators/model/model_generator.rb +34 -3
  17. data/rbiphonetest_generators/model_rspec/model_rspec_generator.rb +51 -0
  18. data/rbiphonetest_generators/model_rspec/templates/spec.rb +12 -0
  19. data/rbiphonetest_generators/model_test_unit/model_test_unit_generator.rb +51 -0
  20. data/rbiphonetest_generators/{model → model_test_unit}/templates/test.rb +0 -0
  21. data/rbiphonetest_generators/story/USAGE +5 -0
  22. data/rbiphonetest_generators/story/story_generator.rb +55 -0
  23. data/rbiphonetest_generators/story/templates/steps.rb +8 -0
  24. data/rbiphonetest_generators/story/templates/story +13 -0
  25. data/rbiphonetest_generators/story/templates/story.rb +5 -0
  26. data/rbiphonetest_generators/story/templates/story_helper.rb +15 -0
  27. data/test/test_install_rspec_generator.rb +46 -0
  28. data/test/test_install_test_unit_generator.rb +46 -0
  29. data/test/test_model_generator.rb +23 -1
  30. data/test/test_rbiphonetest_generator.rb +14 -5
  31. data/test/test_story_generator.rb +49 -0
  32. metadata +26 -4
  33. 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/model/templates/test.rb
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 (COMING SOON)
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
- m.file_copy_each ["test/test_helper.rb"]
28
-
29
- m.dependency "install_rubigen_scripts", [destination_root, 'rbiphonetest'],
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
- # opts.on("-a", "--author=\"Your Name\"", String,
50
- # "Some comment about this option",
51
- # "Default: none") { |options[:author]| }
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
- test
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
- task :default => :test
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')
@@ -1,7 +1,7 @@
1
1
  module RbIphoneTest
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 2
4
+ MINOR = 3
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -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,3 @@
1
+ require "osx/cocoa"
2
+
3
+ $:.unshift File.dirname(__FILE__) + "/../build/bundles"
@@ -0,0 +1,9 @@
1
+ require "spec/rake/spectask"
2
+
3
+ task :default => :spec
4
+
5
+ task :spec => :compile
6
+
7
+ Spec::Rake::SpecTask.new do |t|
8
+ t.warning = true
9
+ end
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -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
@@ -0,0 +1,11 @@
1
+ require "rake/testtask"
2
+
3
+ task :default => :test
4
+
5
+ task :test => :compile
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
@@ -0,0 +1,4 @@
1
+ require "test/unit"
2
+ require "osx/cocoa"
3
+
4
+ $:.unshift File.dirname(__FILE__) + "/../build/bundles"
@@ -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
- m.template "test.rb", "test/test_#{name}.rb"
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 a ...
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,12 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ require "<%= class_name %>.bundle"
4
+ OSX::ns_import :<%= class_name %>
5
+
6
+ describe OSX::<%= class_name %> do
7
+
8
+ it "should exist" do
9
+ OSX::<%= class_name %>
10
+ end
11
+
12
+ 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
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -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,8 @@
1
+ require "<%= class_name %>.bundle"
2
+ OSX::ns_import :<%= class_name %>
3
+
4
+ steps_for(:<%= name %>) do
5
+ Given "a <%= class_name %> instance" do
6
+ @tame = OSX::<%= class_name %>.alloc.init
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ Story: <%= name %>
2
+ As a ___
3
+ I want ___
4
+ So that ___
5
+
6
+ Scenario: <%= name %>
7
+ Given a <%= class_name %> instance
8
+ And ___
9
+
10
+ When ___
11
+
12
+ Then ___
13
+
@@ -0,0 +1,5 @@
1
+ require File.dirname(__FILE__) + "/story_helper"
2
+
3
+ with_steps_for(:<%= name %>) do
4
+ run_local_story "<%= name %>_story"
5
+ 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 test_generator_without_options
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__),"..", generator_path))
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.2.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-04 00:00:00 +10:00
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/model/templates/test.rb
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
@@ -1,8 +0,0 @@
1
- require "test/unit"
2
-
3
- require "rubygems"
4
- require "Shoulda"
5
-
6
- require "osx/cocoa"
7
-
8
- $:.unshift File.dirname(__FILE__) + "/../build/bundles"