technicalpickles-jeweler 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,12 +31,12 @@ class Jeweler
31
31
  self.files = repo.ls_files.keys - repo.lib.ignored_files
32
32
  end
33
33
 
34
- if blank?(test_files)
34
+ if blank?(test_files) && File.directory?(File.join(base_dir, '.git'))
35
35
  repo = Git.open(base_dir)
36
36
  self.test_files = FileList['{spec,test,examples}/**/*.rb'] - repo.lib.ignored_files
37
37
  end
38
38
 
39
- if blank?(executable)
39
+ if blank?(executables)
40
40
  self.executables = Dir["bin/*"].map { |f| File.basename(f) }
41
41
  end
42
42
 
data/lib/jeweler/tasks.rb CHANGED
@@ -6,6 +6,28 @@ class Rake::Application
6
6
  end
7
7
 
8
8
  class Jeweler
9
+ # Rake tasks for managing your gem.
10
+ #
11
+ # Here's a basic example of using it:
12
+ #
13
+ # Jeweler::Tasks.new do |gem|
14
+ # gem.name = "jeweler"
15
+ # gem.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
16
+ # gem.email = "josh@technicalpickles.com"
17
+ # gem.homepage = "http://github.com/technicalpickles/jeweler"
18
+ # gem.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
19
+ # gem.authors = ["Josh Nichols"]
20
+ # end
21
+ #
22
+ # The block variable gem is actually a Gem::Specification, so you can do anything you would normally do with a Gem::Specification. For more details, see the official gemspec reference: http://docs.rubygems.org/read/chapter/20
23
+ #
24
+ # Jeweler fills in a few reasonable defaults for you:
25
+ #
26
+ # [gem.files] a Rake::FileList of anything that is in git and not gitignored. You can include/exclude this default set, or override it entirely
27
+ # [gem.test_files] Similar to gem.files, except it's only things under the spec, test, or examples directory.
28
+ # [gem.extra_rdoc_files] a Rake::FileList including files like README*, ChangeLog*, and LICENSE*
29
+ # [gem.executables] uses anything found in the bin/ directory. You can override this.
30
+ #
9
31
  class Tasks < ::Rake::TaskLib
10
32
  attr_accessor :gemspec, :jeweler
11
33
 
@@ -90,34 +112,6 @@ class Jeweler
90
112
  jeweler.release
91
113
  end
92
114
 
93
- namespace :rubyforge do
94
- namespace :release do
95
- desc "Release the current gem version to RubyForge."
96
- task :gem => [:gemspec, :build] do
97
- begin
98
- jeweler.release_gem_to_rubyforge
99
- rescue NoRubyForgeProjectInGemspecError => e
100
- abort "Setting up RubyForge requires that you specify a 'rubyforge_project' in your Jeweler::Tasks declaration"
101
- rescue MissingRubyForgePackageError => e
102
- abort "Rubyforge reported that the #{e.message} package isn't setup. Run rake rubyforge:setup to do so."
103
- rescue RubyForgeProjectNotConfiguredError => e
104
- abort "RubyForge reported that #{e.message} wasn't configured. This means you need to run 'rubyforge setup', 'rubyforge login', and 'rubyforge configure', or maybe the project doesn't exist on RubyForge"
105
- end
106
- end
107
- end
108
-
109
- desc "Setup a rubyforge project for this gem"
110
- task :setup do
111
- begin
112
- jeweler.setup_rubyforge
113
- rescue NoRubyForgeProjectInGemspecError => e
114
- abort "Setting up RubyForge requires that you specify a 'rubyforge_project' in your Jeweler::Tasks declaration"
115
- rescue RubyForgeProjectNotConfiguredError => e
116
- abort "The RubyForge reported that #{e.message} wasn't configured. This means you need to run 'rubyforge setup', 'rubyforge login', and 'rubyforge configure', or maybe the project doesn't exist on RubyForge"
117
- end
118
- end
119
-
120
- end
121
115
  end
122
116
  end
123
117
  end
@@ -17,7 +17,9 @@ begin
17
17
  end
18
18
 
19
19
  <% if should_setup_rubyforge %>
20
- Jeweler::RubyforgeTasks.new
20
+ Jeweler::RubyforgeTasks.new do |rubyforge|
21
+ rubyforge.doc_task = "<%= doc_task %>"
22
+ end
21
23
  <% end %>
22
24
  rescue LoadError
23
25
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
@@ -115,11 +117,12 @@ end
115
117
 
116
118
  task :default => :<%= default_task %>
117
119
 
120
+ <% case documentation_framework %>
121
+ <% when :rdoc %>
118
122
  require 'rake/rdoctask'
119
123
  Rake::RDocTask.new do |rdoc|
120
- if File.exist?('VERSION.yml')
121
- config = YAML.load(File.read('VERSION.yml'))
122
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
124
+ if File.exist?('VERSION')
125
+ version = File.read('VERSION')
123
126
  else
124
127
  version = ""
125
128
  end
@@ -129,4 +132,13 @@ Rake::RDocTask.new do |rdoc|
129
132
  rdoc.rdoc_files.include('README*')
130
133
  rdoc.rdoc_files.include('lib/**/*.rb')
131
134
  end
132
-
135
+ <% when :yard %>
136
+ begin
137
+ require 'yard'
138
+ YARD::Rake::YardocTask.new
139
+ rescue LoadError
140
+ task :yardoc do
141
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
142
+ end
143
+ end
144
+ <% end %>
@@ -3,6 +3,59 @@ require 'test_helper'
3
3
  class Jeweler
4
4
  module Commands
5
5
  class TestInstallGem < Test::Unit::TestCase
6
+ rubyforge_command_context "running" do
7
+ setup do
8
+ stub(@gemspec_helper).gem_path { 'pkg/zomg-1.1.1.gem' }
9
+ stub(@command).sudo_wrapper { 'sudo gem install pkg/zomg-1.1.1.gem' }
10
+ stub(@command).sh
11
+
12
+ @command.run
13
+ end
14
+
15
+ should "call sudo wrapper with gem install" do
16
+ assert_received(@command) {|command| command.sudo_wrapper('gem install pkg/zomg-1.1.1.gem') }
17
+ end
18
+
19
+ should "call sh with output of sudo wrapper" do
20
+ assert_received(@command) {|command| command.sh 'sudo gem install pkg/zomg-1.1.1.gem' }
21
+ end
22
+ end
23
+
24
+ rubyforge_command_context "use_sudo?" do
25
+ should "be false on mswin" do
26
+ stub(@command).host_os { "i386-mswin32" }
27
+ assert ! @command.use_sudo?
28
+ end
29
+
30
+ should "be false on windows" do
31
+ stub(@command).host_os { "windows" }
32
+ assert ! @command.use_sudo?
33
+ end
34
+
35
+ should "be false on cygwin" do
36
+ stub(@command).host_os { "cygwin" }
37
+ assert ! @command.use_sudo?
38
+ end
39
+
40
+ should "be true on basically anything else" do
41
+ stub(@command).host_os { "darwin9" }
42
+ assert @command.use_sudo?
43
+ end
44
+ end
45
+
46
+ rubyforge_command_context "sudo_wrapper" do
47
+ should "prefix sudo if needed" do
48
+ stub(@command).use_sudo? { true }
49
+ assert_equal "sudo blarg", @command.sudo_wrapper("blarg")
50
+ end
51
+
52
+ should "not prefix with sudo if unneeded" do
53
+ stub(@command).use_sudo? { false }
54
+ assert_equal "blarg", @command.sudo_wrapper("blarg")
55
+ end
56
+ end
57
+
58
+
6
59
  build_command_context "build for jeweler" do
7
60
  setup do
8
61
  @command = Jeweler::Commands::InstallGem.build_for(@jeweler)
@@ -4,175 +4,137 @@ class Jeweler
4
4
  module Commands
5
5
  class TestRelease < Test::Unit::TestCase
6
6
 
7
- context "with pending changes" do
8
- setup do
9
- @repo = Object.new
10
- stub(@repo).checkout(anything)
11
- stub(@repo).status { status }
7
+ rubyforge_command_context "running" do
8
+ context "happily" do
9
+ setup do
10
+ stub(@command).clean_staging_area? { true }
12
11
 
13
- @command = Jeweler::Commands::Release.new
14
- @command.output = @output
15
- @command.repo = @repo
16
- @command.gemspec_helper = @gemspec_helper
17
- @command.version = '1.2.3'
12
+ stub(@repo).checkout(anything)
18
13
 
19
- stub(@command).any_pending_changes? { true }
20
- end
14
+ stub(@command).regenerate_gemspec!
15
+
16
+ stub(@command).gemspec_changed? { true }
17
+ stub(@command).commit_gemspec! { true }
18
+
19
+ stub(@repo).push
20
+
21
+ stub(@command).release_not_tagged? { true }
22
+ stub(@command).tag_release!
21
23
 
22
- should 'raise error' do
23
- assert_raises RuntimeError, /try commiting/i do
24
24
  @command.run
25
25
  end
26
- end
27
- end
28
26
 
29
- context "run without pending changes, and gemspec changed, and tagged not created already" do
30
- setup do
31
- @repo = Object.new
32
- stub(@repo) do
33
- checkout(anything)
34
- add(anything)
35
- commit(anything)
36
- push
27
+ should "checkout master" do
28
+ assert_received(@repo) {|repo| repo.checkout('master') }
37
29
  end
38
30
 
39
- @gemspec_helper = Object.new
40
- stub(@gemspec_helper) do
41
- write
42
- path {'zomg.gemspec'}
43
- update_version('1.2.3')
31
+ should "regenerate gemspec" do
32
+ assert_received(@command) {|command| command.regenerate_gemspec! }
44
33
  end
45
34
 
46
- @output = StringIO.new
35
+ should "commit gemspec" do
36
+ assert_received(@command) {|command| command.commit_gemspec! }
37
+ end
47
38
 
48
- @command = Jeweler::Commands::Release.new :output => @output,
49
- :repo => @repo,
50
- :gemspec_helper => @gemspec_helper,
51
- :version => '1.2.3'
39
+ should "push" do
40
+ assert_received(@repo) {|repo| repo.push }
41
+ end
52
42
 
53
- stub(@command).tag_release!
54
- stub(@command).gemspec_changed? { true }
55
- stub(@command).any_pending_changes? { false }
56
- stub(@command).regenerate_gemspec!
57
- stub(@command).commit_gemspec!
58
- stub(@command).release_tagged? { false }
43
+ should "tag release" do
44
+ assert_received(@command) {|command| command.tag_release! }
45
+ end
59
46
 
60
- @command.run
61
47
  end
62
48
 
63
- should "checkout master" do
64
- assert_received(@repo) {|repo| repo.checkout('master') }
65
- end
49
+ context "with an unclean staging area" do
50
+ setup do
51
+ stub(@command).clean_staging_area? { false }
52
+ end
66
53
 
67
- should "regenerate gemspec" do
68
- assert_received(@command) {|command| command.regenerate_gemspec! }
54
+ should 'raise error' do
55
+ assert_raises RuntimeError, /try commiting/i do
56
+ @command.run
57
+ end
58
+ end
69
59
  end
70
60
 
71
- should "commit gemspec" do
72
- assert_received(@command) {|command| command.commit_gemspec! }
73
- end
61
+ context "with an unchanged gemspec" do
62
+ setup do
63
+ stub(@command).clean_staging_area? { true }
74
64
 
75
- should "tag release" do
76
- assert_received(@command) {|command| command.tag_release! }
77
- end
78
- end
65
+ stub(@repo).checkout(anything)
79
66
 
80
- context "run without pending changes, and gemspec didn't change, and tagged not created already" do
81
- setup do
82
- @repo = Object.new
83
- stub(@repo) do
84
- checkout(anything)
85
- add(anything)
86
- commit(anything)
87
- push
67
+ stub(@command).regenerate_gemspec!
68
+
69
+ stub(@command).gemspec_changed? { false }
70
+ dont_allow(@command).commit_gemspec! { true }
71
+
72
+ stub(@repo).push
73
+
74
+ stub(@command).release_not_tagged? { true }
75
+ stub(@command).tag_release!
76
+
77
+ @command.run
88
78
  end
89
79
 
90
- @gemspec_helper = Object.new
91
- stub(@gemspec_helper) do
92
- write
93
- path {'zomg.gemspec'}
94
- update_version('1.2.3')
80
+ should "checkout master" do
81
+ assert_received(@repo) {|repo| repo.checkout('master') }
95
82
  end
96
83
 
97
- @output = StringIO.new
84
+ should "regenerate gemspec" do
85
+ assert_received(@command) {|command| command.regenerate_gemspec! }
86
+ end
98
87
 
99
- @command = Jeweler::Commands::Release.new :output => @output,
100
- :repo => @repo,
101
- :gemspec_helper => @gemspec_helper,
102
- :version => '1.2.3'
88
+ should "push" do
89
+ assert_received(@repo) {|repo| repo.push }
90
+ end
103
91
 
104
- stub(@command).tag_release!
105
- stub(@command).any_pending_changes? { false }
106
- stub(@command).gemspec_changed? { false }
107
- stub(@command).regenerate_gemspec!
108
- stub(@command).release_tagged? { false }
92
+ should "tag release" do
93
+ assert_received(@command) {|command| command.tag_release! }
94
+ end
109
95
 
110
- @command.run
111
96
  end
112
97
 
113
- should "checkout master" do
114
- assert_received(@repo) {|repo| repo.checkout('master') }
115
- end
98
+ context "with a release already tagged" do
99
+ setup do
100
+ stub(@command).clean_staging_area? { true }
116
101
 
117
- should "regenerate gemspec" do
118
- assert_received(@command) {|command| command.regenerate_gemspec! }
119
- end
102
+ stub(@repo).checkout(anything)
120
103
 
121
- should_eventually "not commit gemspec" do
122
- # need a way to assert it wasn't received short of not stubbing it
123
- #assert_received(@command) {|command| command.commit_gemspec! }
124
- end
104
+ stub(@command).regenerate_gemspec!
125
105
 
126
- should "tag release" do
127
- assert_received(@command) {|command| command.tag_release! }
128
- end
129
- end
106
+ stub(@command).gemspec_changed? { true }
107
+ stub(@command).commit_gemspec! { true }
130
108
 
131
- context "run without pending changes and tagged already" do
132
- setup do
133
- @repo = Object.new
134
- stub(@repo) do
135
- checkout(anything)
136
- add(anything)
137
- commit(anything)
138
- push
139
- end
109
+ stub(@repo).push
140
110
 
141
- @gemspec_helper = Object.new
142
- stub(@gemspec_helper) do
143
- write
144
- path {'zomg.gemspec'}
145
- update_version('1.2.3')
146
- end
111
+ stub(@command).release_not_tagged? { false }
112
+ dont_allow(@command).tag_release!
147
113
 
148
- @output = StringIO.new
114
+ @command.run
115
+ end
149
116
 
150
- @command = Jeweler::Commands::Release.new :output => @output,
151
- :repo => @repo,
152
- :gemspec_helper => @gemspec_helper,
153
- :version => '1.2.3'
117
+ should "checkout master" do
118
+ assert_received(@repo) {|repo| repo.checkout('master') }
119
+ end
154
120
 
155
- #stub(@command).tag_release!
156
- stub(@command).any_pending_changes? { false }
157
- stub(@command).regenerate_gemspec!
158
- stub(@command).release_tagged? { true }
121
+ should "regenerate gemspec" do
122
+ assert_received(@command) {|command| command.regenerate_gemspec! }
123
+ end
159
124
 
160
- @command.run
161
- end
125
+ should "commit gemspec" do
126
+ assert_received(@command) {|command| command.commit_gemspec! }
127
+ end
162
128
 
163
- should "checkout master" do
164
- assert_received(@repo) {|repo| repo.checkout('master') }
165
- end
129
+ should "push" do
130
+ assert_received(@repo) {|repo| repo.push }
131
+ end
166
132
 
167
- should "regenerate gemspec" do
168
- assert_received(@command) {|command| command.regenerate_gemspec! }
169
133
  end
170
134
 
171
- should_eventually "not tag release" do
172
- # need to have a way to verify tag_release! not being called, short of not stubbing it
173
- end
174
135
  end
175
136
 
137
+
176
138
  build_command_context "building from jeweler" do
177
139
  setup do
178
140
  @command = Jeweler::Commands::Release.build_for(@jeweler)
@@ -203,41 +165,41 @@ class Jeweler
203
165
  end
204
166
  end
205
167
 
206
- context "any_pending_changes?" do
168
+ context "clean_staging_area?" do
207
169
 
208
- should "be true if there added files" do
170
+ should "be false if there added files" do
209
171
  repo = build_repo :added => %w(README)
210
172
 
211
173
  command = Jeweler::Commands::Release.new :repo => repo
212
174
 
213
- assert command.any_pending_changes?
175
+ assert ! command.clean_staging_area?
214
176
  end
215
177
 
216
- should "be true if there are changed files" do
178
+ should "be false if there are changed files" do
217
179
  repo = build_repo :changed => %w(README)
218
180
 
219
181
  command = Jeweler::Commands::Release.new
220
182
  command.repo = repo
221
183
 
222
- assert command.any_pending_changes?
184
+ assert ! command.clean_staging_area?
223
185
  end
224
186
 
225
- should "be true if there are deleted files" do
187
+ should "be false if there are deleted files" do
226
188
  repo = build_repo :deleted => %w(README)
227
189
 
228
190
  command = Jeweler::Commands::Release.new
229
191
  command.repo = repo
230
192
 
231
- assert command.any_pending_changes?
193
+ assert ! command.clean_staging_area?
232
194
  end
233
195
 
234
- should "be false if nothing added, changed, or deleted" do
196
+ should "be true if nothing added, changed, or deleted" do
235
197
  repo = build_repo
236
198
 
237
199
  command = Jeweler::Commands::Release.new
238
200
  command.repo = repo
239
201
 
240
- assert ! command.any_pending_changes?
202
+ assert command.clean_staging_area?
241
203
  end
242
204
  end
243
205
 
@@ -340,12 +302,7 @@ class Jeweler
340
302
  context "release_tagged? when no tag exists" do
341
303
  setup do
342
304
  @repo = Object.new
343
- stub(@repo).tag('v1.2.3') {raise Git::GitTagNameDoesNotExist, tag}
344
- #stub(@repo) do
345
- #tag('v1.2.3') do |tag|
346
- #raise Git::GitTagNameDoesNotExist, tag
347
- #end
348
- #end
305
+ stub(@repo).tag('v1.2.3') { raise Git::GitTagNameDoesNotExist, tag }
349
306
 
350
307
  @output = StringIO.new
351
308
 
@@ -355,8 +312,8 @@ class Jeweler
355
312
  @command.version = '1.2.3'
356
313
  end
357
314
 
358
- should_eventually "be false" do
359
- assert ! @command.release_tagged?
315
+ should_eventually "be true" do
316
+ assert @command.release_not_tagged?
360
317
  end
361
318
 
362
319
  end
@@ -376,8 +333,8 @@ class Jeweler
376
333
  @command.version = '1.2.3'
377
334
  end
378
335
 
379
- should_eventually "be true" do
380
- assert @command.release_tagged?
336
+ should_eventually "be false" do
337
+ assert @command.release_not_tagged?
381
338
  end
382
339
 
383
340
  end
@@ -7,15 +7,82 @@ class Jeweler
7
7
  Jeweler::Commands::SetupRubyforge.new
8
8
  end
9
9
 
10
- rubyforge_command_context "rubyforge_project is defined in gemspec and package exists on rubyforge" do
10
+ rubyforge_command_context "package_exists?" do
11
+ setup do
12
+ stub(@gemspec).name { 'zomg' }
13
+ end
14
+
15
+ should "be true if rubyforge.lookup doesn't cause an Error" do
16
+ mock(@rubyforge).lookup('package', 'zomg')
17
+
18
+ assert @command.package_exists?
19
+ end
20
+
21
+ should "be false if rubyforge.lookup raises an error like: no <package_id> configured for <zomg>" do
22
+ mock(@rubyforge).lookup('package', 'zomg') do
23
+ raise RuntimeError, "no <package_id> configured for <zomg>"
24
+ end
25
+
26
+ assert ! @command.package_exists?
27
+ end
28
+
29
+ should "reraise any other Errors" do
30
+ mock(@rubyforge).lookup('package', 'zomg') do
31
+ raise RuntimeError, 'burnination!'
32
+ end
33
+
34
+ assert_raises RuntimeError, 'burnination!' do
35
+ @command.package_exists?
36
+ end
37
+ end
38
+ end
39
+
40
+ rubyforge_command_context "create_package" do
41
+ setup do
42
+ stub(@gemspec).name { 'zomg' }
43
+ end
44
+
45
+ context "when everything is happy" do
46
+ setup do
47
+ stub(@gemspec).rubyforge_project { 'myproject' }
48
+ stub(@rubyforge).create_package('myproject', 'zomg')
49
+
50
+ @command.create_package
51
+ end
52
+
53
+ should "create zomg package to myproject on rubyforge" do
54
+ assert_received(@rubyforge) {|rubyforge| rubyforge.create_package('myproject', 'zomg') }
55
+ end
56
+
57
+ end
58
+
59
+ context "when rubyforge project not existing or being setup in ~/.rubyforge/autoconfig.yml" do
60
+ setup do
61
+ stub(@gemspec).rubyforge_project { 'myproject' }
62
+ stub(@rubyforge).create_package('myproject', 'zomg')do
63
+ raise RuntimeError, "no <group_id> configured for <myproject>"
64
+ end
65
+ end
66
+
67
+ should "raise RubyForgeProjectNotConfiguredError" do
68
+ assert_raises RubyForgeProjectNotConfiguredError do
69
+ @command.create_package
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+
76
+ rubyforge_command_context "rubyforge_project defined in gemspec and project existing on rubyforge" do
11
77
  setup do
12
78
  stub(@rubyforge).configure
13
79
  stub(@rubyforge).login
14
- stub(@rubyforge).create_package('myproject', 'zomg')
15
80
 
16
81
  stub(@gemspec).name { 'zomg' }
17
82
  stub(@gemspec).rubyforge_project { 'myproject' }
18
83
 
84
+ stub(@command).package_exists? { false }
85
+ stub(@command).create_package
19
86
  @command.run
20
87
  end
21
88
 
@@ -28,11 +95,36 @@ class Jeweler
28
95
  end
29
96
 
30
97
  should "create zomg package to myproject on rubyforge" do
31
- assert_received(@rubyforge) {|rubyforge| rubyforge.create_package('myproject', 'zomg') }
98
+ assert_received(@command) {|command| command.create_package }
32
99
  end
33
100
  end
34
101
 
35
- rubyforge_command_context "rubyforge_project not configured" do
102
+ rubyforge_command_context "rubyforge_project defined in gemspec, project and project already existing on rubyforge" do
103
+ setup do
104
+ stub(@rubyforge).configure
105
+ stub(@rubyforge).login
106
+
107
+
108
+ stub(@gemspec).name { 'zomg' }
109
+ stub(@gemspec).rubyforge_project { 'myproject' }
110
+
111
+ stub(@command).package_exists? { true }
112
+ dont_allow(@command).create_package
113
+ @command.run
114
+ end
115
+
116
+ should "configure rubyforge" do
117
+ assert_received(@rubyforge) {|rubyforge| rubyforge.configure}
118
+ end
119
+
120
+ should "login to rubyforge" do
121
+ assert_received(@rubyforge) {|rubyforge| rubyforge.login}
122
+ end
123
+
124
+ end
125
+
126
+
127
+ rubyforge_command_context "rubyforge_project is not defined" do
36
128
  setup do
37
129
  stub(@gemspec).name { 'zomg' }
38
130
  stub(@gemspec).rubyforge_project { nil }
@@ -45,16 +137,18 @@ class Jeweler
45
137
  end
46
138
  end
47
139
 
48
- rubyforge_command_context "rubyforge project doesn't exist or not setup in ~/.rubyforge/autoconfig.yml" do
140
+ rubyforge_command_context "rubyforge project not existing or being setup in ~/.rubyforge/autoconfig.yml" do
49
141
  setup do
50
142
  stub(@rubyforge).configure
51
143
  stub(@rubyforge).login
52
- stub(@rubyforge).create_package('some_project_that_doesnt_exist', 'zomg')do
53
- raise RuntimeError, "no <group_id> configured for <some_project_that_doesnt_exist>"
54
- end
55
144
 
56
145
  stub(@gemspec).name { 'zomg' }
57
146
  stub(@gemspec).rubyforge_project { 'some_project_that_doesnt_exist' }
147
+
148
+ stub(@command).package_exists? { false }
149
+ stub(@command).create_package do
150
+ raise RubyForgeProjectNotConfiguredError, 'some_project_that_doesnt_exist'
151
+ end
58
152
  end
59
153
 
60
154
  should "raise RubyForgeProjectNotConfiguredError" do