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.
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"