dima-jeweler 0.9.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +9 -0
  2. data/ChangeLog.markdown +54 -1
  3. data/README.markdown +89 -20
  4. data/ROADMAP +12 -0
  5. data/Rakefile +52 -12
  6. data/VERSION.yml +3 -3
  7. data/features/generator/cucumber.feature +83 -0
  8. data/features/generator/directory_layout.feature +76 -0
  9. data/features/generator/dotdocument.feature +14 -0
  10. data/features/generator/env_options.feature +9 -0
  11. data/features/generator/git.feature +94 -0
  12. data/features/generator/license.feature +11 -0
  13. data/features/generator/rakefile.feature +151 -0
  14. data/features/generator/readme.feature +12 -0
  15. data/features/generator/test.feature +41 -0
  16. data/features/generator/test_helper.feature +49 -0
  17. data/features/placeholder.feature +5 -0
  18. data/features/step_definitions/debug_steps.rb +6 -0
  19. data/features/step_definitions/filesystem_steps.rb +68 -0
  20. data/features/step_definitions/generator_steps.rb +284 -0
  21. data/features/step_definitions/task_steps.rb +6 -0
  22. data/features/support/env.rb +29 -0
  23. data/features/tasks/build_gem.feature +9 -0
  24. data/features/tasks/version.feature +24 -0
  25. data/features/tasks/version_bumping.feature +33 -0
  26. data/jeweler.gemspec +225 -0
  27. data/lib/jeweler.rb +39 -52
  28. data/lib/jeweler/commands.rb +2 -0
  29. data/lib/jeweler/commands/build_gem.rb +9 -0
  30. data/lib/jeweler/commands/check_dependencies.rb +52 -0
  31. data/lib/jeweler/commands/install_gem.rb +23 -2
  32. data/lib/jeweler/commands/release.rb +52 -12
  33. data/lib/jeweler/commands/release_to_rubyforge.rb +32 -9
  34. data/lib/jeweler/commands/setup_rubyforge.rb +57 -0
  35. data/lib/jeweler/commands/validate_gemspec.rb +9 -0
  36. data/lib/jeweler/commands/version/base.rb +13 -2
  37. data/lib/jeweler/commands/write_gemspec.rb +13 -0
  38. data/lib/jeweler/errors.rb +13 -1
  39. data/lib/jeweler/gemspec_helper.rb +31 -3
  40. data/lib/jeweler/generator.rb +80 -120
  41. data/lib/jeweler/generator/application.rb +12 -3
  42. data/lib/jeweler/generator/bacon_mixin.rb +43 -0
  43. data/lib/jeweler/generator/micronaut_mixin.rb +41 -0
  44. data/lib/jeweler/generator/minitest_mixin.rb +42 -0
  45. data/lib/jeweler/generator/options.rb +37 -3
  46. data/lib/jeweler/generator/rdoc_mixin.rb +9 -0
  47. data/lib/jeweler/generator/rspec_mixin.rb +42 -0
  48. data/lib/jeweler/generator/shoulda_mixin.rb +42 -0
  49. data/lib/jeweler/generator/testunit_mixin.rb +39 -0
  50. data/lib/jeweler/generator/yard_mixin.rb +14 -0
  51. data/lib/jeweler/rubyforge_tasks.rb +98 -0
  52. data/lib/jeweler/specification.rb +66 -0
  53. data/lib/jeweler/tasks.rb +72 -39
  54. data/lib/jeweler/templates/.document +5 -0
  55. data/lib/jeweler/templates/README.rdoc +12 -1
  56. data/lib/jeweler/templates/Rakefile +83 -49
  57. data/lib/jeweler/templates/bacon/helper.rb +1 -1
  58. data/lib/jeweler/templates/features/support/env.rb +4 -7
  59. data/lib/jeweler/templates/micronaut/helper.rb +1 -1
  60. data/lib/jeweler/templates/minitest/helper.rb +1 -1
  61. data/lib/jeweler/templates/rspec/flunking.rb +1 -1
  62. data/lib/jeweler/templates/rspec/helper.rb +4 -3
  63. data/lib/jeweler/templates/shoulda/helper.rb +1 -1
  64. data/lib/jeweler/templates/testunit/helper.rb +1 -1
  65. data/lib/jeweler/version_helper.rb +78 -33
  66. data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  67. data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
  68. data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  69. data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
  70. data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
  71. data/test/fixtures/existing-project-with-version-plaintext/LICENSE +20 -0
  72. data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
  73. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +82 -0
  74. data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
  75. data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
  76. data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
  77. data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
  78. data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
  79. data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
  80. data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
  81. data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
  82. data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
  83. data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
  84. data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
  85. data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
  86. data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
  87. data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
  88. data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
  89. data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
  90. data/test/jeweler/commands/test_build_gem.rb +20 -1
  91. data/test/jeweler/commands/test_install_gem.rb +74 -0
  92. data/test/jeweler/commands/test_release.rb +289 -77
  93. data/test/jeweler/commands/test_release_to_rubyforge.rb +66 -50
  94. data/test/jeweler/commands/test_setup_rubyforge.rb +182 -0
  95. data/test/jeweler/commands/test_validate_gemspec.rb +27 -0
  96. data/test/jeweler/commands/test_write_gemspec.rb +34 -0
  97. data/test/jeweler/commands/version/test_base.rb +32 -0
  98. data/test/jeweler/commands/version/test_bump_major.rb +1 -0
  99. data/test/test_application.rb +31 -1
  100. data/test/test_gemspec_helper.rb +4 -0
  101. data/test/test_generator.rb +101 -114
  102. data/test/test_generator_initialization.rb +156 -0
  103. data/test/test_generator_mixins.rb +18 -0
  104. data/test/test_helper.rb +104 -16
  105. data/test/test_jeweler.rb +134 -96
  106. data/test/test_options.rb +59 -0
  107. data/test/test_specification.rb +61 -0
  108. data/test/test_tasks.rb +13 -18
  109. data/test/test_version_helper.rb +47 -9
  110. metadata +174 -43
  111. data/TODO +0 -11
  112. data/test/generators/initialization_test.rb +0 -146
@@ -0,0 +1,9 @@
1
+ coverage
2
+ pkg
3
+ doc
4
+ rdoc
5
+ tags
6
+ test/tmp
7
+ test/version_tmp
8
+ tmp
9
+ .yardoc
@@ -1,4 +1,57 @@
1
- # jeweler x.y.z
1
+ # jeweler 1.2.0 2009-08-06
2
+ * Generator now adds development dependencies appropriate to your testing framework
3
+ * Added check_dependencies tasks for verifying gem dependencies are installed
4
+ * Fixed typo in generated yard task
5
+ * Fixed generator from having a lot of extra newlines
6
+
7
+ # jeweler 1.1.0 2009-08-05
8
+
9
+ * Support for generating a project that uses yard instead of rdoc
10
+ * Generated gemspec now includes comments about it being generated by jeweler
11
+ * Only use sudo for installing on non-windows platforms [#1]
12
+ * Fixed rake release to be repeatable on the same version [#16]
13
+ * Fixed rake rubyforge:setup to not create duplicate packages
14
+ * Use a more recent version of ruby-git
15
+ * Fixes various issues with reading values out of ~/.gitconfig [#26] [#21] [#19]
16
+ * Experimenting with a rake task to check development time dependencies [#22]
17
+ * Fixed generated rdoc task to load from VERSION instead of VERSION.yml
18
+
19
+ # jeweler 1.0.2 2009-07-29
20
+
21
+ * Don't include git ignored files for default gemspec's files and test_files
22
+ * Fixed rspec generator to allow specs to be run directly
23
+ * Removed misleading docstring for version_required rake task [#17]
24
+ * Includes some notes about contributed in generated README
25
+ * Added support for generating a project to use reek and roodi
26
+
27
+ # jeweler 1.0.1 2009-05-15
28
+
29
+ # jeweler 0.11.1
30
+
31
+ * Lots of internal refactorings to how project generation happens
32
+ * Fixed missing dependency on rubyforge
33
+ * Depend on a recent version of schacon-git which works on ruby 1.9
34
+ * Updated cucumber support for 0.3.x
35
+ * Tested on Ruby 1.9
36
+
37
+ # jeweler 0.11.0 2009-04-05
38
+
39
+ * generator will respect JEWELER_OPTS, as a way to provide default options
40
+ (pat-maddox)
41
+ * Include 'examples' and 'rails' directories by default in gemspec files
42
+ * generated gemspec now will only include files (not directories). also, they are listed one per line, and sorted.
43
+ * Jeweler::Tasks's intializer has been improved:
44
+ * You can now pass it an existing gemspec (othewise a new one will be created)
45
+ * Jeweler sets its defaults before yielding the gemspec to you. This allows you to append to its defaults, so you aren't forced to entirely overwrite them just to add one value.
46
+ * 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.
47
+
48
+ # jeweler 0.10.2 2009-03-26
49
+
50
+ * 'rake install' now will 'rake build' first
51
+ * Support for releasing to RubyForge, thanks to jtrupiano
52
+ * Steps towards Ruby 1.9 support, thanks to rsanheim
53
+
54
+ # jeweler 0.9.1 2009-03-05
2
55
 
3
56
  * Tasks:
4
57
  * Fixed populating default spec's extra_rdoc_files
@@ -5,32 +5,37 @@ Jeweler provides two things:
5
5
  * Rake tasks for managing gems and versioning of a <a href="http://github.com">GitHub</a> project
6
6
  * A generator for creating kickstarting a new project
7
7
 
8
+ ## Quick Links
9
+
10
+ * [Wiki](http://wiki.github.com/technicalpickles/jeweler)
11
+ * [Bugs](http://github.com/technicalpickles/jeweler/issues)
12
+ * [Donate](http://pledgie.org/campaigns/2604)
13
+
8
14
  ## Installing
9
15
 
10
- # Run the following if you haven't done so before:
11
- gem sources -a http://gems.github.com
12
16
  # Install the gem:
13
- sudo gem install technicalpickles-jeweler
17
+ sudo gem install jeweler
14
18
 
15
19
  ## Using in an existing project
16
20
 
17
- It's easy to get up and running. Update your instantiate a `Jeweler::Tasks`, and give it a block with details about your project.
21
+ It's easy to get up and running. Update your Rakefile to instantiate a `Jeweler::Tasks`, and give it a block with details about your project.
18
22
 
19
23
  begin
20
24
  require 'jeweler'
21
- Jeweler::Tasks.new do |s|
22
- s.name = "the-perfect-gem"
23
- s.summary = "TODO"
24
- s.email = "josh@technicalpickles.com"
25
- s.homepage = "http://github.com/technicalpickles/the-perfect-gem"
26
- s.description = "TODO"
27
- s.authors = ["Josh Nichols"]
25
+ Jeweler::Tasks.new do |gemspec|
26
+ gemspec.name = "the-perfect-gem"
27
+ gemspec.summary = "Summarize your gem"
28
+ gemspec.description = "Describe your gem"
29
+ gemspec.email = "josh@technicalpickles.com"
30
+ gemspec.homepage = "http://github.com/technicalpickles/the-perfect-gem"
31
+ gemspec.description = "TODO"
32
+ gemspec.authors = ["Josh Nichols"]
28
33
  end
29
34
  rescue LoadError
30
35
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
31
36
  end
32
37
 
33
- In this example, `s` is a Gem::Specification object. See the [GemSpec reference](http://www.rubygems.org/read/chapter/20) for values of interest.
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.
34
39
 
35
40
  ## Using to start a new project
36
41
 
@@ -48,6 +53,13 @@ It supports a number of options:
48
53
  * --shoulda: generate test_helper.rb and test ready for shoulda (this is the default)
49
54
  * --rspec: generate spec_helper.rb and spec ready for rspec
50
55
  * --bacon: generate spec_helper.rb and spec ready for bacon
56
+ * --rubyforge: setup releasing to rubyforge
57
+
58
+ ### Default options
59
+
60
+ Jeweler respects the JEWELER_OPTS environment variable. Want to always use RSpec, and you're using bash? Add this to ~/.bashrc:
61
+
62
+ export JEWELER_OPTS="--rspec"
51
63
 
52
64
  ## Gemspec
53
65
 
@@ -74,7 +86,7 @@ Initially, your project starts out at 0.0.0. Jeweler provides Rake tasks for bum
74
86
  rake version:bump:minor
75
87
  rake version:bump:patch
76
88
 
77
- ## Releasing
89
+ ## Releasing to GitHub
78
90
 
79
91
  Jeweler handles releasing your gem into the wild:
80
92
 
@@ -86,18 +98,75 @@ It does the following for you:
86
98
  * Push to GitHub (which results in a gem being build)
87
99
  * Tag the version and push to GitHub
88
100
 
89
- Jeweler also handles releasing your gem to RubyForge. Assuming you've configured ~/.ruby_forge properly and included :rubyforge_project in your Jeweler::Tasks block, the following will release your gem to RubyForge:
101
+ ## Releasing to RubyForge
102
+
103
+ Jeweler can also handle releasing to [RubyForge](http://rubyforge.org). There are a few steps you need to do before doing any RubyForge releases with Jeweler:
104
+
105
+ * [Create an account on RubyForge](http://rubyforge.org/account/register.php)
106
+ * Request a project on RubyForge. This involves waiting for a project approval, which can take any amount of time from a few hours to a week
107
+ * You might want to create an umbrella project where you can publish your gems, instead of one project per gem
108
+ * Install the RubyForge gem: sudo gem install rubyforge
109
+ * Run 'rubyforge setup' and fill in your username and password for RubyForge
110
+ * Run 'rubyforge config' to pull down information about your projects
111
+ * Run 'rubyforge login' to make sure you are able to login
112
+
113
+ With this in place, you now update your Jeweler::Tasks to setup `rubyforge_project` with the RubyForge project you've just created. (Note, using `jeweler --rubyforge` when generating the project does this for you automatically.)
114
+
115
+ begin
116
+ require 'jeweler'
117
+ Jeweler::Tasks.new do |s|
118
+ s.name = "the-perfect-gem"
119
+ s.summary = "TODO"
120
+ s.description = "TODO"
121
+ s.email = "josh@technicalpickles.com"
122
+ s.homepage = "http://github.com/technicalpickles/the-perfect-gem"
123
+ s.description = "TODO"
124
+ s.authors = ["Josh Nichols"]
125
+ s.rubyforge_project = 'the-perfect-gem' # This line would be new
126
+ end
127
+ rescue LoadError
128
+ puts "Jeweler not available. Install it with: sudo gem install jeweler"
129
+ end
130
+
131
+ # These are new tasks
132
+ begin
133
+ require 'rake/contrib/sshpublisher'
134
+ namespace :rubyforge do
135
+
136
+ desc "Release gem and RDoc documentation to RubyForge"
137
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
138
+
139
+ namespace :release do
140
+ desc "Publish RDoc to RubyForge."
141
+ task :docs => [:rdoc] do
142
+ config = YAML.load(
143
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
144
+ )
145
+
146
+ host = "#{config['username']}@rubyforge.org"
147
+ remote_dir = "/var/www/gforge-projects/the-perfect-gem/"
148
+ local_dir = 'rdoc'
149
+
150
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
151
+ end
152
+ end
153
+ end
154
+ rescue LoadError
155
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
156
+ end
90
157
 
91
- rake rubyforge:release:gem
158
+ Now you must initially create a 'package' for your gem in your 'project':
159
+
160
+ $ rake rubyforge:setup
161
+
162
+ With all that setup out of the way, you can now release to RubyForge with impunity. This would release the current version of your gem, and upload the rdoc as your project's webpage.
163
+
164
+ $ rake rubyforge:release
92
165
 
93
166
  ## Workflow
94
167
 
95
168
  * Hack, commit, hack, commit, etc, etc
96
169
  * `rake version:bump:patch release` to do the actual version bump and release
97
170
  * Have a delicious scotch
98
- * Go to [Has My Gem Built Yet](http://hasmygembuiltyet.org) and wait for your gem to be built
171
+ * Install [gemstalker](http://github.com/technicalpickles/gemstalker), and use it to know when gem is built. It typically builds in a few minutes, but won't be installable for another 15 minutes.
99
172
 
100
- ## Links
101
-
102
- * [Bugs](http://technicalpickles.lighthouseapp.com/projects/23560-jeweler/overview)
103
- * [Donate](http://pledgie.org/campaigns/2604)
data/ROADMAP ADDED
@@ -0,0 +1,12 @@
1
+ = 1.0
2
+
3
+ * Improve documentation on wiki/readme
4
+
5
+ = Unscheduled, or waiting for contributions
6
+
7
+ * Add command to output the Jeweler::Tasks to help with upgrading/migrating
8
+ * Support github user/token on generator command line
9
+ * Support C extensions
10
+ * Support JRuby gems
11
+ * Support thor
12
+ * Dealing with version bumps in other remotes
data/Rakefile CHANGED
@@ -2,6 +2,9 @@ require 'rake'
2
2
 
3
3
  $LOAD_PATH.unshift('lib')
4
4
 
5
+ gem 'git'
6
+ require 'git'
7
+
5
8
  begin
6
9
  require 'jeweler'
7
10
  Jeweler::Tasks.new do |gem|
@@ -11,28 +14,49 @@ begin
11
14
  gem.homepage = "http://github.com/technicalpickles/jeweler"
12
15
  gem.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
13
16
  gem.authors = ["Josh Nichols"]
14
- gem.files = FileList["[A-Z]*", "{bin,generators,lib,test}/**/*", 'lib/jeweler/templates/.gitignore']
15
- gem.add_dependency 'schacon-git'
17
+ gem.files.include %w(lib/jeweler/templates/.document lib/jeweler/templates/.gitignore)
18
+
19
+ gem.add_dependency "git", ">= 1.2.1"
20
+ gem.add_dependency "rubyforge"
21
+
22
+ gem.rubyforge_project = "pickles"
23
+
24
+ gem.add_development_dependency "thoughtbot-shoulda"
25
+ gem.add_development_dependency "mhennemeyer-output_catcher"
26
+ gem.add_development_dependency "rr"
27
+ gem.add_development_dependency "mocha"
28
+ gem.add_development_dependency "redgreen"
29
+ end
30
+
31
+ Jeweler::RubyforgeTasks.new do |t|
32
+ t.doc_task = :yardoc
16
33
  end
17
34
  rescue LoadError
18
- puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
35
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
19
36
  end
20
37
 
38
+
21
39
  require 'rake/testtask'
22
40
  Rake::TestTask.new(:test) do |test|
23
- test.pattern = 'test/**/test_*.rb'
41
+ test.test_files = FileList.new('test/**/test_*.rb') do |list|
42
+ list.exclude 'test/test_helper.rb'
43
+ end
24
44
  test.libs << 'test'
45
+ test.verbose = true
25
46
  end
26
47
 
27
- require 'rake/rdoctask'
28
- Rake::RDocTask.new do |rdoc|
29
- rdoc.rdoc_dir = 'rdoc'
30
- rdoc.title = 'jeweler'
31
- rdoc.options << '--line-numbers' << '--inline-source'
32
- rdoc.rdoc_files.include('README.markdown')
33
- rdoc.rdoc_files.include('lib/**/*.rb')
48
+ begin
49
+ require 'yard'
50
+ YARD::Rake::YardocTask.new(:yardoc) do |t|
51
+ t.files = FileList['lib/**/*.rb'].exclude('lib/jeweler/templates/**/*.rb')
52
+ end
53
+ rescue LoadError
54
+ task :yardoc do
55
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
56
+ end
34
57
  end
35
58
 
59
+
36
60
  begin
37
61
  require 'rcov/rcovtask'
38
62
  Rcov::RcovTask.new(:rcov) do |rcov|
@@ -47,11 +71,23 @@ end
47
71
 
48
72
  begin
49
73
  require 'cucumber/rake/task'
50
- Cucumber::Rake::Task.new(:features)
74
+ Cucumber::Rake::Task.new(:features) do |features|
75
+ features.cucumber_opts = "features --format progress"
76
+ end
77
+ namespace :features do
78
+ Cucumber::Rake::Task.new(:pretty) do |features|
79
+ features.cucumber_opts = "features --format progress"
80
+ end
81
+ end
51
82
  rescue LoadError
52
83
  task :features do
53
84
  abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
54
85
  end
86
+ namespace :features do
87
+ task :pretty do
88
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
89
+ end
90
+ end
55
91
  end
56
92
 
57
93
  if ENV["RUN_CODE_RUN"] == "true"
@@ -59,3 +95,7 @@ if ENV["RUN_CODE_RUN"] == "true"
59
95
  else
60
96
  task :default => :test
61
97
  end
98
+
99
+
100
+ task :test => :check_dependencies
101
+ task :features => :check_dependencies
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 0
3
- :minor: 9
4
- :patch: 2
2
+ :patch: 0
3
+ :major: 1
4
+ :minor: 2
@@ -0,0 +1,83 @@
1
+ Feature: generating cucumber stories
2
+ In order to get started using cucumber in a project
3
+ A user should be able to
4
+ generate a project setup for their testing framework of choice
5
+
6
+ Scenario: sans cucumber setup
7
+ Given a working directory
8
+ And I have configured git sanely
9
+ And I do not want cucumber stories
10
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
11
+
12
+ And a file named 'the-perfect-gem/features/the-perfect-gem.feature' is not created
13
+ And a file named 'the-perfect-gem/features/support/env.rb' is not created
14
+ And a file named 'the-perfect-gem/features/steps/the-perfect-gem_steps.rb' is not created
15
+
16
+ Scenario: basic cucumber setup
17
+ Given a working directory
18
+ And I have configured git sanely
19
+ And I want cucumber stories
20
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
21
+
22
+ Then cucumber directories are created
23
+
24
+ And a file named 'the-perfect-gem/features/the-perfect-gem.feature' is created
25
+ And a file named 'the-perfect-gem/features/support/env.rb' is created
26
+ And a file named 'the-perfect-gem/features/step_definitions/the-perfect-gem_steps.rb' is created
27
+
28
+ And 'features/support/env.rb' requires 'the-perfect-gem'
29
+
30
+ Scenario: cucumber setup for bacon
31
+ Given a working directory
32
+ And I have configured git sanely
33
+ And I want cucumber stories
34
+ When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
35
+
36
+ Then 'features/support/env.rb' requires 'test/unit/assertions'
37
+ And cucumber world extends "Test::Unit::Assertions"
38
+
39
+ Scenario: cucumber setup for shoulda
40
+ Given a working directory
41
+ And I have configured git sanely
42
+ And I want cucumber stories
43
+ When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
44
+
45
+ Then 'features/support/env.rb' requires 'test/unit/assertions'
46
+ And cucumber world extends "Test::Unit::Assertions"
47
+
48
+ Scenario: cucumber setup for testunit
49
+ Given a working directory
50
+ And I have configured git sanely
51
+ And I want cucumber stories
52
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
53
+
54
+ Then 'features/support/env.rb' requires 'test/unit/assertions'
55
+ And cucumber world extends "Test::Unit::Assertions"
56
+
57
+ Scenario: cucumber setup for minitest
58
+ Given a working directory
59
+ And I have configured git sanely
60
+ And I want cucumber stories
61
+ When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
62
+
63
+ Then 'features/support/env.rb' requires 'mini/test'
64
+ And cucumber world extends "Mini::Test::Assertions"
65
+
66
+ Scenario: cucumber setup for rspec
67
+ Given a working directory
68
+ And I have configured git sanely
69
+ And I want cucumber stories
70
+ When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
71
+
72
+ Then 'features/support/env.rb' requires 'the-perfect-gem'
73
+ And 'features/support/env.rb' requires 'spec/expectations'
74
+
75
+ Scenario: cucumber setup for mirconaut
76
+ Given a working directory
77
+ And I have configured git sanely
78
+ And I want cucumber stories
79
+ When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
80
+
81
+ Then 'features/support/env.rb' requires 'the-perfect-gem'
82
+ And 'features/support/env.rb' requires 'micronaut/expectations'
83
+ And cucumber world extends "Micronaut::Matchers"
@@ -0,0 +1,76 @@
1
+ Feature: generated directory layout
2
+ In order to start a new gem
3
+ A user should be able to
4
+ generate a directory layout
5
+
6
+ Scenario: shared
7
+ Given a working directory
8
+ And I have configured git sanely
9
+ When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
10
+
11
+ Then a directory named 'the-perfect-gem' is created
12
+ And a directory named 'the-perfect-gem/lib' is created
13
+
14
+ And a file named 'the-perfect-gem/README.rdoc' is created
15
+ And a file named 'the-perfect-gem/.document' is created
16
+ And a file named 'the-perfect-gem/lib/the-perfect-gem.rb' is created
17
+
18
+ Scenario: bacon
19
+ Given a working directory
20
+ And I have configured git sanely
21
+ When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'
22
+
23
+ Then a directory named 'the-perfect-gem/spec' is created
24
+
25
+ And a file named 'the-perfect-gem/spec/spec_helper.rb' is created
26
+ And a file named 'the-perfect-gem/spec/the-perfect-gem_spec.rb' is created
27
+
28
+ Scenario: minitest
29
+ Given a working directory
30
+ And I have configured git sanely
31
+ When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'
32
+
33
+ Then a directory named 'the-perfect-gem/test' is created
34
+
35
+ And a file named 'the-perfect-gem/test/test_helper.rb' is created
36
+ And a file named 'the-perfect-gem/test/the-perfect-gem_test.rb' is created
37
+
38
+ Scenario: rspec
39
+ Given a working directory
40
+ And I have configured git sanely
41
+ When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'
42
+
43
+ Then a directory named 'the-perfect-gem/spec' is created
44
+
45
+ And a file named 'the-perfect-gem/spec/spec_helper.rb' is created
46
+ And a file named 'the-perfect-gem/spec/the-perfect-gem_spec.rb' is created
47
+
48
+ Scenario: shoulda
49
+ Given a working directory
50
+ And I have configured git sanely
51
+ When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'
52
+
53
+ Then a directory named 'the-perfect-gem/test' is created
54
+
55
+ And a file named 'the-perfect-gem/test/test_helper.rb' is created
56
+ And a file named 'the-perfect-gem/test/the-perfect-gem_test.rb' is created
57
+
58
+ Scenario: testunit
59
+ Given a working directory
60
+ And I have configured git sanely
61
+ When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'
62
+
63
+ Then a directory named 'the-perfect-gem/test' is created
64
+
65
+ And a file named 'the-perfect-gem/test/test_helper.rb' is created
66
+ And a file named 'the-perfect-gem/test/the-perfect-gem_test.rb' is created
67
+
68
+ Scenario: micronaut
69
+ Given a working directory
70
+ And I have configured git sanely
71
+ When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'
72
+
73
+ Then a directory named 'the-perfect-gem/examples' is created
74
+
75
+ And a file named 'the-perfect-gem/examples/example_helper.rb' is created
76
+ And a file named 'the-perfect-gem/examples/the-perfect-gem_example.rb' is created