technicalpickles-jeweler 0.11.0 → 1.0.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.
- data/.gitignore +7 -0
- data/ChangeLog.markdown +8 -0
- data/README.markdown +9 -9
- data/ROADMAP +12 -0
- data/Rakefile +22 -5
- data/VERSION.yml +2 -2
- data/features/generator/cucumber.feature +83 -0
- data/features/generator/directory_layout.feature +76 -0
- data/features/generator/dotdocument.feature +14 -0
- data/features/generator/env_options.feature +9 -0
- data/features/generator/git.feature +94 -0
- data/features/generator/license.feature +11 -0
- data/features/generator/rakefile.feature +110 -0
- data/features/generator/readme.feature +12 -0
- data/features/generator/test.feature +41 -0
- data/features/generator/test_helper.feature +49 -0
- data/features/placeholder.feature +5 -0
- data/features/step_definitions/debug_steps.rb +6 -0
- data/features/step_definitions/filesystem_steps.rb +65 -0
- data/features/step_definitions/generator_steps.rb +251 -0
- data/features/step_definitions/task_steps.rb +6 -0
- data/features/support/env.rb +19 -0
- data/features/tasks/build_gem.feature +9 -0
- data/features/tasks/version.feature +24 -0
- data/features/tasks/version_bumping.feature +33 -0
- data/jeweler.gemspec +204 -0
- data/lib/jeweler/commands/release.rb +35 -11
- data/lib/jeweler/commands/version/base.rb +1 -1
- data/lib/jeweler/gemspec_helper.rb +4 -6
- data/lib/jeweler/generator/application.rb +8 -3
- data/lib/jeweler/generator/bacon_mixin.rb +39 -0
- data/lib/jeweler/generator/micronaut_mixin.rb +38 -0
- data/lib/jeweler/generator/minitest_mixin.rb +39 -0
- data/lib/jeweler/generator/options.rb +5 -1
- data/lib/jeweler/generator/rspec_mixin.rb +39 -0
- data/lib/jeweler/generator/shoulda_mixin.rb +39 -0
- data/lib/jeweler/generator/testunit_mixin.rb +39 -0
- data/lib/jeweler/generator.rb +48 -111
- data/lib/jeweler/rubyforge_tasks.rb +46 -0
- data/lib/jeweler/specification.rb +3 -2
- data/lib/jeweler/tasks.rb +32 -26
- data/lib/jeweler/templates/README.rdoc +1 -1
- data/lib/jeweler/templates/Rakefile +29 -52
- data/lib/jeweler/templates/bacon/helper.rb +1 -1
- data/lib/jeweler/templates/features/support/env.rb +4 -7
- data/lib/jeweler/templates/micronaut/helper.rb +1 -1
- data/lib/jeweler/templates/minitest/helper.rb +1 -1
- data/lib/jeweler/templates/rspec/flunking.rb +1 -1
- data/lib/jeweler/templates/rspec/helper.rb +1 -1
- data/lib/jeweler/templates/shoulda/helper.rb +1 -1
- data/lib/jeweler/templates/testunit/helper.rb +1 -1
- data/lib/jeweler/version_helper.rb +78 -33
- data/lib/jeweler.rb +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/LICENSE +0 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/README.rdoc +0 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/Rakefile +0 -0
- data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/existing-project-with-version.gemspec +0 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/test/existing_project_with_version_test.rb +0 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-plaintext}/test/test_helper.rb +0 -0
- data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
- data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
- data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
- data/test/fixtures/{existing-project-with-version → existing-project-with-version-yaml}/VERSION.yml +0 -0
- data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
- data/test/jeweler/commands/test_release.rb +304 -79
- data/test/test_application.rb +26 -0
- data/test/test_gemspec_helper.rb +4 -0
- data/test/test_generator.rb +83 -112
- data/test/test_generator_initialization.rb +113 -0
- data/test/test_generator_mixins.rb +18 -0
- data/test/test_helper.rb +3 -0
- data/test/test_options.rb +6 -0
- data/test/test_specification.rb +6 -2
- data/test/test_version_helper.rb +47 -9
- metadata +72 -17
- data/test/generators/initialization_test.rb +0 -146
@@ -0,0 +1,65 @@
|
|
1
|
+
Given 'a working directory' do
|
2
|
+
@working_dir = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'tmp')
|
3
|
+
FileUtils.rm_rf @working_dir
|
4
|
+
FileUtils.mkdir_p @working_dir
|
5
|
+
end
|
6
|
+
|
7
|
+
Given /^I use the jeweler command to generate the "([^"]+)" project in the working directory$/ do |name|
|
8
|
+
@name = name
|
9
|
+
|
10
|
+
return_to = Dir.pwd
|
11
|
+
path_to_jeweler = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'bin', 'jeweler')
|
12
|
+
|
13
|
+
begin
|
14
|
+
FileUtils.cd @working_dir
|
15
|
+
@stdout = `#{path_to_jeweler} #{@name}`
|
16
|
+
ensure
|
17
|
+
FileUtils.cd return_to
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Given /^"([^"]+)" does not exist$/ do |file|
|
22
|
+
assert ! File.exists?(File.join(@working_dir, file))
|
23
|
+
end
|
24
|
+
|
25
|
+
When /^I run "([^"]+)" in "([^"]+)"$/ do |command, directory|
|
26
|
+
full_path = File.join(@working_dir, directory)
|
27
|
+
|
28
|
+
assert File.directory?(full_path), "#{full_path} is not a directory"
|
29
|
+
|
30
|
+
@stdout = `cd #{full_path} && #{command}`
|
31
|
+
@exited_cleanly = $?.exited?
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^the updated version, (\d+\.\d+\.\d+), is displayed$/ do |version|
|
35
|
+
assert_match "Updated version: #{version}", @stdout
|
36
|
+
end
|
37
|
+
|
38
|
+
Then /^the current version, (\d+\.\d+\.\d+), is displayed$/ do |version|
|
39
|
+
assert_match "Current version: #{version}", @stdout
|
40
|
+
end
|
41
|
+
|
42
|
+
Then /^the process should exit cleanly$/ do
|
43
|
+
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}"
|
44
|
+
end
|
45
|
+
|
46
|
+
Then /^the process should not exit cleanly$/ do
|
47
|
+
assert !@exited_cleanly, "Process did exit cleanly: #{@stdout}"
|
48
|
+
end
|
49
|
+
|
50
|
+
Given /^I use the existing project "([^"]+)" as a template$/ do |fixture_project|
|
51
|
+
@name = fixture_project
|
52
|
+
FileUtils.cp_r File.join(fixture_dir, fixture_project), @working_dir
|
53
|
+
end
|
54
|
+
|
55
|
+
Given /^"VERSION\.yml" contains hash "([^"]+)"$/ do |ruby_string|
|
56
|
+
version_hash = YAML.load(File.read(File.join(@working_dir, @name, 'VERSION.yml')))
|
57
|
+
evaled_hash = eval(ruby_string)
|
58
|
+
assert_equal evaled_hash, version_hash
|
59
|
+
end
|
60
|
+
|
61
|
+
Given /^"VERSION" contains "([^\"]*)"$/ do |expected|
|
62
|
+
version = File.read(File.join(@working_dir, @name, 'VERSION')).chomp
|
63
|
+
assert_equal expected, version
|
64
|
+
end
|
65
|
+
|
@@ -0,0 +1,251 @@
|
|
1
|
+
Given /^I do not want cucumber stories$/ do
|
2
|
+
@use_cucumber = false
|
3
|
+
end
|
4
|
+
|
5
|
+
Given /^I want cucumber stories$/ do
|
6
|
+
@use_cucumber = true
|
7
|
+
end
|
8
|
+
|
9
|
+
And /^I do not want rubyforge setup$/ do
|
10
|
+
@use_rubyforge = false
|
11
|
+
end
|
12
|
+
|
13
|
+
And /^I want rubyforge setup$/ do
|
14
|
+
@use_rubyforge = true
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
Given /^I intend to test with (\w+)$/ do |testing_framework|
|
19
|
+
@testing_framework = testing_framework.to_sym
|
20
|
+
end
|
21
|
+
|
22
|
+
Given /^I have configured git sanely$/ do
|
23
|
+
@user_email = 'bar@example.com'
|
24
|
+
@user_name = 'foo'
|
25
|
+
@github_user = 'technicalpickles'
|
26
|
+
@github_token = 'zomgtoken'
|
27
|
+
|
28
|
+
Jeweler::Generator.any_instance.stubs(:read_git_config).
|
29
|
+
returns({
|
30
|
+
'user.name' => @user_name,
|
31
|
+
'user.email' => @user_email,
|
32
|
+
'github.user' => @github_user,
|
33
|
+
'github.token' => @github_token})
|
34
|
+
end
|
35
|
+
|
36
|
+
Given /^I set JEWELER_OPTS env variable to "(.*)"$/ do |val|
|
37
|
+
ENV['JEWELER_OPTS'] = val
|
38
|
+
end
|
39
|
+
|
40
|
+
When /^I generate a (.*)project named '((?:\w|-|_)+)' that is '(.*)'$/ do |testing_framework, name, summary|
|
41
|
+
@name = name
|
42
|
+
@summary = summary
|
43
|
+
|
44
|
+
testing_framework = testing_framework.squeeze.strip
|
45
|
+
unless testing_framework.blank?
|
46
|
+
@testing_framework = testing_framework.to_sym
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
arguments = ['--directory',
|
51
|
+
"#{@working_dir}/#{@name}",
|
52
|
+
'--summary', @summary,
|
53
|
+
@use_cucumber ? '--cucumber' : nil,
|
54
|
+
@testing_framework ? "--#{@testing_framework}" : nil,
|
55
|
+
@use_rubyforge ? '--rubyforge' : nil,
|
56
|
+
@name].compact
|
57
|
+
|
58
|
+
@stdout = OutputCatcher.catch_out do
|
59
|
+
Jeweler::Generator::Application.run! *arguments
|
60
|
+
end
|
61
|
+
|
62
|
+
@repo = Git.open(File.join(@working_dir, @name))
|
63
|
+
end
|
64
|
+
|
65
|
+
Then /^a directory named '(.*)' is created$/ do |directory|
|
66
|
+
directory = File.join(@working_dir, directory)
|
67
|
+
|
68
|
+
assert File.exists?(directory), "#{directory} did not exist"
|
69
|
+
assert File.directory?(directory), "#{directory} is not a directory"
|
70
|
+
end
|
71
|
+
|
72
|
+
Then "cucumber directories are created" do
|
73
|
+
Then "a directory named 'the-perfect-gem/features' is created"
|
74
|
+
Then "a directory named 'the-perfect-gem/features/support' is created"
|
75
|
+
Then "a directory named 'the-perfect-gem/features/step_definitions' is created"
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
Then /^a file named '(.*)' is created$/ do |file|
|
80
|
+
file = File.join(@working_dir, file)
|
81
|
+
|
82
|
+
assert File.exists?(file), "#{file} expected to exist, but did not"
|
83
|
+
assert File.file?(file), "#{file} expected to be a file, but is not"
|
84
|
+
end
|
85
|
+
|
86
|
+
Then /^a file named '(.*)' is not created$/ do |file|
|
87
|
+
file = File.join(@working_dir, file)
|
88
|
+
|
89
|
+
assert ! File.exists?(file), "#{file} expected to not exist, but did"
|
90
|
+
end
|
91
|
+
|
92
|
+
Then /^a sane '.gitignore' is created$/ do
|
93
|
+
Then "a file named 'the-perfect-gem/.gitignore' is created"
|
94
|
+
Then "'coverage' is ignored by git"
|
95
|
+
Then "'*.sw?' is ignored by git"
|
96
|
+
Then "'.DS_Store' is ignored by git"
|
97
|
+
Then "'rdoc' is ignored by git"
|
98
|
+
Then "'pkg' is ignored by git"
|
99
|
+
end
|
100
|
+
|
101
|
+
Then /^'(.*)' is ignored by git$/ do |git_ignore|
|
102
|
+
@gitignore_content ||= File.read(File.join(@working_dir, @name, '.gitignore'))
|
103
|
+
|
104
|
+
assert_match git_ignore, @gitignore_content
|
105
|
+
end
|
106
|
+
|
107
|
+
Then /^Rakefile has '(.*)' for the (.*) (.*)$/ do |value, task_class, field|
|
108
|
+
@rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
|
109
|
+
block_variable, task_block = yank_task_info(@rakefile_content, task_class)
|
110
|
+
#raise "Found in #{task_class}: #{block_variable.inspect}: #{task_block.inspect}"
|
111
|
+
|
112
|
+
assert_match /#{block_variable}\.#{field} = (%Q\{|"|')#{Regexp.escape(value)}(\}|"|')/, task_block
|
113
|
+
end
|
114
|
+
|
115
|
+
Then /^Rakefile has '(.*)' in the Rcov::RcovTask libs$/ do |libs|
|
116
|
+
@rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
|
117
|
+
block_variable, task_block = yank_task_info(@rakefile_content, 'Rcov::RcovTask')
|
118
|
+
|
119
|
+
assert_match "#{block_variable}.libs << '#{libs}'", @rakefile_content
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
Then /^'(.*)' contains '(.*)'$/ do |file, expected_string|
|
124
|
+
contents = File.read(File.join(@working_dir, @name, file))
|
125
|
+
assert_match expected_string, contents
|
126
|
+
end
|
127
|
+
|
128
|
+
Then /^'(.*)' mentions copyright belonging to me in (\d{4})$/ do |file, year|
|
129
|
+
contents = File.read(File.join(@working_dir, @name, file))
|
130
|
+
assert_match "Copyright (c) #{year} #{@user_name}", contents
|
131
|
+
end
|
132
|
+
|
133
|
+
Then /^'(.*)' mentions copyright belonging to me in the current year$/ do |file|
|
134
|
+
current_year = Time.now.year
|
135
|
+
Then "'#{file}' mentions copyright belonging to me in #{current_year}"
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
Then /^LICENSE has the copyright as belonging to '(.*)' in '(\d{4})'$/ do |copyright_holder, year|
|
140
|
+
Then "a file named 'the-perfect-gem/LICENSE' is created"
|
141
|
+
|
142
|
+
@license_content ||= File.read(File.join(@working_dir, @name, 'LICENSE'))
|
143
|
+
|
144
|
+
assert_match copyright_holder, @license_content
|
145
|
+
|
146
|
+
assert_match year, @license_content
|
147
|
+
end
|
148
|
+
|
149
|
+
Then /^'(.*)' should define '(.*)' as a subclass of '(.*)'$/ do |file, class_name, superclass_name|
|
150
|
+
@test_content = File.read((File.join(@working_dir, @name, file)))
|
151
|
+
|
152
|
+
assert_match "class #{class_name} < #{superclass_name}", @test_content
|
153
|
+
end
|
154
|
+
|
155
|
+
Then /^'(.*)' should describe '(.*)'$/ do |file, describe_name|
|
156
|
+
@spec_content ||= File.read((File.join(@working_dir, @name, file)))
|
157
|
+
|
158
|
+
assert_match %Q{describe "#{describe_name}" do}, @spec_content
|
159
|
+
end
|
160
|
+
|
161
|
+
Then /^'(.*)' requires '(.*)'$/ do |file, lib|
|
162
|
+
content = File.read(File.join(@working_dir, @name, file))
|
163
|
+
|
164
|
+
assert_match /require ['"]#{Regexp.escape(lib)}['"]/, content
|
165
|
+
end
|
166
|
+
|
167
|
+
Then /^'(.*)' does not require '(.*)'$/ do |file, lib|
|
168
|
+
content = File.read(File.join(@working_dir, @name, file))
|
169
|
+
|
170
|
+
assert_no_match /require ['"]#{Regexp.escape(lib)}['"]/, content
|
171
|
+
end
|
172
|
+
|
173
|
+
Then /^Rakefile does not require '(.*)'$/ do |file|
|
174
|
+
Then "'Rakefile' does not require '#{file}'"
|
175
|
+
end
|
176
|
+
|
177
|
+
Then /^Rakefile requires '(.*)'$/ do |file|
|
178
|
+
Then "'Rakefile' requires '#{file}'"
|
179
|
+
end
|
180
|
+
|
181
|
+
Then /^Rakefile does not instantiate a (.*)$/ do |task_name|
|
182
|
+
content = File.read(File.join(@working_dir, @name, 'Rakefile'))
|
183
|
+
assert_no_match /#{task_name}/, content
|
184
|
+
end
|
185
|
+
|
186
|
+
Then /^Rakefile instantiates a (.*)$/ do |task_name|
|
187
|
+
content = File.read(File.join(@working_dir, @name, 'Rakefile'))
|
188
|
+
assert_match /#{task_name}/, content
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
Then /^'test\/test_helper\.rb' should autorun tests$/ do
|
193
|
+
content = File.read(File.join(@working_dir, @name, 'test/test_helper.rb'))
|
194
|
+
|
195
|
+
assert_match "Mini::Test.autorun", content
|
196
|
+
end
|
197
|
+
|
198
|
+
Then /^cucumber world extends "(.*)"$/ do |module_to_extend|
|
199
|
+
content = File.read(File.join(@working_dir, @name, 'features', 'support', 'env.rb'))
|
200
|
+
assert_match "World(#{module_to_extend})", content
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
Then /^'features\/support\/env\.rb' sets up features to use test\/unit assertions$/ do
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
Then /^'features\/support\/env\.rb' sets up features to use minitest assertions$/ do
|
209
|
+
content = File.read(File.join(@working_dir, @name, 'features', 'support', 'env.rb'))
|
210
|
+
|
211
|
+
assert_match "world.extend(Mini::Test::Assertions)", content
|
212
|
+
end
|
213
|
+
|
214
|
+
Then /^git repository has '(.*)' remote$/ do |remote|
|
215
|
+
remote = @repo.remotes.first
|
216
|
+
|
217
|
+
assert_equal 'origin', remote.name
|
218
|
+
end
|
219
|
+
|
220
|
+
Then /^git repository '(.*)' remote should be '(.*)'/ do |remote, remote_url|
|
221
|
+
remote = @repo.remotes.first
|
222
|
+
|
223
|
+
assert_equal 'git@github.com:technicalpickles/the-perfect-gem.git', remote.url
|
224
|
+
end
|
225
|
+
|
226
|
+
Then /^a commit with the message '(.*)' is made$/ do |message|
|
227
|
+
assert_match message, @repo.log.first.message
|
228
|
+
end
|
229
|
+
|
230
|
+
Then /^'(.*)' was checked in$/ do |file|
|
231
|
+
status = @repo.status[file]
|
232
|
+
|
233
|
+
assert_not_nil status, "wasn't able to get status for #{file}"
|
234
|
+
assert ! status.untracked, "#{file} was untracked"
|
235
|
+
assert_nil status.type, "#{file} had a type. it should have been nil"
|
236
|
+
end
|
237
|
+
|
238
|
+
Then /^no files are (\w+)$/ do |type|
|
239
|
+
assert_equal 0, @repo.status.send(type).size
|
240
|
+
end
|
241
|
+
|
242
|
+
Then /^Rakefile has "(.*)" as the default task$/ do |task|
|
243
|
+
@rakefile_content ||= File.read(File.join(@working_dir, @name, 'Rakefile'))
|
244
|
+
assert_match "task :default => :#{task}", @rakefile_content
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
After do
|
249
|
+
ENV['JEWELER_OPTS'] = nil
|
250
|
+
FileUtils.rm_rf @working_dir if @working_dir
|
251
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
2
|
+
require 'jeweler'
|
3
|
+
|
4
|
+
require 'mocha'
|
5
|
+
require 'output_catcher'
|
6
|
+
|
7
|
+
require 'test/unit/assertions'
|
8
|
+
|
9
|
+
World(Test::Unit::Assertions)
|
10
|
+
|
11
|
+
def yank_task_info(content, task)
|
12
|
+
if content =~ /#{Regexp.escape(task)}.new(\(.*\))? do \|(.*?)\|(.*?)end/m
|
13
|
+
[$2, $3]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def fixture_dir
|
18
|
+
File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'test', 'fixtures')
|
19
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: building gems
|
2
|
+
|
3
|
+
Scenario: default
|
4
|
+
Given a working directory
|
5
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
6
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
7
|
+
And "existing-project-with-version/pkg/existing-project-with-version-1.5.3.gem" does not exist
|
8
|
+
When I run "rake build" in "existing-project-with-version-yaml"
|
9
|
+
Then I can gem install "existing-project-with-version-yaml/pkg/existing-project-with-version-1.5.3.gem"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Feature: version rake task
|
2
|
+
|
3
|
+
#Scenario: a newly created project without a version
|
4
|
+
# Given a working directory
|
5
|
+
# And I use the jeweler command to generate the "the-perfect-gem" project in the working directory
|
6
|
+
# And "the-perfect-gem/VERSION" does not exist
|
7
|
+
# When I run "rake version" in "the-perfect-gem"
|
8
|
+
# Then the process should not exit cleanly
|
9
|
+
|
10
|
+
Scenario: an existing project with version yaml
|
11
|
+
Given a working directory
|
12
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
13
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
14
|
+
When I run "rake version" in "existing-project-with-version-yaml"
|
15
|
+
Then the process should exit cleanly
|
16
|
+
And the current version, 1.5.3, is displayed
|
17
|
+
|
18
|
+
Scenario: an existing project with version plaintext
|
19
|
+
Given a working directory
|
20
|
+
And I use the existing project "existing-project-with-version-plaintext" as a template
|
21
|
+
And "VERSION" contains "1.5.3"
|
22
|
+
When I run "rake version" in "existing-project-with-version-plaintext"
|
23
|
+
Then the process should exit cleanly
|
24
|
+
And the current version, 1.5.3, is displayed
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: bumping version
|
2
|
+
|
3
|
+
Scenario: major version
|
4
|
+
Given a working directory
|
5
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
6
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
7
|
+
When I run "rake version:bump:major" in "existing-project-with-version-yaml"
|
8
|
+
Then the process should exit cleanly
|
9
|
+
And the updated version, 2.0.0, is displayed
|
10
|
+
|
11
|
+
Scenario: minor version
|
12
|
+
Given a working directory
|
13
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
14
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
15
|
+
When I run "rake version:bump:minor" in "existing-project-with-version-yaml"
|
16
|
+
Then the process should exit cleanly
|
17
|
+
And the updated version, 1.6.0, is displayed
|
18
|
+
|
19
|
+
Scenario: patch version
|
20
|
+
Given a working directory
|
21
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
22
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
23
|
+
When I run "rake version:bump:patch" in "existing-project-with-version-yaml"
|
24
|
+
Then the process should exit cleanly
|
25
|
+
And the updated version, 1.5.4, is displayed
|
26
|
+
|
27
|
+
Scenario: arbitrary version
|
28
|
+
Given a working directory
|
29
|
+
And I use the existing project "existing-project-with-version-yaml" as a template
|
30
|
+
And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
|
31
|
+
When I run "rake version:write MAJOR=3 MINOR=7 PATCH=1" in "existing-project-with-version-yaml"
|
32
|
+
Then the process should exit cleanly
|
33
|
+
And the updated version, 3.7.1, is displayed
|
data/jeweler.gemspec
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{jeweler}
|
5
|
+
s.version = "1.0.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Josh Nichols"]
|
9
|
+
s.date = %q{2009-05-15}
|
10
|
+
s.default_executable = %q{jeweler}
|
11
|
+
s.description = %q{Simple and opinionated helper for creating Rubygem projects on GitHub}
|
12
|
+
s.email = %q{josh@technicalpickles.com}
|
13
|
+
s.executables = ["jeweler"]
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
"ChangeLog.markdown",
|
16
|
+
"LICENSE",
|
17
|
+
"README.markdown"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"ChangeLog.markdown",
|
22
|
+
"LICENSE",
|
23
|
+
"README.markdown",
|
24
|
+
"ROADMAP",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION.yml",
|
27
|
+
"bin/jeweler",
|
28
|
+
"features/generator/cucumber.feature",
|
29
|
+
"features/generator/directory_layout.feature",
|
30
|
+
"features/generator/dotdocument.feature",
|
31
|
+
"features/generator/env_options.feature",
|
32
|
+
"features/generator/git.feature",
|
33
|
+
"features/generator/license.feature",
|
34
|
+
"features/generator/rakefile.feature",
|
35
|
+
"features/generator/readme.feature",
|
36
|
+
"features/generator/test.feature",
|
37
|
+
"features/generator/test_helper.feature",
|
38
|
+
"features/placeholder.feature",
|
39
|
+
"features/step_definitions/debug_steps.rb",
|
40
|
+
"features/step_definitions/filesystem_steps.rb",
|
41
|
+
"features/step_definitions/generator_steps.rb",
|
42
|
+
"features/step_definitions/task_steps.rb",
|
43
|
+
"features/support/env.rb",
|
44
|
+
"features/tasks/build_gem.feature",
|
45
|
+
"features/tasks/version.feature",
|
46
|
+
"features/tasks/version_bumping.feature",
|
47
|
+
"jeweler.gemspec",
|
48
|
+
"lib/jeweler.rb",
|
49
|
+
"lib/jeweler/commands.rb",
|
50
|
+
"lib/jeweler/commands/build_gem.rb",
|
51
|
+
"lib/jeweler/commands/install_gem.rb",
|
52
|
+
"lib/jeweler/commands/release.rb",
|
53
|
+
"lib/jeweler/commands/release_to_rubyforge.rb",
|
54
|
+
"lib/jeweler/commands/setup_rubyforge.rb",
|
55
|
+
"lib/jeweler/commands/validate_gemspec.rb",
|
56
|
+
"lib/jeweler/commands/version/base.rb",
|
57
|
+
"lib/jeweler/commands/version/bump_major.rb",
|
58
|
+
"lib/jeweler/commands/version/bump_minor.rb",
|
59
|
+
"lib/jeweler/commands/version/bump_patch.rb",
|
60
|
+
"lib/jeweler/commands/version/write.rb",
|
61
|
+
"lib/jeweler/commands/write_gemspec.rb",
|
62
|
+
"lib/jeweler/errors.rb",
|
63
|
+
"lib/jeweler/gemspec_helper.rb",
|
64
|
+
"lib/jeweler/generator.rb",
|
65
|
+
"lib/jeweler/generator/application.rb",
|
66
|
+
"lib/jeweler/generator/bacon_mixin.rb",
|
67
|
+
"lib/jeweler/generator/micronaut_mixin.rb",
|
68
|
+
"lib/jeweler/generator/minitest_mixin.rb",
|
69
|
+
"lib/jeweler/generator/options.rb",
|
70
|
+
"lib/jeweler/generator/rspec_mixin.rb",
|
71
|
+
"lib/jeweler/generator/shoulda_mixin.rb",
|
72
|
+
"lib/jeweler/generator/testunit_mixin.rb",
|
73
|
+
"lib/jeweler/rubyforge_tasks.rb",
|
74
|
+
"lib/jeweler/specification.rb",
|
75
|
+
"lib/jeweler/tasks.rb",
|
76
|
+
"lib/jeweler/templates/.document",
|
77
|
+
"lib/jeweler/templates/.document",
|
78
|
+
"lib/jeweler/templates/.gitignore",
|
79
|
+
"lib/jeweler/templates/.gitignore",
|
80
|
+
"lib/jeweler/templates/LICENSE",
|
81
|
+
"lib/jeweler/templates/README.rdoc",
|
82
|
+
"lib/jeweler/templates/Rakefile",
|
83
|
+
"lib/jeweler/templates/bacon/flunking.rb",
|
84
|
+
"lib/jeweler/templates/bacon/helper.rb",
|
85
|
+
"lib/jeweler/templates/features/default.feature",
|
86
|
+
"lib/jeweler/templates/features/support/env.rb",
|
87
|
+
"lib/jeweler/templates/micronaut/flunking.rb",
|
88
|
+
"lib/jeweler/templates/micronaut/helper.rb",
|
89
|
+
"lib/jeweler/templates/minitest/flunking.rb",
|
90
|
+
"lib/jeweler/templates/minitest/helper.rb",
|
91
|
+
"lib/jeweler/templates/rspec/flunking.rb",
|
92
|
+
"lib/jeweler/templates/rspec/helper.rb",
|
93
|
+
"lib/jeweler/templates/shoulda/flunking.rb",
|
94
|
+
"lib/jeweler/templates/shoulda/helper.rb",
|
95
|
+
"lib/jeweler/templates/testunit/flunking.rb",
|
96
|
+
"lib/jeweler/templates/testunit/helper.rb",
|
97
|
+
"lib/jeweler/version_helper.rb",
|
98
|
+
"test/fixtures/bar/VERSION.yml",
|
99
|
+
"test/fixtures/bar/bin/foo_the_ultimate_bin",
|
100
|
+
"test/fixtures/bar/hey_include_me_in_gemspec",
|
101
|
+
"test/fixtures/bar/lib/foo_the_ultimate_lib.rb",
|
102
|
+
"test/fixtures/existing-project-with-version-plaintext/.document",
|
103
|
+
"test/fixtures/existing-project-with-version-plaintext/.gitignore",
|
104
|
+
"test/fixtures/existing-project-with-version-plaintext/LICENSE",
|
105
|
+
"test/fixtures/existing-project-with-version-plaintext/README.rdoc",
|
106
|
+
"test/fixtures/existing-project-with-version-plaintext/Rakefile",
|
107
|
+
"test/fixtures/existing-project-with-version-plaintext/VERSION",
|
108
|
+
"test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec",
|
109
|
+
"test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb",
|
110
|
+
"test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb",
|
111
|
+
"test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb",
|
112
|
+
"test/fixtures/existing-project-with-version-yaml/.document",
|
113
|
+
"test/fixtures/existing-project-with-version-yaml/.gitignore",
|
114
|
+
"test/fixtures/existing-project-with-version-yaml/LICENSE",
|
115
|
+
"test/fixtures/existing-project-with-version-yaml/README.rdoc",
|
116
|
+
"test/fixtures/existing-project-with-version-yaml/Rakefile",
|
117
|
+
"test/fixtures/existing-project-with-version-yaml/VERSION.yml",
|
118
|
+
"test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec",
|
119
|
+
"test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb",
|
120
|
+
"test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb",
|
121
|
+
"test/fixtures/existing-project-with-version-yaml/test/test_helper.rb",
|
122
|
+
"test/geminstaller.yml",
|
123
|
+
"test/jeweler/commands/test_build_gem.rb",
|
124
|
+
"test/jeweler/commands/test_install_gem.rb",
|
125
|
+
"test/jeweler/commands/test_release.rb",
|
126
|
+
"test/jeweler/commands/test_release_to_rubyforge.rb",
|
127
|
+
"test/jeweler/commands/test_setup_rubyforge.rb",
|
128
|
+
"test/jeweler/commands/test_validate_gemspec.rb",
|
129
|
+
"test/jeweler/commands/test_write_gemspec.rb",
|
130
|
+
"test/jeweler/commands/version/test_base.rb",
|
131
|
+
"test/jeweler/commands/version/test_bump_major.rb",
|
132
|
+
"test/jeweler/commands/version/test_bump_minor.rb",
|
133
|
+
"test/jeweler/commands/version/test_bump_patch.rb",
|
134
|
+
"test/jeweler/commands/version/test_write.rb",
|
135
|
+
"test/shoulda_macros/jeweler_macros.rb",
|
136
|
+
"test/test_application.rb",
|
137
|
+
"test/test_gemspec_helper.rb",
|
138
|
+
"test/test_generator.rb",
|
139
|
+
"test/test_generator_initialization.rb",
|
140
|
+
"test/test_generator_mixins.rb",
|
141
|
+
"test/test_helper.rb",
|
142
|
+
"test/test_jeweler.rb",
|
143
|
+
"test/test_options.rb",
|
144
|
+
"test/test_specification.rb",
|
145
|
+
"test/test_tasks.rb",
|
146
|
+
"test/test_version_helper.rb"
|
147
|
+
]
|
148
|
+
s.has_rdoc = true
|
149
|
+
s.homepage = %q{http://github.com/technicalpickles/jeweler}
|
150
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
151
|
+
s.require_paths = ["lib"]
|
152
|
+
s.rubyforge_project = %q{pickles}
|
153
|
+
s.rubygems_version = %q{1.3.1}
|
154
|
+
s.summary = %q{Simple and opinionated helper for creating Rubygem projects on GitHub}
|
155
|
+
s.test_files = [
|
156
|
+
"test/fixtures/bar/lib/foo_the_ultimate_lib.rb",
|
157
|
+
"test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb",
|
158
|
+
"test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb",
|
159
|
+
"test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb",
|
160
|
+
"test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb",
|
161
|
+
"test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb",
|
162
|
+
"test/fixtures/existing-project-with-version-yaml/test/test_helper.rb",
|
163
|
+
"test/jeweler/commands/test_build_gem.rb",
|
164
|
+
"test/jeweler/commands/test_install_gem.rb",
|
165
|
+
"test/jeweler/commands/test_release.rb",
|
166
|
+
"test/jeweler/commands/test_release_to_rubyforge.rb",
|
167
|
+
"test/jeweler/commands/test_setup_rubyforge.rb",
|
168
|
+
"test/jeweler/commands/test_validate_gemspec.rb",
|
169
|
+
"test/jeweler/commands/test_write_gemspec.rb",
|
170
|
+
"test/jeweler/commands/version/test_base.rb",
|
171
|
+
"test/jeweler/commands/version/test_bump_major.rb",
|
172
|
+
"test/jeweler/commands/version/test_bump_minor.rb",
|
173
|
+
"test/jeweler/commands/version/test_bump_patch.rb",
|
174
|
+
"test/jeweler/commands/version/test_write.rb",
|
175
|
+
"test/shoulda_macros/jeweler_macros.rb",
|
176
|
+
"test/test_application.rb",
|
177
|
+
"test/test_gemspec_helper.rb",
|
178
|
+
"test/test_generator.rb",
|
179
|
+
"test/test_generator_initialization.rb",
|
180
|
+
"test/test_generator_mixins.rb",
|
181
|
+
"test/test_helper.rb",
|
182
|
+
"test/test_jeweler.rb",
|
183
|
+
"test/test_options.rb",
|
184
|
+
"test/test_specification.rb",
|
185
|
+
"test/test_tasks.rb",
|
186
|
+
"test/test_version_helper.rb"
|
187
|
+
]
|
188
|
+
|
189
|
+
if s.respond_to? :specification_version then
|
190
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
191
|
+
s.specification_version = 2
|
192
|
+
|
193
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
194
|
+
s.add_runtime_dependency(%q<git>, [">= 1.1.1"])
|
195
|
+
s.add_runtime_dependency(%q<rubyforge>, [">= 0"])
|
196
|
+
else
|
197
|
+
s.add_dependency(%q<git>, [">= 1.1.1"])
|
198
|
+
s.add_dependency(%q<rubyforge>, [">= 0"])
|
199
|
+
end
|
200
|
+
else
|
201
|
+
s.add_dependency(%q<git>, [">= 1.1.1"])
|
202
|
+
s.add_dependency(%q<rubyforge>, [">= 0"])
|
203
|
+
end
|
204
|
+
end
|