ore 0.8.1 → 0.9.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 (74) hide show
  1. data/.gitignore +10 -0
  2. data/ChangeLog.md +70 -7
  3. data/LICENSE.txt +1 -1
  4. data/README.md +93 -88
  5. data/Rakefile +5 -5
  6. data/data/ore/templates/base/README.md.erb +3 -0
  7. data/data/ore/templates/base/README.rdoc.erb +3 -0
  8. data/data/ore/templates/base/README.tt.erb +3 -0
  9. data/data/ore/templates/base/template.yml +2 -2
  10. data/data/ore/templates/bin/bin/[name].erb +1 -1
  11. data/data/ore/templates/bundler/Gemfile.erb +14 -3
  12. data/data/ore/templates/bundler/template.yml +7 -2
  13. data/data/ore/templates/bundler_tasks/_tasks.erb +1 -0
  14. data/data/ore/templates/bundler_tasks/template.yml +6 -0
  15. data/data/ore/templates/gem_package_task/_tasks.erb +5 -0
  16. data/data/ore/templates/gem_package_task/template.yml +4 -0
  17. data/data/ore/templates/gemspec/[name].gemspec.erb +45 -0
  18. data/data/ore/templates/gemspec/template.yml +2 -0
  19. data/data/ore/templates/{base → gemspec_yml}/[name].gemspec.erb +36 -55
  20. data/data/ore/templates/gemspec_yml/gemspec.yml.erb +41 -0
  21. data/data/ore/templates/gemspec_yml/template.yml +2 -0
  22. data/data/ore/templates/git/.gitignore.erb +3 -0
  23. data/data/ore/templates/git/template.yml +2 -0
  24. data/data/ore/templates/hg/.hgignore.erb +3 -0
  25. data/data/ore/templates/hg/template.yml +2 -0
  26. data/data/ore/templates/jeweler_tasks/_tasks.erb +3 -12
  27. data/data/ore/templates/jeweler_tasks/template.yml +4 -3
  28. data/data/ore/templates/rdoc/_tasks.erb +1 -1
  29. data/data/ore/templates/rdoc/template.yml +3 -0
  30. data/data/ore/templates/rspec/_tasks.erb +1 -1
  31. data/data/ore/templates/rspec/spec/spec_helper.rb.erb +1 -1
  32. data/data/ore/templates/rspec/template.yml +2 -2
  33. data/data/ore/templates/rubygems_tasks/_tasks.erb +14 -0
  34. data/data/ore/templates/rubygems_tasks/template.yml +7 -0
  35. data/data/ore/templates/rvmrc/.rvmrc.erb +9 -15
  36. data/data/ore/templates/yard/_gemfile_development.erb +0 -1
  37. data/data/ore/templates/yard/_tasks.erb +1 -1
  38. data/data/ore/templates/yard/template.yml +5 -2
  39. data/gemspec.yml +5 -7
  40. data/lib/ore.rb +0 -2
  41. data/lib/ore/actions.rb +85 -0
  42. data/lib/ore/cli.rb +2 -32
  43. data/lib/ore/config.rb +20 -20
  44. data/lib/ore/generator.rb +101 -203
  45. data/lib/ore/naming.rb +160 -0
  46. data/lib/ore/options.rb +67 -0
  47. data/lib/ore/template.rb +8 -0
  48. data/lib/ore/template/directory.rb +60 -41
  49. data/lib/ore/template/helpers.rb +55 -7
  50. data/lib/ore/template/template.rb +61 -0
  51. data/ore.gemspec +35 -55
  52. data/spec/gemspec_examples.rb +33 -0
  53. data/spec/generator_spec.rb +188 -70
  54. data/spec/helpers/generator.rb +4 -2
  55. data/spec/helpers/matchers.rb +33 -0
  56. data/spec/naming_spec.rb +56 -0
  57. data/spec/spec_helper.rb +1 -1
  58. metadata +104 -117
  59. data/data/ore/templates/base/.gitignore.erb +0 -3
  60. data/data/ore/templates/base/_gemfile_development.erb +0 -3
  61. data/data/ore/templates/base/gemspec.yml.erb +0 -30
  62. data/data/ore/templates/bundler/_development_dependencies.erb +0 -1
  63. data/data/ore/templates/bundler/_gitignore.erb +0 -2
  64. data/data/ore/templates/bundler/_tasks.erb +0 -3
  65. data/data/ore/templates/jeweler_tasks/_development_dependencies.erb +0 -3
  66. data/data/ore/templates/jeweler_tasks/_gemfile_development.erb +0 -1
  67. data/data/ore/templates/ore_tasks/_development_dependencies.erb +0 -3
  68. data/data/ore/templates/ore_tasks/_gemfile_development.erb +0 -1
  69. data/data/ore/templates/ore_tasks/_tasks.erb +0 -14
  70. data/data/ore/templates/ore_tasks/template.yml +0 -5
  71. data/data/ore/templates/rdoc/_gitignore.erb +0 -1
  72. data/data/ore/templates/rspec/_development_dependencies.erb +0 -3
  73. data/data/ore/templates/rspec/_gemfile_development.erb +0 -1
  74. data/data/ore/templates/yard/_development_dependencies.erb +0 -1
@@ -0,0 +1,61 @@
1
+ module Ore
2
+ module Template
3
+ #
4
+ # The templates registered with the generator.
5
+ #
6
+ # @return [Hash{Symbol => String}]
7
+ # The template names and paths.
8
+ #
9
+ # @api semipublic
10
+ #
11
+ # @since 0.9.0
12
+ #
13
+ def self.templates
14
+ @@templates ||= {}
15
+ end
16
+
17
+ #
18
+ # Determines whether a template was registered.
19
+ #
20
+ # @param [Symbol, String] name
21
+ # The name of the template.
22
+ #
23
+ # @return [Boolean]
24
+ # Specifies whether the template was registered.
25
+ #
26
+ # @api semipublic
27
+ #
28
+ # @since 0.9.0
29
+ #
30
+ def self.template?(name)
31
+ self.templates.has_key?(name.to_sym)
32
+ end
33
+
34
+ #
35
+ # Registers a template with the generator.
36
+ #
37
+ # @param [String] path
38
+ # The path to the template.
39
+ #
40
+ # @return [Symbol]
41
+ # The name of the registered template.
42
+ #
43
+ # @raise [StandardError]
44
+ # The given path was not a directory.
45
+ #
46
+ # @api semipublic
47
+ #
48
+ # @since 0.9.0
49
+ #
50
+ def self.register(path)
51
+ unless File.directory?(path)
52
+ raise(StandardError,"#{path.dump} is must be a directory")
53
+ end
54
+
55
+ name = File.basename(path).to_sym
56
+
57
+ self.templates[name] = path
58
+ return name
59
+ end
60
+ end
61
+ end
data/ore.gemspec CHANGED
@@ -3,43 +3,44 @@
3
3
  require 'yaml'
4
4
 
5
5
  Gem::Specification.new do |gemspec|
6
- root = File.dirname(__FILE__)
6
+ root = File.dirname(__FILE__)
7
7
  lib_dir = File.join(root,'lib')
8
- files = if File.directory?('.git')
9
- `git ls-files`.split($/)
10
- elsif File.directory?('.hg')
11
- `hg manifest`.split($/)
12
- elsif File.directory?('.svn')
13
- `svn ls -R`.split($/).select { |path| File.file?(path) }
14
- else
15
- Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
16
- end
8
+ files = if File.directory?('.git')
9
+ `git ls-files`.split($/)
10
+ elsif File.directory?('.hg')
11
+ `hg manifest`.split($/)
12
+ elsif File.directory?('.svn')
13
+ `svn ls -R`.split($/).select { |path| File.file?(path) }
14
+ else
15
+ Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
16
+ end
17
17
 
18
18
  filter_files = lambda { |paths|
19
- case paths
20
- when Array
21
- (files & paths)
22
- when String
23
- (files & Dir[paths])
24
- end
19
+ files & case paths
20
+ when Array
21
+ paths
22
+ when String
23
+ Dir[paths]
24
+ end
25
25
  }
26
26
 
27
27
  version = {
28
- :file => 'ore/version.rb',
28
+ :file => 'ore/version.rb',
29
29
  :constant => 'Ore::VERSION'
30
30
  }
31
31
 
32
32
  defaults = {
33
- 'name' => File.basename(File.dirname(__FILE__)),
34
- 'files' => files,
35
- 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
36
- 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
37
- 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
33
+ 'name' => File.basename(File.dirname(__FILE__)),
34
+ 'files' => files,
35
+ 'require_paths' => ['ext', 'lib'].select { |dir| File.directory?(dir) },
36
+ 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
37
+ 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
38
+ 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}']
38
39
  }
39
40
 
40
41
  metadata = defaults.merge(YAML.load_file('gemspec.yml'))
41
42
 
42
- gemspec.name = metadata['name']
43
+ gemspec.name = metadata['name']
43
44
  gemspec.version = if metadata['version']
44
45
  metadata['version']
45
46
  else
@@ -49,50 +50,29 @@ Gem::Specification.new do |gemspec|
49
50
  eval(version[:constant])
50
51
  end
51
52
 
52
- gemspec.summary = metadata.fetch('summary',metadata['description'])
53
+ gemspec.summary = metadata.fetch('summary',metadata['description'])
53
54
  gemspec.description = metadata.fetch('description',metadata['summary'])
54
55
 
55
- case metadata['license']
56
- when Array
57
- gemspec.licenses = metadata['license']
58
- when String
59
- gemspec.license = metadata['license']
60
- end
61
-
62
- case metadata['authors']
63
- when Array
64
- gemspec.authors = metadata['authors']
65
- when String
66
- gemspec.author = metadata['authors']
67
- end
56
+ gemspec.licenses = Array(metadata['license'])
57
+ gemspec.authors = Array(metadata['authors'])
68
58
 
69
- gemspec.email = metadata['email']
59
+ gemspec.email = metadata['email']
70
60
  gemspec.homepage = metadata['homepage']
71
61
 
72
- case metadata['require_paths']
73
- when Array
74
- gemspec.require_paths = metadata['require_paths']
75
- when String
76
- gemspec.require_path = metadata['require_paths']
77
- end
78
-
79
- gemspec.files = filter_files[metadata['files']]
80
-
81
- gemspec.executables = metadata['executables']
82
- gemspec.extensions = metadata['extensions']
62
+ gemspec.require_paths = Array(metadata['require_paths'])
63
+ gemspec.files = filter_files[metadata['files']]
64
+ gemspec.executables = metadata['executables']
65
+ gemspec.extensions = metadata['extensions']
83
66
 
84
67
  if Gem::VERSION < '1.7.'
85
68
  gemspec.default_executable = gemspec.executables.first
86
69
  end
87
70
 
88
- gemspec.test_files = filter_files[metadata['test_files']]
89
-
90
- unless gemspec.files.include?('.document')
91
- gemspec.extra_rdoc_files = metadata['extra_doc_files']
92
- end
71
+ gemspec.test_files = filter_files[metadata['test_files']]
72
+ gemspec.extra_rdoc_files = Array(metadata['extra_doc_files'])
93
73
 
94
74
  gemspec.post_install_message = metadata['post_install_message']
95
- gemspec.requirements = metadata['requirements']
75
+ gemspec.requirements = metadata['requirements']
96
76
 
97
77
  if gemspec.respond_to?(:required_ruby_version=)
98
78
  gemspec.required_ruby_version = metadata['required_ruby_version']
@@ -0,0 +1,33 @@
1
+ require 'rspec'
2
+
3
+ require 'ore/options'
4
+
5
+ shared_examples "a gemspec" do
6
+ it "should have a name" do
7
+ subject.name.should == name
8
+ end
9
+
10
+ it "should not contain a version by default" do
11
+ subject.version.version.should == Ore::Options::DEFAULT_VERSION
12
+ end
13
+
14
+ it "should a dummy summary" do
15
+ subject.summary.should == Ore::Options::DEFAULT_SUMMARY
16
+ end
17
+
18
+ it "should a dummy description" do
19
+ subject.description.should == Ore::Options::DEFAULT_DESCRIPTION
20
+ end
21
+
22
+ it "should have a license" do
23
+ subject.license.should == Ore::Options::DEFAULT_LICENSE
24
+ end
25
+
26
+ it "should have authors" do
27
+ subject.authors.should == Ore::Options::DEFAULT_AUTHORS
28
+ end
29
+
30
+ it "should have a dummy homepage" do
31
+ subject.homepage.should_not be_empty
32
+ end
33
+ end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'gemspec_examples'
2
3
  require 'helpers/generator'
3
4
  require 'ore/generator'
4
5
 
@@ -17,38 +18,70 @@ describe Generator do
17
18
  end
18
19
 
19
20
  it "should create the lib/ directory" do
20
- @path.join('lib').should be_directory
21
+ @path.should have_directory('lib')
21
22
  end
22
23
 
23
24
  it "should create a file to load the project within lib/" do
24
- @path.join('lib','my','project.rb').should be_file
25
+ @path.should have_file('lib','my','project.rb')
25
26
  end
26
27
 
27
28
  it "should create a namespace directory within lib/" do
28
- @path.join('lib','my','project').should be_directory
29
+ @path.should have_directory('lib','my','project')
29
30
  end
30
31
 
31
32
  it "should create a version.rb file within the namespace directory" do
32
- @path.join('lib','my','project','version.rb').should be_file
33
+ @path.should have_file('lib','my','project','version.rb')
33
34
  end
34
35
 
35
36
  it "should not create the bin/ directory by default" do
36
- @path.join('bin').should_not be_directory
37
+ @path.should_not have_directory('bin')
37
38
  end
38
39
 
39
40
  it "should create a test/ directory by default" do
40
- @path.join('test').should_not be_directory
41
+ @path.should_not have_directory('test')
41
42
  end
42
43
 
43
- it "should create a gemspec.yml file" do
44
- @path.join('gemspec.yml').should be_file
44
+ it "should add a *.gemspec file" do
45
+ @path.join("#{name}.gemspec").should be_file
46
+ end
47
+
48
+ it "should add a .document file" do
49
+ @path.should have_file('.document')
50
+ end
51
+
52
+ it "should add a Rakefile" do
53
+ @path.should have_file('Rakefile')
54
+ end
55
+
56
+ it "should add a README.rdoc file" do
57
+ @path.should have_file('README.rdoc')
58
+ end
59
+
60
+ it "should add a ChangeLog.rdoc file" do
61
+ @path.should have_file('ChangeLog.rdoc')
62
+ end
63
+
64
+ it "should add a LICENSE.txt file" do
65
+ @path.should have_file('LICENSE.txt')
66
+ end
67
+ end
68
+
69
+ context "gemspec_yml" do
70
+ let(:name) { 'gemspec_yml_project' }
71
+
72
+ before(:all) do
73
+ generate!(name, :gemspec_yml => true)
74
+ end
75
+
76
+ it "should add a gemspec.yml file" do
77
+ @path.should have_file('gemspec.yml')
45
78
  end
46
79
 
47
80
  describe "gemspec.yml" do
48
- subject { @gemspec }
81
+ subject { YAML.load_file(@path.join('gemspec.yml')) }
49
82
 
50
83
  it "should have a name" do
51
- subject['name'].should == 'my-project'
84
+ subject['name'].should == name
52
85
  end
53
86
 
54
87
  it "should not contain a version by default" do
@@ -56,72 +89,117 @@ describe Generator do
56
89
  end
57
90
 
58
91
  it "should a dummy summary" do
59
- subject['summary'].should_not be_empty
92
+ subject['summary'].should == Ore::Options::DEFAULT_SUMMARY
60
93
  end
61
94
 
62
- it "should a description summary" do
63
- subject['description'].should_not be_empty
95
+ it "should a dummy description" do
96
+ subject['description'].should == Ore::Options::DEFAULT_DESCRIPTION
64
97
  end
65
98
 
66
99
  it "should have a license" do
67
- subject['license'].should == 'MIT'
100
+ subject['license'].should == Ore::Options::DEFAULT_LICENSE
68
101
  end
69
102
 
70
103
  it "should have authors" do
71
- subject['authors'].should_not be_empty
104
+ subject['authors'].should == Ore::Options::DEFAULT_AUTHORS[0]
72
105
  end
73
106
 
74
107
  it "should have a dummy homepage" do
75
108
  subject['homepage'].should_not be_empty
76
109
  end
77
110
 
78
- it "should have 'ore-tasks' as a development dependency" do
79
- subject['development_dependencies'].should have_key('ore-tasks')
111
+ it "should have 'rubygems-tasks' as a development dependency" do
112
+ subject['development_dependencies'].should have_key('rubygems-tasks')
80
113
  end
81
114
  end
82
115
 
83
116
  it "should add a *.gemspec file" do
84
- @path.join('my-project.gemspec').should be_file
117
+ @path.should have_file("#{name}.gemspec")
85
118
  end
86
119
 
87
- it "should add a .document file" do
88
- @path.join('.document').should be_file
120
+ describe "*.gemspec file" do
121
+ subject { @gemspec }
122
+
123
+ it_should_behave_like "a gemspec"
89
124
  end
125
+ end
90
126
 
91
- it "should add a Rakefile" do
92
- @path.join('Rakefile').should be_file
127
+ context "gemspec" do
128
+ let(:name) { 'gemspec_project' }
129
+
130
+ before(:all) do
131
+ generate!(name, :gemspec => true)
93
132
  end
94
133
 
95
- it "should add a README.rdoc file" do
96
- @path.join('README.rdoc').should be_file
134
+ it "should disable the gemspec_yml template" do
135
+ @generator.disabled_templates.should include(:gemspec_yml)
97
136
  end
98
137
 
99
- it "should add a ChangeLog.rdoc file" do
100
- @path.join('ChangeLog.rdoc').should be_file
138
+ it "should add a *.gemspec file" do
139
+ @path.should have_file("#{name}.gemspec")
101
140
  end
102
141
 
103
- it "should add a LICENSE.txt file" do
104
- @path.join('LICENSE.txt').should be_file
142
+ context "*.gemspec file" do
143
+ subject { @gemspec }
144
+
145
+ it_should_behave_like "a gemspec"
146
+
147
+ it "should have 'rubygems-tasks' as a development dependency" do
148
+ subject.should have_development_dependency('rubygems-tasks')
149
+ end
150
+ end
151
+ end
152
+
153
+ context "git" do
154
+ let(:name) { 'git-project' }
155
+
156
+ before(:all) do
157
+ generate!(name, :git => true)
158
+ end
159
+
160
+ it "should create a .git directory" do
161
+ @path.should have_directory('.git')
162
+ end
163
+
164
+ it "should create a .gitignore file" do
165
+ @path.should have_file('.gitignore')
166
+ end
167
+ end
168
+
169
+ context "hg" do
170
+ let(:name) { 'hg-project' }
171
+
172
+ before(:all) do
173
+ generate!(name, :hg => true)
174
+ end
175
+
176
+ it "should create a .hg directory" do
177
+ @path.should have_directory('.hg')
178
+ end
179
+
180
+ it "should create a .hgignore file" do
181
+ @path.should have_file('.hgignore')
105
182
  end
106
183
  end
107
184
 
108
185
  context "bin" do
109
- let(:name) { 'script-project' }
186
+ let(:name) { 'script-project' }
187
+ let(:script) { File.join('bin',name) }
110
188
 
111
189
  before(:all) do
112
190
  generate!(name, :bin => true)
113
191
  end
114
192
 
115
193
  it "should add a 'bin/' directory" do
116
- @path.join('bin').should be_directory
194
+ @path.should have_directory('bin')
117
195
  end
118
196
 
119
197
  it "should add a bin/script-project file" do
120
- @path.join('bin',name).should be_file
198
+ @path.should have_file(script)
121
199
  end
122
200
 
123
201
  it "should make the bin/script-project file executable" do
124
- @path.join('bin',name).should be_executable
202
+ @path.should have_executable(script)
125
203
  end
126
204
  end
127
205
 
@@ -133,7 +211,7 @@ describe Generator do
133
211
  end
134
212
 
135
213
  it "should add a .gemtest file" do
136
- @path.join('.gemtest').should be_file
214
+ @path.should have_file('.gemtest')
137
215
  end
138
216
  end
139
217
 
@@ -145,11 +223,11 @@ describe Generator do
145
223
  end
146
224
 
147
225
  it "should add a Gemfile" do
148
- @path.join('Gemfile').should be_file
226
+ @path.should have_file('Gemfile')
149
227
  end
150
228
 
151
229
  it "should add 'bundler' as a development dependency" do
152
- @gemspec['development_dependencies'].should have_key('bundler')
230
+ @gemspec.should have_development_dependency('bundler')
153
231
  end
154
232
 
155
233
  it "should add 'Gemfile.lock' to the .gitignore file" do
@@ -177,7 +255,7 @@ describe Generator do
177
255
  end
178
256
 
179
257
  it "should add a '.document' file" do
180
- @path.join('.document').should be_file
258
+ @path.should have_file('.document')
181
259
  end
182
260
 
183
261
  context ".document" do
@@ -211,11 +289,11 @@ describe Generator do
211
289
  end
212
290
 
213
291
  it "should add a .yardopts file" do
214
- @path.join('.yardopts').should be_file
292
+ @path.should have_file('.yardopts')
215
293
  end
216
294
 
217
295
  it "should add a '.document' file" do
218
- @path.join('.document').should be_file
296
+ @path.should have_file('.document')
219
297
  end
220
298
 
221
299
  context ".document" do
@@ -249,11 +327,11 @@ describe Generator do
249
327
  end
250
328
 
251
329
  it "should add a README.md file" do
252
- @path.join('README.md').should be_file
330
+ @path.should have_file('README.md')
253
331
  end
254
332
 
255
333
  it "should add a ChangeLog.md file" do
256
- @path.join('ChangeLog.md').should be_file
334
+ @path.should have_file('ChangeLog.md')
257
335
  end
258
336
 
259
337
  it "should set --markup to markdown in .yardopts" do
@@ -269,11 +347,11 @@ describe Generator do
269
347
  end
270
348
 
271
349
  it "should add a README.tt file" do
272
- @path.join('README.tt').should be_file
350
+ @path.should have_file('README.tt')
273
351
  end
274
352
 
275
353
  it "should add a ChangeLog.tt file" do
276
- @path.join('ChangeLog.tt').should be_file
354
+ @path.should have_file('ChangeLog.tt')
277
355
  end
278
356
 
279
357
  it "should set --markup to textile in .yardopts" do
@@ -289,7 +367,7 @@ describe Generator do
289
367
  end
290
368
 
291
369
  it "should still add 'yard' as a development dependency" do
292
- @gemspec['development_dependencies'].should have_key('yard')
370
+ @gemspec.should have_development_dependency('yard')
293
371
  end
294
372
  end
295
373
 
@@ -305,15 +383,15 @@ describe Generator do
305
383
  end
306
384
 
307
385
  it "should create the test/ directory" do
308
- @path.join('test').should be_directory
386
+ @path.should have_directory('test')
309
387
  end
310
388
 
311
389
  it "should create the test/helper.rb file" do
312
- @path.join('test','helper.rb').should be_file
390
+ @path.should have_file('test','helper.rb')
313
391
  end
314
392
 
315
393
  it "should add a single test_*.rb file" do
316
- @path.join('test','test_test_unit_project.rb').should be_file
394
+ @path.should have_file('test','test_test_unit_project.rb')
317
395
  end
318
396
  end
319
397
 
@@ -329,27 +407,27 @@ describe Generator do
329
407
  end
330
408
 
331
409
  it "should not create the test/ directory" do
332
- @path.join('test').should_not be_directory
410
+ @path.should_not have_directory('test')
333
411
  end
334
412
 
335
413
  it "should create the spec/ directory" do
336
- @path.join('spec').should be_directory
414
+ @path.should have_directory('spec')
337
415
  end
338
416
 
339
417
  it "should add a spec_helper.rb file" do
340
- @path.join('spec','spec_helper.rb').should be_file
418
+ @path.should have_file('spec','spec_helper.rb')
341
419
  end
342
420
 
343
421
  it "should add a single *_spec.rb file" do
344
- @path.join('spec','rspec_project_spec.rb').should be_file
422
+ @path.should have_file('spec','rspec_project_spec.rb')
345
423
  end
346
424
 
347
425
  it "should add a .rspec file" do
348
- @path.join('.rspec').should be_file
426
+ @path.should have_file('.rspec')
349
427
  end
350
428
 
351
429
  it "should add 'rspec' as a development dependency" do
352
- @gemspec['development_dependencies'].should have_key('rspec')
430
+ @gemspec.should have_development_dependency('rspec')
353
431
  end
354
432
  end
355
433
 
@@ -361,7 +439,7 @@ describe Generator do
361
439
  end
362
440
 
363
441
  it "should not add 'rspec' as a development dependency" do
364
- @gemspec['development_dependencies'].should_not have_key('rspec')
442
+ @gemspec.should_not have_development_dependency('rspec')
365
443
  end
366
444
  end
367
445
 
@@ -372,12 +450,16 @@ describe Generator do
372
450
  generate!(name, :jeweler_tasks => true)
373
451
  end
374
452
 
375
- it "should disable the ore_tasks template" do
376
- @generator.disabled_templates.should include(:ore_tasks)
453
+ it "should disable the rubygems_tasks template" do
454
+ @generator.disabled_templates.should include(:rubygems_tasks)
455
+ end
456
+
457
+ it "should disable the bundler_tasks template" do
458
+ @generator.disabled_templates.should include(:bundler_tasks)
377
459
  end
378
460
 
379
461
  it "should add 'jeweler' as a development dependency" do
380
- @gemspec['development_dependencies'].should have_key('jeweler')
462
+ @gemspec.should have_development_dependency('jeweler')
381
463
  end
382
464
  end
383
465
 
@@ -389,43 +471,79 @@ describe Generator do
389
471
  end
390
472
 
391
473
  it "should not add 'jeweler' as a development dependency" do
392
- @gemspec['development_dependencies'].should_not have_key('jeweler')
474
+ @gemspec.should_not have_development_dependency('jeweler')
393
475
  end
394
476
  end
395
477
 
396
- context "ore tasks" do
397
- let(:name) { 'ore_project' }
478
+ context "rubygems-tasks" do
479
+ let(:name) { 'rubygems_tasks_project' }
398
480
 
399
481
  before(:all) do
400
- generate!(name, :ore_tasks => true)
482
+ generate!(name, :rubygems_tasks => true)
401
483
  end
402
484
 
403
485
  it "should disable the jeweler_tasks template" do
404
486
  @generator.disabled_templates.should include(:jeweler_tasks)
405
487
  end
406
488
 
407
- it "should omit 'ore-core' as a development dependency" do
408
- @gemspec['development_dependencies'].should_not have_key('ore-core')
489
+ it "should disable the bundler_tasks template" do
490
+ @generator.disabled_templates.should include(:bundler_tasks)
409
491
  end
410
492
 
411
- it "should add 'ore-tasks' as a development dependency" do
412
- @gemspec['development_dependencies'].should have_key('ore-tasks')
493
+ it "should add 'rubygems-tasks' as a development dependency" do
494
+ @gemspec.should have_development_dependency('rubygems-tasks')
413
495
  end
414
496
  end
415
497
 
416
- context "ore tasks with bundler" do
498
+ context "rubygems-tasks with bundler" do
417
499
  let(:name) { 'bundled_ore_project' }
418
500
 
419
501
  before(:all) do
420
- generate!(name, :bundler => true, :ore_tasks => true)
502
+ generate!(name, :bundler => true, :rubygems_tasks => true)
503
+ end
504
+
505
+ it "should not add 'rubygems-tasks' as a development dependency" do
506
+ @gemspec.should_not have_development_dependency('rubygems-tasks')
421
507
  end
508
+ end
509
+
510
+ context "bundler_tasks" do
511
+ let(:name) { 'bundler_tasks_project' }
422
512
 
423
- it "should omit 'ore-core' as a development dependency" do
424
- @gemspec['development_dependencies'].should_not have_key('ore-core')
513
+ before(:all) do
514
+ generate!(name, :bundler_tasks => true)
515
+ end
516
+
517
+ it "should disable the jeweler_tasks template" do
518
+ @generator.disabled_templates.should include(:jeweler_tasks)
519
+ end
520
+
521
+ it "should disable the rubygems_tasks template" do
522
+ @generator.disabled_templates.should include(:rubygems_tasks)
523
+ end
524
+
525
+ it "should enable the bundler template" do
526
+ @generator.enabled_templates.should include(:bundler)
527
+ end
528
+ end
529
+
530
+ context "gem_package_task" do
531
+ let(:name) { 'gem_package_task_project' }
532
+
533
+ before(:all) do
534
+ generate!(name, :gem_package_task => true)
535
+ end
536
+
537
+ it "should disable the rubygems_tasks template" do
538
+ @generator.disabled_templates.should include(:rubygems_tasks)
539
+ end
540
+
541
+ it "should disable the jeweler_tasks template" do
542
+ @generator.disabled_templates.should include(:jeweler_tasks)
425
543
  end
426
544
 
427
- it "should not add 'ore-tasks' as a development dependency" do
428
- @gemspec['development_dependencies'].should_not have_key('ore-tasks')
545
+ it "should disable the bundler_tasks template" do
546
+ @generator.disabled_templates.should include(:bundler_tasks)
429
547
  end
430
548
  end
431
549