version 1.0.0 → 1.1.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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +38 -0
- data/Rakefile +8 -7
- data/VERSION +1 -1
- data/lib/rake/version_task.rb +60 -7
- data/lib/version.rb +39 -31
- data/spec/spec_helper.rb +101 -6
- data/spec/version_spec.rb +99 -99
- metadata +51 -42
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 20965e2590585ffac10a15701214153bc52fba35
|
|
4
|
+
data.tar.gz: 3729b49f10a0de092ce3b33ca107948abf4dcc66
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 3af3ec96f5c52901e642532d8c996f95aff45ec147b99f872e170d9d3de7e275f0f909ffbe2b56a05224521fac6185f07824c5a890bb73aed8b4f1d6e3e13b3c
|
|
7
|
+
data.tar.gz: aa7d294c38282ca487dd171e3e33e3519910d08a826b716df11843e4ef2c18c0f98c8f713bd59afa307c645ca108be04285dcf05f591c2bc7b391be994862ef5
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
version (1.0.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
diff-lcs (1.3)
|
|
10
|
+
rake (12.0.0)
|
|
11
|
+
rspec (3.5.0)
|
|
12
|
+
rspec-core (~> 3.5.0)
|
|
13
|
+
rspec-expectations (~> 3.5.0)
|
|
14
|
+
rspec-mocks (~> 3.5.0)
|
|
15
|
+
rspec-core (3.5.4)
|
|
16
|
+
rspec-support (~> 3.5.0)
|
|
17
|
+
rspec-expectations (3.5.0)
|
|
18
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
19
|
+
rspec-support (~> 3.5.0)
|
|
20
|
+
rspec-its (1.2.0)
|
|
21
|
+
rspec-core (>= 3.0.0)
|
|
22
|
+
rspec-expectations (>= 3.0.0)
|
|
23
|
+
rspec-mocks (3.5.0)
|
|
24
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
25
|
+
rspec-support (~> 3.5.0)
|
|
26
|
+
rspec-support (3.5.0)
|
|
27
|
+
|
|
28
|
+
PLATFORMS
|
|
29
|
+
ruby
|
|
30
|
+
|
|
31
|
+
DEPENDENCIES
|
|
32
|
+
rake
|
|
33
|
+
rspec (~> 3)
|
|
34
|
+
rspec-its (~> 1)
|
|
35
|
+
version!
|
|
36
|
+
|
|
37
|
+
BUNDLED WITH
|
|
38
|
+
1.14.6
|
data/Rakefile
CHANGED
|
@@ -3,9 +3,9 @@ $: << 'lib'
|
|
|
3
3
|
require 'rake/version_task'
|
|
4
4
|
|
|
5
5
|
require 'rubygems'
|
|
6
|
-
require '
|
|
7
|
-
require '
|
|
8
|
-
require '
|
|
6
|
+
require 'rubygems/package_task'
|
|
7
|
+
require 'rdoc/task'
|
|
8
|
+
require 'rspec/core/rake_task'
|
|
9
9
|
|
|
10
10
|
spec = Gem::Specification.new do |s|
|
|
11
11
|
s.name = 'version'
|
|
@@ -20,10 +20,11 @@ spec = Gem::Specification.new do |s|
|
|
|
20
20
|
s.extra_rdoc_files = Dir['*.rdoc']
|
|
21
21
|
s.rdoc_options = %w{ --main README.rdoc }
|
|
22
22
|
|
|
23
|
-
s.add_development_dependency '
|
|
23
|
+
s.add_development_dependency 'rake'
|
|
24
|
+
s.add_development_dependency 'rspec', '~> 1'
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
Gem::PackageTask.new(spec) do |gem|
|
|
27
28
|
gem.need_tar = true
|
|
28
29
|
end
|
|
29
30
|
|
|
@@ -35,8 +36,8 @@ Rake::RDocTask.new do |doc|
|
|
|
35
36
|
doc.rdoc_files.include('lib/**/*.rb')
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
task.
|
|
39
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
|
40
|
+
task.pattern = 'spec/**/*_spec.rb'
|
|
40
41
|
end
|
|
41
42
|
|
|
42
43
|
Rake::VersionTask.new do |v|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.1.0
|
data/lib/rake/version_task.rb
CHANGED
|
@@ -12,18 +12,38 @@ class Rake::VersionTask < Rake::TaskLib
|
|
|
12
12
|
|
|
13
13
|
# when true, tags version bumps automatically (default: false)
|
|
14
14
|
attr_accessor :with_git_tag
|
|
15
|
+
|
|
16
|
+
# when true, commits version bumps automatically (default: autodetect)
|
|
17
|
+
attr_accessor :with_hg
|
|
18
|
+
|
|
19
|
+
# when true, tags version bumps automatically (default: false)
|
|
20
|
+
attr_accessor :with_hg_tag
|
|
21
|
+
|
|
22
|
+
# when true, commits version bumps automatically (default: autodetect)
|
|
23
|
+
attr_accessor :with_svn
|
|
24
|
+
|
|
25
|
+
# when true, tags version bumps automatically if the current svn URL
|
|
26
|
+
# either ends in '<base>/trunk' or '<base>/branches/<branch>' by
|
|
27
|
+
# copying the current svn URL to the '<base>/tags/<version>'
|
|
28
|
+
# (default: false)
|
|
29
|
+
attr_accessor :with_svn_tag
|
|
15
30
|
|
|
16
31
|
# when set with a Gem::Specification, automatically emits an updated
|
|
17
32
|
# gemspec on version bumps
|
|
18
33
|
attr_accessor :with_gemspec
|
|
19
|
-
|
|
34
|
+
|
|
35
|
+
# when set allows to override commit message
|
|
36
|
+
attr_accessor :with_commit_message
|
|
37
|
+
|
|
20
38
|
#
|
|
21
39
|
# Creates a new VersionTask with the given +filename+. Attempts to
|
|
22
|
-
# autodetect the +filetype+ and whether or not git is present.
|
|
40
|
+
# autodetect the +filetype+ and whether or not git or hg is present.
|
|
23
41
|
#
|
|
24
42
|
def initialize(filename = 'VERSION')
|
|
25
43
|
self.filename = filename
|
|
26
44
|
self.with_git = File.exist?('.git')
|
|
45
|
+
self.with_hg = File.exist?('.hg')
|
|
46
|
+
self.with_svn = File.exist?('.svn')
|
|
27
47
|
|
|
28
48
|
yield(self) if block_given?
|
|
29
49
|
|
|
@@ -112,31 +132,64 @@ class Rake::VersionTask < Rake::TaskLib
|
|
|
112
132
|
when 'yml' then YAML::load(contents).to_version
|
|
113
133
|
end
|
|
114
134
|
end
|
|
115
|
-
|
|
135
|
+
|
|
136
|
+
def commit_message(version)
|
|
137
|
+
self.with_commit_message || "Version bump to #{version}"
|
|
138
|
+
end
|
|
116
139
|
#
|
|
117
140
|
# Writes out +version+ to the file at +filename+ with the correct format.
|
|
118
141
|
#
|
|
119
142
|
def write(version)
|
|
120
143
|
return if version == read
|
|
121
|
-
|
|
144
|
+
|
|
122
145
|
path.open('w') do |io|
|
|
123
146
|
io << case filetype.to_s
|
|
124
147
|
when '' then version.to_s + "\n"
|
|
125
148
|
when 'yml' then version.to_yaml
|
|
126
149
|
end
|
|
127
150
|
end
|
|
128
|
-
|
|
151
|
+
|
|
129
152
|
if self.with_gemspec
|
|
130
153
|
with_gemspec.version = version
|
|
131
154
|
gemspec.open('w') {|io| io << with_gemspec.to_ruby }
|
|
132
155
|
end
|
|
133
|
-
|
|
156
|
+
|
|
134
157
|
if self.with_git
|
|
135
158
|
`git add #{self.filename}`
|
|
136
159
|
`git add #{self.gemspec}` if self.with_gemspec
|
|
137
|
-
`git commit -m "
|
|
160
|
+
`git commit -m "#{commit_message(version)}"`
|
|
138
161
|
`git tag #{version}` if self.with_git_tag
|
|
139
162
|
end
|
|
163
|
+
|
|
164
|
+
if self.with_hg
|
|
165
|
+
`hg add #{self.filename}` unless `hg status -u #{self.filename}`.empty?
|
|
166
|
+
`hg add #{self.gemspec}` if (self.with_gemspec && !`hg status -u #{self.gemspec}`.empty?)
|
|
167
|
+
`hg commit #{self.filename} #{self.with_gemspec ? self.gemspec : ''} -m "#{commit_message(version)}"`
|
|
168
|
+
`hg tag #{version}` if self.with_hg_tag
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
if self.with_svn
|
|
172
|
+
`svn commit #{self.filename} #{self.with_gemspec ? self.gemspec : ''} -m "#{commit_message(version)}"`
|
|
173
|
+
|
|
174
|
+
# This only attempts to make 'standard' tags. That is, if the
|
|
175
|
+
# current svn URL ends in 'trunk' or 'branches/<branch>', then
|
|
176
|
+
# it will be copied to 'tags/<version>'
|
|
177
|
+
if self.with_svn_tag
|
|
178
|
+
url = nil
|
|
179
|
+
`svn info`.each_line do |line|
|
|
180
|
+
if line =~ /^URL:\s+(.*)$/
|
|
181
|
+
url = $1
|
|
182
|
+
break
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
if url && url =~ /^(.*)\/(trunk|branches\/[\w]+)$/
|
|
187
|
+
base = $1
|
|
188
|
+
tag_url = "#{base}/tags/#{version}"
|
|
189
|
+
`svn copy #{url} #{tag_url} -m "Tag #{version}"`
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
140
193
|
|
|
141
194
|
version
|
|
142
195
|
end
|
data/lib/version.rb
CHANGED
|
@@ -10,9 +10,9 @@ require 'pathname'
|
|
|
10
10
|
#
|
|
11
11
|
class Version
|
|
12
12
|
include Comparable
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
autoload :Component, 'version/component'
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
#
|
|
17
17
|
# Searches through the parent directories of the calling method and looks
|
|
18
18
|
# for a VERSION or VERSION.yml file to parse out the current version. Pass
|
|
@@ -25,15 +25,15 @@ class Version
|
|
|
25
25
|
# automatically in the directory; if path is a filename, use it directly
|
|
26
26
|
path = path ? Pathname.new(path) : self.version_file(caller.first)
|
|
27
27
|
path = self.version_file(path) unless path.nil? or path.file?
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
return nil unless path
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
case path.extname
|
|
32
32
|
when '' then path.read.strip.to_version
|
|
33
33
|
when '.yml' then YAML::load(path.read).to_version
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
#
|
|
38
38
|
# Attempts to detect the version file for the passed +filename+. Looks up
|
|
39
39
|
# the directory hierarchy for a file named VERSION or VERSION.yml. Returns
|
|
@@ -45,7 +45,7 @@ class Version
|
|
|
45
45
|
break d.join('VERSION.yml') if d.join('VERSION.yml').file?
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
#
|
|
50
50
|
# Creates a new version number, with a +major+ version number, +minor+
|
|
51
51
|
# revision number, +revision+ number, and optionally more (unnamed)
|
|
@@ -54,7 +54,7 @@ class Version
|
|
|
54
54
|
def initialize(major, minor = 0, revision = nil, *rest)
|
|
55
55
|
self.components = [ major, minor, revision, *rest ]
|
|
56
56
|
end
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
#
|
|
59
59
|
# For +major+, +minor+, and +revision+, make a helper method that gets and
|
|
60
60
|
# sets each based on accessing indexes.
|
|
@@ -66,7 +66,7 @@ class Version
|
|
|
66
66
|
define_method(:"#{component}") { self.components[i] ? self.components[i].to_s : nil }
|
|
67
67
|
define_method(:"#{component}=") {|v| self[i] = v }
|
|
68
68
|
end
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
#
|
|
71
71
|
# Set the component of the Version at +index+ to +value+. Zeroes out any
|
|
72
72
|
# trailing components.
|
|
@@ -77,11 +77,11 @@ class Version
|
|
|
77
77
|
def []=(index, value)
|
|
78
78
|
return self.resize!(index) if value.nil? || value.to_s.empty?
|
|
79
79
|
return self[self.length + index] = value if index < 0
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
length = self.length - index
|
|
82
82
|
zeroes = Array.new length.abs, Version::Component.new('0')
|
|
83
83
|
value = Version::Component.new(value.to_s)
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
if length >= 0
|
|
86
86
|
self.components[index, length] = zeroes
|
|
87
87
|
self.components[index] = value
|
|
@@ -90,11 +90,11 @@ class Version
|
|
|
90
90
|
self.components << value
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
def prerelease?
|
|
95
95
|
self.components.any? {|c| c.prerelease? }
|
|
96
96
|
end
|
|
97
|
-
|
|
97
|
+
|
|
98
98
|
#
|
|
99
99
|
# Resizes the Version to +length+, removing any trailing components. Is a
|
|
100
100
|
# no-op if +length+ is greater than its current length.
|
|
@@ -103,12 +103,13 @@ class Version
|
|
|
103
103
|
self.components = self.components.take(length)
|
|
104
104
|
self
|
|
105
105
|
end
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
#
|
|
108
|
-
# Bumps the version number
|
|
109
|
-
#
|
|
110
|
-
#
|
|
111
|
-
# version
|
|
108
|
+
# Bumps the version number and replaces the current object. Pass
|
|
109
|
+
# +component+ to bump a component other than the least-significant
|
|
110
|
+
# part. Set +pre+ to true if you want to bump the component to a
|
|
111
|
+
# prerelease version. Set +trim+ to true if you want the version to
|
|
112
|
+
# be resized to only large enough to contain the component set.
|
|
112
113
|
#
|
|
113
114
|
# "1.0.4a".bump! # => '1.0.4'
|
|
114
115
|
# "1.0.4a".bump!(:pre) # => '1.0.4b'
|
|
@@ -125,10 +126,10 @@ class Version
|
|
|
125
126
|
else
|
|
126
127
|
# resize to match the new length, if applicable
|
|
127
128
|
self.resize!(component + 1) if (trim or component >= self.length)
|
|
128
|
-
|
|
129
|
+
|
|
129
130
|
# mark all but the changed bit as non-prerelease
|
|
130
131
|
self[0...component].each(&:unprerelease!)
|
|
131
|
-
|
|
132
|
+
|
|
132
133
|
# I don't even understand this part any more; god help you
|
|
133
134
|
self[component] = self[component].next if pre and self.prerelease? and component == self.length - 1
|
|
134
135
|
self[component] = self[component].next unless pre and self.prerelease? and component == -1
|
|
@@ -136,14 +137,21 @@ class Version
|
|
|
136
137
|
self
|
|
137
138
|
end
|
|
138
139
|
end
|
|
139
|
-
|
|
140
|
+
|
|
141
|
+
#
|
|
142
|
+
# Bumps the version number.
|
|
143
|
+
#
|
|
144
|
+
def bump(component = -1, pre = false, trim = false)
|
|
145
|
+
self.dup.bump!(component, pre, trim)
|
|
146
|
+
end
|
|
147
|
+
|
|
140
148
|
#
|
|
141
149
|
# Returns the current length of the version number.
|
|
142
150
|
#
|
|
143
151
|
def length
|
|
144
152
|
self.components.length
|
|
145
153
|
end
|
|
146
|
-
|
|
154
|
+
|
|
147
155
|
#
|
|
148
156
|
# Compares a Version against any +other+ object that responds to
|
|
149
157
|
# +to_version+.
|
|
@@ -151,14 +159,14 @@ class Version
|
|
|
151
159
|
def <=>(other)
|
|
152
160
|
self.components <=> other.to_version.components
|
|
153
161
|
end
|
|
154
|
-
|
|
162
|
+
|
|
155
163
|
#
|
|
156
164
|
# Converts the version number into an array of its components.
|
|
157
165
|
#
|
|
158
166
|
def to_a
|
|
159
167
|
self.components.map {|c| c.to_s }
|
|
160
168
|
end
|
|
161
|
-
|
|
169
|
+
|
|
162
170
|
#
|
|
163
171
|
# Converts the version number into a hash of its components.
|
|
164
172
|
#
|
|
@@ -169,48 +177,48 @@ class Version
|
|
|
169
177
|
:rest => self.length > 3 ? self.to_a.drop(3) : nil }.
|
|
170
178
|
delete_if {|k,v| v.nil? }
|
|
171
179
|
end
|
|
172
|
-
|
|
180
|
+
|
|
173
181
|
#
|
|
174
182
|
# The canonical representation of a version number.
|
|
175
183
|
#
|
|
176
184
|
def to_s
|
|
177
185
|
self.to_a.join('.')
|
|
178
186
|
end
|
|
179
|
-
|
|
187
|
+
|
|
180
188
|
#
|
|
181
189
|
# Returns +self+.
|
|
182
190
|
#
|
|
183
191
|
def to_version
|
|
184
192
|
self
|
|
185
193
|
end
|
|
186
|
-
|
|
194
|
+
|
|
187
195
|
#
|
|
188
196
|
# Returns a YAML representation of the version number.
|
|
189
197
|
#
|
|
190
198
|
def to_yaml
|
|
191
199
|
YAML::dump(self.to_hash)
|
|
192
200
|
end
|
|
193
|
-
|
|
201
|
+
|
|
194
202
|
#
|
|
195
203
|
# Returns a human-friendly version format.
|
|
196
204
|
#
|
|
197
205
|
def inspect
|
|
198
206
|
self.to_s.inspect
|
|
199
207
|
end
|
|
200
|
-
|
|
208
|
+
|
|
201
209
|
protected
|
|
202
|
-
|
|
210
|
+
|
|
203
211
|
#
|
|
204
212
|
# Retrieves the component of the Version at +index+.
|
|
205
213
|
#
|
|
206
214
|
def [](index)
|
|
207
215
|
self.components[index] || Component.new('0')
|
|
208
216
|
end
|
|
209
|
-
|
|
217
|
+
|
|
210
218
|
def components
|
|
211
219
|
@components ||= []
|
|
212
220
|
end
|
|
213
|
-
|
|
221
|
+
|
|
214
222
|
def components=(components)
|
|
215
223
|
components.each_with_index {|c, i| self[i] = c }
|
|
216
224
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,9 +1,104 @@
|
|
|
1
|
-
$:.unshift File.dirname(__FILE__)
|
|
2
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
|
3
|
-
|
|
4
1
|
require 'version'
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
|
3
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
|
4
|
+
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
|
5
|
+
# this file to always be loaded, without a need to explicitly require it in any
|
|
6
|
+
# files.
|
|
7
|
+
#
|
|
8
|
+
# Given that it is always loaded, you are encouraged to keep this file as
|
|
9
|
+
# light-weight as possible. Requiring heavyweight dependencies from this file
|
|
10
|
+
# will add to the boot time of your test suite on EVERY test run, even for an
|
|
11
|
+
# individual file that may not need all of that loaded. Instead, consider making
|
|
12
|
+
# a separate helper file that requires the additional dependencies and performs
|
|
13
|
+
# the additional setup, and require it from the spec files that actually need
|
|
14
|
+
# it.
|
|
15
|
+
#
|
|
16
|
+
# The `.rspec` file also contains a few flags that are not defaults but that
|
|
17
|
+
# users commonly want.
|
|
18
|
+
#
|
|
19
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
20
|
+
RSpec.configure do |config|
|
|
21
|
+
# rspec-expectations config goes here. You can use an alternate
|
|
22
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
|
23
|
+
# assertions if you prefer.
|
|
24
|
+
config.expect_with :rspec do |expectations|
|
|
25
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
|
26
|
+
# and `failure_message` of custom matchers include text for helper methods
|
|
27
|
+
# defined using `chain`, e.g.:
|
|
28
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
|
29
|
+
# # => "be bigger than 2 and smaller than 4"
|
|
30
|
+
# ...rather than:
|
|
31
|
+
# # => "be bigger than 2"
|
|
32
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
|
36
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
|
37
|
+
config.mock_with :rspec do |mocks|
|
|
38
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
|
39
|
+
# a real object. This is generally recommended, and will default to
|
|
40
|
+
# `true` in RSpec 4.
|
|
41
|
+
mocks.verify_partial_doubles = true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# This option will default to `:apply_to_host_groups` in RSpec 4 (and will
|
|
45
|
+
# have no way to turn it off -- the option exists only for backwards
|
|
46
|
+
# compatibility in RSpec 3). It causes shared context metadata to be
|
|
47
|
+
# inherited by the metadata hash of host groups and examples, rather than
|
|
48
|
+
# triggering implicit auto-inclusion in groups with matching metadata.
|
|
49
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
|
50
|
+
|
|
51
|
+
# The settings below are suggested to provide a good initial experience
|
|
52
|
+
# with RSpec, but feel free to customize to your heart's content.
|
|
53
|
+
=begin
|
|
54
|
+
# This allows you to limit a spec run to individual examples or groups
|
|
55
|
+
# you care about by tagging them with `:focus` metadata. When nothing
|
|
56
|
+
# is tagged with `:focus`, all examples get run. RSpec also provides
|
|
57
|
+
# aliases for `it`, `describe`, and `context` that include `:focus`
|
|
58
|
+
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
|
|
59
|
+
config.filter_run_when_matching :focus
|
|
60
|
+
|
|
61
|
+
# Allows RSpec to persist some state between runs in order to support
|
|
62
|
+
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
|
63
|
+
# you configure your source control system to ignore this file.
|
|
64
|
+
config.example_status_persistence_file_path = "spec/examples.txt"
|
|
65
|
+
|
|
66
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
|
67
|
+
# recommended. For more details, see:
|
|
68
|
+
# - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
|
|
69
|
+
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
|
70
|
+
# - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
|
|
71
|
+
config.disable_monkey_patching!
|
|
72
|
+
|
|
73
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
|
74
|
+
# be too noisy due to issues in dependencies.
|
|
75
|
+
config.warnings = true
|
|
76
|
+
|
|
77
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
|
78
|
+
# file, and it's useful to allow more verbose output when running an
|
|
79
|
+
# individual spec file.
|
|
80
|
+
if config.files_to_run.one?
|
|
81
|
+
# Use the documentation formatter for detailed output,
|
|
82
|
+
# unless a formatter has already been configured
|
|
83
|
+
# (e.g. via a command-line flag).
|
|
84
|
+
config.default_formatter = 'doc'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Print the 10 slowest examples and example groups at the
|
|
88
|
+
# end of the spec run, to help surface which specs are running
|
|
89
|
+
# particularly slow.
|
|
90
|
+
config.profile_examples = 10
|
|
91
|
+
|
|
92
|
+
# Run specs in random order to surface order dependencies. If you find an
|
|
93
|
+
# order dependency and want to debug it, you can fix the order by providing
|
|
94
|
+
# the seed, which is printed after each run.
|
|
95
|
+
# --seed 1234
|
|
96
|
+
config.order = :random
|
|
7
97
|
|
|
8
|
-
|
|
98
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
|
99
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
|
100
|
+
# test failures related to randomization by passing the same `--seed` value
|
|
101
|
+
# as the one that triggered the failure.
|
|
102
|
+
Kernel.srand config.seed
|
|
103
|
+
=end
|
|
9
104
|
end
|
data/spec/version_spec.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rspec/its'
|
|
2
2
|
|
|
3
3
|
module ImplicitVersion
|
|
4
4
|
def method_missing(name, *args, &block)
|
|
@@ -15,41 +15,41 @@ describe Version do
|
|
|
15
15
|
|
|
16
16
|
subject { v2_9 }
|
|
17
17
|
|
|
18
|
-
its(:major) {
|
|
19
|
-
its(:minor) {
|
|
20
|
-
its(:revision) {
|
|
21
|
-
its(:prerelease?) {
|
|
18
|
+
its(:major) { is_expected.to eq('2') }
|
|
19
|
+
its(:minor) { is_expected.to eq('9') }
|
|
20
|
+
its(:revision) { is_expected.to be_nil }
|
|
21
|
+
its(:prerelease?) { is_expected.to be_falsey }
|
|
22
22
|
|
|
23
|
-
it '
|
|
24
|
-
subject.bump
|
|
23
|
+
it 'is_expected.to bump to 2.10' do
|
|
24
|
+
expect(subject.bump!).to eq(v2_10)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
it '
|
|
28
|
-
subject.bump!(:major).
|
|
27
|
+
it 'is_expected.to major-bump to 3.0' do
|
|
28
|
+
expect(subject.bump!(:major)).to eq(v3_0)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
it '
|
|
32
|
-
subject.bump!(:minor).
|
|
31
|
+
it 'is_expected.to minor-bump to 2.10' do
|
|
32
|
+
expect(subject.bump!(:minor)).to eq(v2_10)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
it '
|
|
36
|
-
subject.bump!(:revision).
|
|
35
|
+
it 'is_expected.to revision-bump to 2.9.1' do
|
|
36
|
+
expect(subject.bump!(:revision)).to eq(v2_9_1)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
it '
|
|
40
|
-
subject.bump!(:pre).
|
|
39
|
+
it 'is_expected.to prerelease-bump to 2.10a' do
|
|
40
|
+
expect(subject.bump!(:pre)).to eq(v2_10a)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
it '
|
|
44
|
-
subject.bump!(:major, true).
|
|
43
|
+
it 'is_expected.to prerelease-bump major to 3_0a' do
|
|
44
|
+
expect(subject.bump!(:major, true)).to eq(v3_0a)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
it '
|
|
48
|
-
subject.bump!(:minor, true).
|
|
47
|
+
it 'is_expected.to prerelease-bump minor to 2.10a' do
|
|
48
|
+
expect(subject.bump!(:minor, true)).to eq(v2_10a)
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
it '
|
|
52
|
-
subject.bump!(:revision, true).
|
|
51
|
+
it 'is_expected.to prerelease-bump revision to 2.9.1a' do
|
|
52
|
+
expect(subject.bump!(:revision, true)).to eq(v2_9_1a)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -58,41 +58,41 @@ describe Version do
|
|
|
58
58
|
|
|
59
59
|
subject { v0_10_0 }
|
|
60
60
|
|
|
61
|
-
its(:major) {
|
|
62
|
-
its(:minor) {
|
|
63
|
-
its(:revision) {
|
|
64
|
-
its(:prerelease?) {
|
|
61
|
+
its(:major) { is_expected.to eq('0') }
|
|
62
|
+
its(:minor) { is_expected.to eq('10') }
|
|
63
|
+
its(:revision) { is_expected.to eq('0') }
|
|
64
|
+
its(:prerelease?) { is_expected.to be_falsey }
|
|
65
65
|
|
|
66
|
-
it '
|
|
67
|
-
subject.bump
|
|
66
|
+
it 'is_expected.to bump to 0.10.1' do
|
|
67
|
+
expect(subject.bump!).to eq(v0_10_1)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
it '
|
|
71
|
-
subject.bump!(:major).
|
|
70
|
+
it 'is_expected.to major-bump to 1.0.0' do
|
|
71
|
+
expect(subject.bump!(:major)).to eq(v1_0_0)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
it '
|
|
75
|
-
subject.bump!(:minor).
|
|
74
|
+
it 'is_expected.to minor-bump to 0.11.0' do
|
|
75
|
+
expect(subject.bump!(:minor)).to eq(v0_11_0)
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
it '
|
|
79
|
-
subject.bump!(:revision).
|
|
78
|
+
it 'is_expected.to revision-bump to 0.10.1' do
|
|
79
|
+
expect(subject.bump!(:revision)).to eq(v0_10_1)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
it '
|
|
83
|
-
subject.bump!(:pre).
|
|
82
|
+
it 'is_expected.to prerelease-bump to 0.10.1a' do
|
|
83
|
+
expect(subject.bump!(:pre)).to eq(v0_10_1a)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
it '
|
|
87
|
-
subject.bump!(:major, true).
|
|
86
|
+
it 'is_expected.to prerelease-bump major to 1.0.0a' do
|
|
87
|
+
expect(subject.bump!(:major, true)).to eq(v1_0_0a)
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
it '
|
|
91
|
-
subject.bump!(:minor, true).
|
|
90
|
+
it 'is_expected.to prerelease-bump minor to 0.11.0a' do
|
|
91
|
+
expect(subject.bump!(:minor, true)).to eq(v0_11_0a)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
it '
|
|
95
|
-
subject.bump!(:revision, true).
|
|
94
|
+
it 'is_expected.to prerelease-bump revision to 0.10.1a' do
|
|
95
|
+
expect(subject.bump!(:revision, true)).to eq(v0_10_1a)
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
|
|
@@ -102,41 +102,41 @@ describe Version, 'with a prerelease revision' do
|
|
|
102
102
|
|
|
103
103
|
subject { v1_6_3a }
|
|
104
104
|
|
|
105
|
-
its(:major) {
|
|
106
|
-
its(:minor) {
|
|
107
|
-
its(:revision) {
|
|
108
|
-
its(:prerelease?) {
|
|
105
|
+
its(:major) { is_expected.to eq('1') }
|
|
106
|
+
its(:minor) { is_expected.to eq('6') }
|
|
107
|
+
its(:revision) { is_expected.to eq('3a') }
|
|
108
|
+
its(:prerelease?) { is_expected.to be_truthy }
|
|
109
109
|
|
|
110
|
-
it '
|
|
111
|
-
subject.bump
|
|
110
|
+
it 'is_expected.to bump to 1.6.3' do
|
|
111
|
+
expect(subject.bump!).to eq(v1_6_3)
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
it '
|
|
115
|
-
subject.bump!(:major).
|
|
114
|
+
it 'is_expected.to major-bump to 2.0.0' do
|
|
115
|
+
expect(subject.bump!(:major)).to eq(v2_0_0)
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
it '
|
|
119
|
-
subject.bump!(:minor).
|
|
118
|
+
it 'is_expected.to minor-bump to 1.7.0' do
|
|
119
|
+
expect(subject.bump!(:minor)).to eq(v1_7_0)
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
-
it '
|
|
123
|
-
subject.bump!(:revision).
|
|
122
|
+
it 'is_expected.to revision-bump to 1.6.3' do
|
|
123
|
+
expect(subject.bump!(:revision)).to eq(v1_6_3)
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
-
it '
|
|
127
|
-
subject.bump!(:pre).
|
|
126
|
+
it 'is_expected.to prerelease-bump to 1.6.3b' do
|
|
127
|
+
expect(subject.bump!(:pre)).to eq(v1_6_3b)
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
-
it '
|
|
131
|
-
subject.bump!(:major, true).
|
|
130
|
+
it 'is_expected.to prerelease-bump major to 2.0.0a' do
|
|
131
|
+
expect(subject.bump!(:major, true)).to eq(v2_0_0a)
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
-
it '
|
|
135
|
-
subject.bump!(:minor, true).
|
|
134
|
+
it 'is_expected.to prerelease-bump minor to 1.7.0a' do
|
|
135
|
+
expect(subject.bump!(:minor, true)).to eq(v1_7_0a)
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
it '
|
|
139
|
-
subject.bump!(:revision, true).
|
|
138
|
+
it 'is_expected.to prerelease-bump revision to 1.6.4a' do
|
|
139
|
+
expect(subject.bump!(:revision, true)).to eq(v1_6_4a)
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
|
|
@@ -145,64 +145,64 @@ describe Version, 'with a prerelease minor version' do
|
|
|
145
145
|
|
|
146
146
|
subject { v1_6a }
|
|
147
147
|
|
|
148
|
-
its(:major) {
|
|
149
|
-
its(:minor) {
|
|
150
|
-
its(:revision) {
|
|
151
|
-
its(:prerelease?) {
|
|
148
|
+
its(:major) { is_expected.to eq('1') }
|
|
149
|
+
its(:minor) { is_expected.to eq('6a') }
|
|
150
|
+
its(:revision) { is_expected.to eq(nil) }
|
|
151
|
+
its(:prerelease?) { is_expected.to be_truthy }
|
|
152
152
|
|
|
153
|
-
it '
|
|
154
|
-
subject.bump
|
|
153
|
+
it 'is_expected.to bump to 1.6' do
|
|
154
|
+
expect(subject.bump!).to eq(v1_6)
|
|
155
155
|
end
|
|
156
156
|
|
|
157
|
-
it '
|
|
158
|
-
subject.bump!(:major).
|
|
157
|
+
it 'is_expected.to major-bump to 2.0' do
|
|
158
|
+
expect(subject.bump!(:major)).to eq(v2_0)
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
-
it '
|
|
162
|
-
subject.bump!(:minor).
|
|
161
|
+
it 'is_expected.to minor-bump to 1.6' do
|
|
162
|
+
expect(subject.bump!(:minor)).to eq(v1_6)
|
|
163
163
|
end
|
|
164
164
|
|
|
165
|
-
it '
|
|
166
|
-
subject.bump!(:revision).
|
|
165
|
+
it 'is_expected.to revision-bump to 1.6.1' do
|
|
166
|
+
expect(subject.bump!(:revision)).to eq(v1_6_1)
|
|
167
167
|
end
|
|
168
168
|
|
|
169
|
-
it '
|
|
170
|
-
subject.bump!(:pre).
|
|
169
|
+
it 'is_expected.to bump to 1.6b' do
|
|
170
|
+
expect(subject.bump!(:pre)).to eq(v1_6b)
|
|
171
171
|
end
|
|
172
172
|
|
|
173
|
-
it '
|
|
174
|
-
subject.bump!(:major, true).
|
|
173
|
+
it 'is_expected.to prerelease-bump major to 2.0a' do
|
|
174
|
+
expect(subject.bump!(:major, true)).to eq(v2_0a)
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
-
it '
|
|
178
|
-
subject.bump!(:minor, true).
|
|
177
|
+
it 'is_expected.to prerelease-bump minor to 1.7a' do
|
|
178
|
+
expect(subject.bump!(:minor, true)).to eq(v1_7a)
|
|
179
179
|
end
|
|
180
180
|
|
|
181
|
-
it '
|
|
182
|
-
subject.bump!(:revision, true).
|
|
181
|
+
it 'is_expected.to prerelease-bump revision to 1.6.1a' do
|
|
182
|
+
expect(subject.bump!(:revision, true)).to eq(v1_6_1a)
|
|
183
183
|
end
|
|
184
184
|
end
|
|
185
185
|
|
|
186
186
|
describe Version do
|
|
187
187
|
include ImplicitVersion
|
|
188
188
|
|
|
189
|
-
it '
|
|
190
|
-
v0_0.
|
|
191
|
-
v0_1_1.
|
|
192
|
-
v0_4_alpha.
|
|
193
|
-
v1_0_2.
|
|
194
|
-
v1_0_2b.
|
|
195
|
-
v1_01.
|
|
196
|
-
v1_10.
|
|
197
|
-
v2_0.
|
|
198
|
-
va.
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
it '
|
|
202
|
-
v0_0.
|
|
203
|
-
v0_0_0_1.
|
|
204
|
-
v0_1a.
|
|
205
|
-
v0_01.
|
|
206
|
-
v0_9.
|
|
189
|
+
it 'is_expected.to preserve equality' do
|
|
190
|
+
expect(v0_0).to eq(v0_0)
|
|
191
|
+
expect(v0_1_1).to eq(v0_1_1)
|
|
192
|
+
expect(v0_4_alpha).to eq(v0_4_alpha)
|
|
193
|
+
expect(v1_0_2).to eq(v1_0_2)
|
|
194
|
+
expect(v1_0_2b).to eq(v1_0_2b)
|
|
195
|
+
expect(v1_01).to eq(v1_01)
|
|
196
|
+
expect(v1_10).to eq(v1_10)
|
|
197
|
+
expect(v2_0).to eq(v2_0)
|
|
198
|
+
expect(va).to eq(vb)
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
it 'is_expected.to order correctly' do
|
|
202
|
+
expect(v0_0).to be < v0_0_0_0_0_1
|
|
203
|
+
expect(v0_0_0_1).to be < v1
|
|
204
|
+
expect(v0_1a).to be < v0_1
|
|
205
|
+
expect(v0_01).to be < v0_10
|
|
206
|
+
expect(v0_9).to be < v0_10
|
|
207
207
|
end
|
|
208
208
|
end
|
metadata
CHANGED
|
@@ -1,84 +1,93 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: version
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
version: 1.0.0
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.1.0
|
|
6
5
|
platform: ruby
|
|
7
|
-
authors:
|
|
6
|
+
authors:
|
|
8
7
|
- Stephen Touset
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rake
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
18
21
|
prerelease: false
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
requirements:
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
22
24
|
- - ">="
|
|
23
|
-
- !ruby/object:Gem::Version
|
|
24
|
-
version:
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rspec
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '1'
|
|
25
34
|
type: :development
|
|
26
|
-
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '1'
|
|
27
41
|
description:
|
|
28
42
|
email: stephen@touset.org
|
|
29
43
|
executables: []
|
|
30
|
-
|
|
31
44
|
extensions: []
|
|
32
|
-
|
|
33
|
-
extra_rdoc_files:
|
|
45
|
+
extra_rdoc_files:
|
|
34
46
|
- History.rdoc
|
|
35
47
|
- README.rdoc
|
|
36
48
|
- TODO.rdoc
|
|
37
|
-
files:
|
|
49
|
+
files:
|
|
50
|
+
- Gemfile
|
|
51
|
+
- Gemfile.lock
|
|
38
52
|
- History.rdoc
|
|
39
53
|
- License.txt
|
|
40
|
-
- Rakefile
|
|
41
54
|
- README.rdoc
|
|
55
|
+
- Rakefile
|
|
42
56
|
- TODO.rdoc
|
|
43
57
|
- VERSION
|
|
44
58
|
- lib/rake/version_task.rb
|
|
59
|
+
- lib/version.rb
|
|
45
60
|
- lib/version/component.rb
|
|
46
61
|
- lib/version/ext/array.rb
|
|
47
62
|
- lib/version/ext/hash.rb
|
|
48
63
|
- lib/version/ext/module.rb
|
|
49
64
|
- lib/version/ext/string.rb
|
|
50
|
-
- lib/version.rb
|
|
51
65
|
- spec/spec.opts
|
|
52
66
|
- spec/spec_helper.rb
|
|
53
67
|
- spec/version_spec.rb
|
|
54
|
-
has_rdoc: true
|
|
55
68
|
homepage:
|
|
56
69
|
licenses: []
|
|
57
|
-
|
|
70
|
+
metadata: {}
|
|
58
71
|
post_install_message:
|
|
59
|
-
rdoc_options:
|
|
60
|
-
- --main
|
|
72
|
+
rdoc_options:
|
|
73
|
+
- "--main"
|
|
61
74
|
- README.rdoc
|
|
62
|
-
require_paths:
|
|
75
|
+
require_paths:
|
|
63
76
|
- lib
|
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
|
-
|
|
66
|
-
requirements:
|
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
67
79
|
- - ">="
|
|
68
|
-
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
70
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
|
-
|
|
72
|
-
requirements:
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
73
84
|
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '0'
|
|
76
87
|
requirements: []
|
|
77
|
-
|
|
78
88
|
rubyforge_project:
|
|
79
|
-
rubygems_version:
|
|
89
|
+
rubygems_version: 2.6.10
|
|
80
90
|
signing_key:
|
|
81
|
-
specification_version:
|
|
91
|
+
specification_version: 4
|
|
82
92
|
summary: simple version-number encapsulation
|
|
83
93
|
test_files: []
|
|
84
|
-
|