jeweler 1.4.0 → 1.5.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/.document +14 -0
  2. data/.gitignore +13 -2
  3. data/ChangeLog.markdown +8 -8
  4. data/Gemfile +21 -0
  5. data/Gemfile.lock +57 -0
  6. data/README.markdown +6 -6
  7. data/Rakefile +32 -46
  8. data/features/generator/cucumber.feature +20 -0
  9. data/features/generator/directory_layout.feature +10 -0
  10. data/features/generator/gemfile.feature +71 -0
  11. data/features/generator/git.feature +8 -0
  12. data/features/generator/license.feature +11 -2
  13. data/features/generator/rakefile.feature +25 -23
  14. data/features/generator/test.feature +6 -0
  15. data/features/generator/test_helper.feature +107 -11
  16. data/features/step_definitions/filesystem_steps.rb +5 -3
  17. data/features/step_definitions/generator_steps.rb +68 -4
  18. data/features/support/env.rb +26 -13
  19. data/jeweler.gemspec +222 -207
  20. data/lib/jeweler.rb +7 -5
  21. data/lib/jeweler/commands.rb +1 -3
  22. data/lib/jeweler/commands/check_dependencies.rb +3 -5
  23. data/lib/jeweler/commands/install_gem.rb +1 -2
  24. data/lib/jeweler/commands/release_to_git.rb +5 -3
  25. data/lib/jeweler/commands/release_to_github.rb +24 -8
  26. data/lib/jeweler/commands/{release_to_gemcutter.rb → release_to_rubygems.rb} +1 -2
  27. data/lib/jeweler/commands/version/base.rb +16 -2
  28. data/lib/jeweler/commands/write_gemspec.rb +0 -1
  29. data/lib/jeweler/errors.rb +4 -16
  30. data/lib/jeweler/gemcutter_tasks.rb +4 -32
  31. data/lib/jeweler/gemspec_helper.rb +3 -6
  32. data/lib/jeweler/generator.rb +23 -6
  33. data/lib/jeweler/generator/options.rb +17 -14
  34. data/lib/jeweler/generator/rspec_mixin.rb +1 -1
  35. data/lib/jeweler/generator/shindo_mixin.rb +44 -0
  36. data/lib/jeweler/generator/shoulda_mixin.rb +1 -1
  37. data/lib/jeweler/rubyforge_tasks.rb +5 -29
  38. data/lib/jeweler/rubygems_dot_org_tasks.rb +38 -0
  39. data/lib/jeweler/rubygems_tasks.rb +38 -0
  40. data/lib/jeweler/specification.rb +36 -12
  41. data/lib/jeweler/tasks.rb +49 -13
  42. data/lib/jeweler/templates/.document +6 -0
  43. data/lib/jeweler/templates/.gitignore +34 -16
  44. data/lib/jeweler/templates/Gemfile +12 -0
  45. data/lib/jeweler/templates/LICENSE +1 -1
  46. data/lib/jeweler/templates/Rakefile +1 -0
  47. data/lib/jeweler/templates/bacon/helper.rb +1 -0
  48. data/lib/jeweler/templates/bundler_setup.erb +10 -0
  49. data/lib/jeweler/templates/features/support/env.rb +2 -0
  50. data/lib/jeweler/templates/jeweler_tasks.erb +20 -23
  51. data/lib/jeweler/templates/micronaut/helper.rb +1 -0
  52. data/lib/jeweler/templates/minitest/helper.rb +1 -0
  53. data/lib/jeweler/templates/other_tasks.erb +27 -59
  54. data/lib/jeweler/templates/riot/helper.rb +1 -0
  55. data/lib/jeweler/templates/rspec/{spec.opts → .rspec} +0 -0
  56. data/lib/jeweler/templates/rspec/helper.rb +7 -3
  57. data/lib/jeweler/templates/shindo/flunking.rb +8 -0
  58. data/lib/jeweler/templates/shindo/helper.rb +6 -0
  59. data/lib/jeweler/templates/shoulda/helper.rb +1 -0
  60. data/lib/jeweler/templates/testunit/helper.rb +1 -0
  61. data/lib/jeweler/version.rb +10 -0
  62. data/lib/jeweler/version_helper.rb +1 -2
  63. data/test/fixtures/existing-project-with-version-constant/Rakefile +4 -2
  64. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +4 -2
  65. data/test/fixtures/existing-project-with-version-yaml/Rakefile +4 -2
  66. data/test/jeweler/commands/test_install_gem.rb +2 -2
  67. data/test/jeweler/commands/test_release_to_gemcutter.rb +4 -4
  68. data/test/jeweler/commands/test_release_to_git.rb +32 -25
  69. data/test/jeweler/commands/test_release_to_github.rb +108 -25
  70. data/test/jeweler/generator/test_options.rb +16 -22
  71. data/test/jeweler/test_generator.rb +5 -0
  72. data/test/jeweler/test_specification.rb +18 -7
  73. data/test/jeweler/test_tasks.rb +1 -1
  74. data/test/test_helper.rb +12 -14
  75. data/test/test_jeweler.rb +0 -12
  76. metadata +159 -66
  77. data/VERSION.yml +0 -5
  78. data/lib/jeweler/commands/release_to_rubyforge.rb +0 -52
  79. data/lib/jeweler/commands/setup_rubyforge.rb +0 -63
  80. data/test/jeweler/commands/test_release_to_rubyforge.rb +0 -153
  81. data/test/jeweler/commands/test_setup_rubyforge.rb +0 -178
@@ -0,0 +1,14 @@
1
+ # .document is used by rdoc and yard to know how to generate documentation
2
+ # for example, it can be used to control how rdoc gets built when you do `gem install foo`
3
+
4
+ lib/jeweler.rb
5
+ lib/jeweler/*.rb
6
+ lib/jeweler/commands/*.rb
7
+ lib/jeweler/generator/*.rb
8
+ bin/*
9
+
10
+ # Files below the line with - are treated as 'extra files', and aren't parsed for ruby code
11
+ -
12
+ README.markdown
13
+ features/**/*.feature
14
+ LICENSE
data/.gitignore CHANGED
@@ -1,10 +1,21 @@
1
+ # bundler
2
+ .bundle
3
+
4
+ # rcov generated
1
5
  coverage
6
+
7
+ # jeweler generated
2
8
  pkg
9
+
10
+ # yard generated
3
11
  doc
4
- rdoc
12
+ .yardoc
13
+
14
+ # ctags generated
5
15
  tags
16
+
17
+ # tmp directories used during testing
6
18
  test/tmp
7
19
  test/jeweler/version_tmp
8
20
  test/version_tmp
9
21
  tmp
10
- .yardoc
@@ -8,12 +8,12 @@
8
8
  * `rake install` should correctly figure out which `gem` binary to invoke now
9
9
  * `rake build` now will regenerate the gemspec as well
10
10
  * `rake gemspec` now eliminates duplicates for gemspec.files, gemspec.rdoc_files, etc
11
- * `rake gemspec` now automtically populate gemspec.extensions with any extconf.rb files you have in `ext`
11
+ * `rake gemspec` now automatically populates gemspec.extensions with any extconf.rb files you have in `ext`
12
12
  * Releasing to Rubyforge is now deprecated in favor of Gemcutter.
13
13
 
14
14
  # jeweler 1.3.0
15
15
 
16
- * Now supports an addition version type, build. This can be used to add a fourth segment of the version that's arbirtary. One example use is having prereleases.
16
+ * Now supports an additional version type, build. This can be used to add a fourth segment of the version that's arbitrary. One example use is having prereleases.
17
17
  * Jeweler now lazily loads, to avoid causing side-effects when running other rake tasks
18
18
  * Version can now be set explicitly on the gemspec, rather than relying on a VERSION file
19
19
  * Rubyforge and Gemcutter support now hooks into `rake release`
@@ -21,7 +21,7 @@
21
21
  * Rubyforge support no longer forces the uploading of documentation
22
22
  * Generator:
23
23
  * Allow arbitrary homepage and git remotes, to decouple a bit from GitHub
24
- * Support for the riot testing framework: http://github.com/thumblemonks/riot/
24
+ * Support for the riot testing framework: http://github.com/thumblemonks/riot/
25
25
  * Support for test/spec
26
26
  * .gitignore now ignores emacs temporary files
27
27
  * rspec support now creates a spec.opts with support for color and other stuff
@@ -76,7 +76,7 @@
76
76
  * Managing a gemspec's files, test_files, and extra_rdoc_files is now more flexible. They are now wrapped in a FileList, so you can easily 'include' or 'exclude' patterns.
77
77
 
78
78
  # jeweler 0.10.2 2009-03-26
79
-
79
+
80
80
  * 'rake install' now will 'rake build' first
81
81
  * Support for releasing to RubyForge, thanks to jtrupiano
82
82
  * Steps towards Ruby 1.9 support, thanks to rsanheim
@@ -85,19 +85,19 @@
85
85
 
86
86
  * Tasks:
87
87
  * Fixed populating default spec's extra_rdoc_files
88
- * Removed redudant gem building/installing tasks. Use rake build and rake install
88
+ * Removed redundant gem building/installing tasks. Use rake build and rake install
89
89
  * Generator:
90
90
  * Added support for micronaut
91
91
  * Generate nicer block variable names in Rakefile
92
92
  * Cucumber generation now places steps in features/step_features, to follow cucumber standards
93
93
 
94
- * shoulda and test/unit test_helpers no longers require mocha
94
+ * shoulda and test/unit test_helpers no longer require mocha
95
95
  * Rakefile uses more readable block variable names
96
96
  * .gitignore now includes pkg and coverage directories
97
97
  * Avoid puts'ing in Rakefile when LoadError occurs. Instead, define a task that aborts with instructions to install.
98
98
  * Cucumber is now optional. Generate stories using --cucumber
99
99
  * Bacon's 'test' task is now 'spec'
100
- * Generate README.rdoc instead of just a plain text README
100
+ * Generate README.rdoc instead of just a plain text README
101
101
  * Updated year in README.rdoc and COPYRIGHT to be based on the current year instead of hardcoded
102
102
 
103
103
  # jeweler 0.8.1 2009-02-03
@@ -114,7 +114,7 @@
114
114
  * Added support for cucumber
115
115
  * Creating a new gem is now more verbose, and will show files/directories created
116
116
  * Binaries will now be automatically detected in 'bin'
117
-
117
+
118
118
  # jeweler 0.7.2 2009-01-29
119
119
 
120
120
  * Added rake task 'version:bump' which is shorthand for 'version:bump:patch'
data/Gemfile ADDED
@@ -0,0 +1,21 @@
1
+ source 'http://gemcutter.org'
2
+ source 'http://gems.github.com'
3
+
4
+ gem "rake"
5
+ gem "git", ">= 1.2.5"
6
+ gem "bundler", ">= 1.0.0.rc.5"
7
+
8
+ group :development do
9
+ gem "shoulda"
10
+ gem "mhennemeyer-output_catcher"
11
+ gem "rr"
12
+ gem "mocha"
13
+ gem "redgreen"
14
+ gem "test-construct"
15
+ gem "yard"
16
+ gem "cucumber"
17
+ gem "rcov"
18
+ gem "timecop"
19
+ gem "activesupport", "~> 2.3.5"
20
+ gem "ruby-debug"
21
+ end
@@ -0,0 +1,57 @@
1
+ GEM
2
+ remote: http://gemcutter.org/
3
+ remote: http://gems.github.com/
4
+ specs:
5
+ activesupport (2.3.8)
6
+ builder (2.1.2)
7
+ columnize (0.3.1)
8
+ cucumber (0.8.5)
9
+ builder (~> 2.1.2)
10
+ diff-lcs (~> 1.1.2)
11
+ gherkin (~> 2.1.4)
12
+ json_pure (~> 1.4.3)
13
+ term-ansicolor (~> 1.0.4)
14
+ diff-lcs (1.1.2)
15
+ gherkin (2.1.5)
16
+ trollop (~> 1.16.2)
17
+ git (1.2.5)
18
+ json_pure (1.4.6)
19
+ linecache (0.43)
20
+ mhennemeyer-output_catcher (1.0.1)
21
+ mocha (0.9.8)
22
+ rake
23
+ rake (0.8.7)
24
+ rcov (0.9.8)
25
+ redgreen (1.2.2)
26
+ rr (0.10.11)
27
+ ruby-debug (0.10.3)
28
+ columnize (>= 0.1)
29
+ ruby-debug-base (~> 0.10.3.0)
30
+ ruby-debug-base (0.10.3)
31
+ linecache (>= 0.3)
32
+ shoulda (2.11.3)
33
+ term-ansicolor (1.0.5)
34
+ test-construct (1.2.0)
35
+ timecop (0.3.5)
36
+ trollop (1.16.2)
37
+ yard (0.5.8)
38
+
39
+ PLATFORMS
40
+ ruby
41
+
42
+ DEPENDENCIES
43
+ activesupport (~> 2.3.5)
44
+ bundler (>= 1.0.0.rc.5)
45
+ cucumber
46
+ git (>= 1.2.5)
47
+ mhennemeyer-output_catcher
48
+ mocha
49
+ rake
50
+ rcov
51
+ redgreen
52
+ rr
53
+ ruby-debug
54
+ shoulda
55
+ test-construct
56
+ timecop
57
+ yard
@@ -14,8 +14,8 @@ Jeweler provides two things:
14
14
 
15
15
  ## Installing
16
16
 
17
- # Install the gem:
18
- sudo gem install jeweler
17
+ # Install the gem:
18
+ gem install jeweler
19
19
 
20
20
  ## Using in an existing project
21
21
 
@@ -32,7 +32,7 @@ It's easy to get up and running. Update your Rakefile to instantiate a `Jeweler:
32
32
  gemspec.authors = ["Josh Nichols"]
33
33
  end
34
34
  rescue LoadError
35
- puts "Jeweler not available. Install it with: sudo gem install jeweler"
35
+ puts "Jeweler not available. Install it with: gem install jeweler"
36
36
  end
37
37
 
38
38
  The yield object here, `gemspec`, is a `Gem::Specification` object. See the [Customizing your project's gem specification](http://wiki.github.com/technicalpickles/jeweler/customizing-your-projects-gem-specification) for more details about how you can customize your gemspec.
@@ -151,7 +151,7 @@ A Rakefile setup for gemcutter would include something like this:
151
151
  end
152
152
  Jeweler::GemcutterTasks.new
153
153
  rescue LoadError
154
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
154
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
155
155
  end
156
156
 
157
157
 
@@ -167,7 +167,7 @@ Jeweler can also handle releasing to [RubyForge](http://rubyforge.org). There ar
167
167
 
168
168
  * [Create an account on RubyForge](http://rubyforge.org/account/register.php)
169
169
  * Request a project on RubyForge.
170
- * Install the RubyForge gem: sudo gem install rubyforge
170
+ * Install the RubyForge gem: gem install rubyforge
171
171
  * Run 'rubyforge setup' and fill in your username and password for RubyForge
172
172
  * Run 'rubyforge config' to pull down information about your projects
173
173
  * Run 'rubyforge login' to make sure you are able to login
@@ -188,7 +188,7 @@ A Rakefile setup for rubyforge would include something like this:
188
188
  rubyforge.doc_task = "rdoc"
189
189
  end
190
190
  rescue LoadError
191
- puts "Jeweler, or a dependency, not available. Install it with: sudo gem install jeweler"
191
+ puts "Jeweler, or a dependency, not available. Install it with: gem install jeweler"
192
192
  end
193
193
 
194
194
  Now you must initially create a 'package' for your gem in your RubyForge 'project':
data/Rakefile CHANGED
@@ -1,32 +1,27 @@
1
1
  require 'rake'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
2
10
 
3
11
  $LOAD_PATH.unshift('lib')
4
12
 
5
13
  require 'jeweler'
6
14
  Jeweler::Tasks.new do |gem|
7
15
  gem.name = "jeweler"
8
- gem.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
16
+ gem.version = Jeweler::Version::STRING
17
+ gem.summary = "Opinionated tool for creating and managing RubyGem projects"
9
18
  gem.email = "josh@technicalpickles.com"
10
19
  gem.homepage = "http://github.com/technicalpickles/jeweler"
11
20
  gem.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
12
21
  gem.authors = ["Josh Nichols"]
13
22
  gem.files.include %w(lib/jeweler/templates/.document lib/jeweler/templates/.gitignore)
14
23
 
15
- gem.add_dependency "git", ">= 1.2.5"
16
- gem.add_dependency "rubyforge", ">= 2.0.0"
17
- gem.add_dependency "gemcutter", ">= 0.1.0"
18
-
19
- gem.rubyforge_project = "pickles"
20
-
21
- gem.add_development_dependency "thoughtbot-shoulda"
22
- gem.add_development_dependency "mhennemeyer-output_catcher"
23
- gem.add_development_dependency "rr"
24
- gem.add_development_dependency "mocha"
25
- gem.add_development_dependency "redgreen"
26
- gem.add_development_dependency "devver-construct"
27
-
28
- gem.add_development_dependency "yard"
29
- gem.add_development_dependency "cucumber"
24
+ # dependencies defined in Gemfile
30
25
  end
31
26
 
32
27
  Jeweler::GemcutterTasks.new
@@ -45,41 +40,35 @@ Rake::TestTask.new(:test) do |test|
45
40
  test.verbose = true
46
41
  end
47
42
 
48
- begin
49
- require 'yard'
50
- YARD::Rake::YardocTask.new(:yardoc) do |t|
51
- t.files = FileList['lib/**/*.rb'].exclude('lib/jeweler/templates/**/*.rb')
43
+ namespace :test do
44
+ task :gemspec_dup do
45
+ gemspec = Rake.application.jeweler.gemspec
46
+ dupped_gemspec = gemspec.dup
47
+ cloned_gemspec = gemspec.clone
48
+ puts gemspec.to_ruby
49
+ puts dupped_gemspec.to_ruby
52
50
  end
53
- rescue LoadError
54
- task :yardoc => :check_dependencies
55
51
  end
56
52
 
53
+ require 'yard'
54
+ YARD::Rake::YardocTask.new(:yardoc) do |t|
55
+ t.files = FileList['lib/**/*.rb'].exclude('lib/jeweler/templates/**/*.rb')
56
+ end
57
57
 
58
- begin
59
- require 'rcov/rcovtask'
60
- Rcov::RcovTask.new(:rcov => :check_dependencies) do |rcov|
61
- rcov.libs << 'test'
62
- rcov.pattern = 'test/**/test_*.rb'
63
- end
64
- rescue
65
- task :rcov => :check_dependencies
58
+ require 'rcov/rcovtask'
59
+ Rcov::RcovTask.new(:rcov => :check_dependencies) do |rcov|
60
+ rcov.libs << 'test'
61
+ rcov.pattern = 'test/**/test_*.rb'
66
62
  end
67
63
 
68
- begin
69
- require 'cucumber/rake/task'
70
- Cucumber::Rake::Task.new(:features) do |features|
64
+ require 'cucumber/rake/task'
65
+ Cucumber::Rake::Task.new(:features) do |features|
66
+ features.cucumber_opts = "features --format progress"
67
+ end
68
+ namespace :features do
69
+ Cucumber::Rake::Task.new(:pretty) do |features|
71
70
  features.cucumber_opts = "features --format progress"
72
71
  end
73
- namespace :features do
74
- Cucumber::Rake::Task.new(:pretty) do |features|
75
- features.cucumber_opts = "features --format progress"
76
- end
77
- end
78
- rescue LoadError
79
- task :features => :check_dependencies
80
- namespace :features do
81
- task :pretty => :check_dependencies
82
- end
83
72
  end
84
73
 
85
74
  if ENV["RUN_CODE_RUN"] == "true"
@@ -88,6 +77,3 @@ else
88
77
  task :default => :test
89
78
  end
90
79
 
91
-
92
- task :test => :check_dependencies
93
- task :features => :check_dependencies
@@ -25,8 +25,28 @@ Feature: generating cucumber stories
25
25
  And a file named 'the-perfect-gem/features/support/env.rb' is created
26
26
  And a file named 'the-perfect-gem/features/step_definitions/the-perfect-gem_steps.rb' is created
27
27
 
28
+ And 'features/support/env.rb' requires 'bundler'
29
+ And 'features/support/env.rb' sets up bundler using the default and development groups
28
30
  And 'features/support/env.rb' requires 'the-perfect-gem'
29
31
 
32
+ Scenario: bundler
33
+ Given a working directory
34
+ And I want bundler
35
+ And I have configured git sanely
36
+ And I want cucumber stories
37
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
38
+ And 'features/support/env.rb' requires 'bundler'
39
+ And 'features/support/env.rb' sets up bundler using the default and development groups
40
+
41
+ Scenario: no bundler
42
+ Given a working directory
43
+ And I have configured git sanely
44
+ And I do not want bundler
45
+ And I want cucumber stories
46
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
47
+ And 'features/support/env.rb' does not require 'bundler'
48
+ And 'features/support/env.rb' does not setup bundler
49
+
30
50
  Scenario: cucumber setup for bacon
31
51
  Given a working directory
32
52
  And I have configured git sanely
@@ -74,3 +74,13 @@ Feature: generated directory layout
74
74
 
75
75
  And a file named 'the-perfect-gem/examples/example_helper.rb' is created
76
76
  And a file named 'the-perfect-gem/examples/the-perfect-gem_example.rb' is created
77
+
78
+ Scenario: shindo
79
+ Given a working directory
80
+ And I have configured git sanely
81
+ When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
82
+
83
+ Then a directory named 'the-perfect-gem/tests' is created
84
+
85
+ And a file named 'the-perfect-gem/tests/tests_helper.rb' is created
86
+ And a file named 'the-perfect-gem/tests/the-perfect-gem_tests.rb' is created
@@ -0,0 +1,71 @@
1
+ Feature: generated Gemfiel
2
+ In order to start a new gem
3
+ A user should be able to
4
+ generate a Gemfile
5
+
6
+ Background:
7
+ Given a working directory
8
+ And I have configured git sanely
9
+
10
+ Scenario: disabled
11
+ Given I do not want bundler
12
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
13
+ Then a file named 'the-perfect-gemGemfile' is not created
14
+
15
+ Scenario: enabled
16
+ Given I want bundler
17
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
18
+ Then a file named 'the-perfect-gem/Gemfile' is created
19
+
20
+ Scenario: default
21
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
22
+ Then a file named 'the-perfect-gem/Gemfile' is created
23
+ And 'Gemfile' uses the gemcutter source
24
+ And 'Gemfile' has a development dependency on 'bundler'
25
+ And 'Gemfile' has a development dependency on the current version of jeweler
26
+ And 'Gemfile' has a development dependency on 'rcov'
27
+
28
+ Scenario: bacon
29
+ When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
30
+ Then 'Gemfile' has a development dependency on 'bacon'
31
+
32
+ Scenario: minitest
33
+ When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
34
+ Then 'Gemfile' has a development dependency on 'minitest'
35
+
36
+ Scenario: rspec
37
+ When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
38
+
39
+ Then 'Gemfile' has a development dependency on 'rspec'
40
+
41
+ Scenario: shoulda
42
+ When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
43
+ Then 'Gemfile' has a development dependency on 'shoulda'
44
+
45
+ Scenario: micronaut
46
+ When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
47
+ Then 'Gemfile' has a development dependency on 'micronaut'
48
+
49
+ Scenario: cucumber
50
+ Given I want cucumber stories
51
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
52
+ Then 'Gemfile' has a development dependency on 'cucumber'
53
+
54
+ Scenario: reek
55
+ Given I want reek
56
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
57
+ Then 'Gemfile' has a development dependency on 'reek'
58
+
59
+ Scenario: roodi
60
+ Given I want roodi
61
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
62
+ Then 'Gemfile' has a development dependency on 'roodi'
63
+
64
+ Scenario: yard
65
+ Given I want to use yard instead of rdoc
66
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
67
+ Then 'Gemfile' has a development dependency on 'yard'
68
+
69
+ Scenario: shindo
70
+ When I generate a shindo project named 'the-perfect-gem' that is 'zomg, so good'
71
+ Then 'Gemfile' has a development dependency on 'shindo'