mixlib-versioning 1.1.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.expeditor/config.yml +14 -0
  3. data/.expeditor/update_version.sh +9 -0
  4. data/.github/CODEOWNERS +3 -0
  5. data/.travis.yml +20 -19
  6. data/CHANGELOG.md +21 -7
  7. data/Gemfile +4 -4
  8. data/README.md +48 -29
  9. data/Rakefile +20 -6
  10. data/VERSION +1 -0
  11. data/lib/mixlib/versioning.rb +10 -8
  12. data/lib/mixlib/versioning/format.rb +25 -22
  13. data/lib/mixlib/versioning/format/git_describe.rb +1 -1
  14. data/lib/mixlib/versioning/format/opscode_semver.rb +3 -3
  15. data/lib/mixlib/versioning/format/partial_semver.rb +62 -0
  16. data/lib/mixlib/versioning/format/rubygems.rb +9 -3
  17. data/lib/mixlib/versioning/format/semver.rb +1 -1
  18. data/lib/mixlib/versioning/version.rb +1 -1
  19. data/mixlib-versioning.gemspec +14 -14
  20. data/spec/mixlib/versioning/format/git_describe_spec.rb +51 -51
  21. data/spec/mixlib/versioning/format/opscode_semver_spec.rb +43 -43
  22. data/spec/mixlib/versioning/format/partial_semver_spec.rb +121 -0
  23. data/spec/mixlib/versioning/format/rubygems_spec.rb +40 -40
  24. data/spec/mixlib/versioning/format/semver_spec.rb +31 -31
  25. data/spec/mixlib/versioning/format_spec.rb +39 -12
  26. data/spec/mixlib/versioning/versioning_spec.rb +100 -100
  27. data/spec/spec_helper.rb +5 -6
  28. data/spec/support/shared_examples/basic_semver.rb +7 -7
  29. data/spec/support/shared_examples/behaviors/comparable.rb +14 -14
  30. data/spec/support/shared_examples/behaviors/comparable_types.rb +56 -0
  31. data/spec/support/shared_examples/behaviors/filterable.rb +11 -11
  32. data/spec/support/shared_examples/behaviors/parses_valid_version_strings.rb +1 -1
  33. data/spec/support/shared_examples/behaviors/rejects_invalid_version_strings.rb +1 -1
  34. data/spec/support/shared_examples/behaviors/serializable.rb +7 -7
  35. data/spec/support/shared_examples/behaviors/sortable.rb +9 -9
  36. data/spec/support/shared_examples/semver.rb +54 -54
  37. metadata +25 -18
  38. data/.rubocop.yml +0 -22
@@ -53,7 +53,7 @@ module Mixlib
53
53
  match = version_string.match(GIT_DESCRIBE_REGEX) rescue nil
54
54
 
55
55
  unless match
56
- fail Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
56
+ raise Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
57
57
  end
58
58
 
59
59
  @major, @minor, @patch, @prerelease, @commits_since, @commit_sha, @iteration = match[1..7]
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require 'mixlib/versioning/format/semver'
20
+ require "mixlib/versioning/format/semver"
21
21
 
22
22
  module Mixlib
23
23
  class Versioning
@@ -71,8 +71,8 @@ module Mixlib
71
71
  def parse(version_string)
72
72
  super(version_string)
73
73
 
74
- fail Mixlib::Versioning::ParseError, "'#{@prerelease}' is not a valid Opscode pre-release signifier!" unless @prerelease.nil? || @prerelease.match(OPSCODE_PRERELEASE_REGEX)
75
- fail Mixlib::Versioning::ParseError, "'#{@build}' is not a valid Opscode build signifier!" unless @build.nil? || @build.match(OPSCODE_BUILD_REGEX)
74
+ raise Mixlib::Versioning::ParseError, "'#{@prerelease}' is not a valid Opscode pre-release signifier!" unless @prerelease.nil? || @prerelease.match(OPSCODE_PRERELEASE_REGEX)
75
+ raise Mixlib::Versioning::ParseError, "'#{@build}' is not a valid Opscode build signifier!" unless @build.nil? || @build.match(OPSCODE_BUILD_REGEX)
76
76
  end
77
77
  end # class OpscodeSemVer
78
78
  end # class Format
@@ -0,0 +1,62 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@chef.io>)
3
+ # Author:: Christopher Maier (<cm@chef.io>)
4
+ # Author:: Ryan Hass (<rhass@chef.io>)
5
+ # Copyright:: Copyright (c) 2017 Chef Software Inc.
6
+ # License:: Apache License, Version 2.0
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ module Mixlib
22
+ class Versioning
23
+ class Format
24
+ # Handles partial version strings.
25
+ # -----------------
26
+ # ```text
27
+ # MAJOR
28
+ # MAJOR.MINOR
29
+ # ```
30
+ #
31
+ # EXAMPLES
32
+ # --------
33
+ # ```text
34
+ # 11
35
+ # 11.0
36
+ # ```
37
+ #
38
+ # @author Seth Chisamore (<schisamo@chef.io>)
39
+ # @author Christopher Maier (<cm@chef.io>)
40
+ # @author Ryan Hass (<rhass@chef.io>)
41
+ class PartialSemVer < Format
42
+ # http://rubular.com/r/NmRSN8vCie
43
+ PARTIAL_REGEX = /^(\d+)\.?(?:(\d*))$/
44
+ # @see Format#parse
45
+ def parse(version_string)
46
+ match = version_string.match(PARTIAL_REGEX) rescue nil
47
+
48
+ unless match
49
+ raise Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
50
+ end
51
+
52
+ @major, @minor = match[1..2]
53
+ @major, @minor, @patch = [@major, @minor, @patch].map(&:to_i)
54
+
55
+ # Partial versions do not contain these values, so we just set them to nil.
56
+ @prerelease = nil
57
+ @build = nil
58
+ end
59
+ end # class Partial
60
+ end # class Format
61
+ end # module Versioning
62
+ end # module Mixlib
@@ -49,13 +49,19 @@ module Mixlib
49
49
  match = version_string.match(RUBYGEMS_REGEX) rescue nil
50
50
 
51
51
  unless match
52
- fail Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
52
+ raise Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
53
53
  end
54
54
 
55
55
  @major, @minor, @patch, @prerelease, @iteration = match[1..5]
56
- @major, @minor, @patch, @iteration = [@major, @minor, @patch, @iteration].map(&:to_i)
56
+ @major, @minor, @patch = [@major, @minor, @patch].map(&:to_i)
57
57
 
58
- # Do not convert @build to an integer; SemVer sorting logic will handle the conversion
58
+ # Do not convert @prerelease or @iteration to an integer;
59
+ # sorting logic will handle the conversion.
60
+ @iteration = if @iteration.nil? || @iteration.empty?
61
+ nil
62
+ else
63
+ @iteration.to_i
64
+ end
59
65
  @prerelease = nil if @prerelease.nil? || @prerelease.empty?
60
66
  end
61
67
  end # class Rubygems
@@ -49,7 +49,7 @@ module Mixlib
49
49
  match = version_string.match(SEMVER_REGEX) rescue nil
50
50
 
51
51
  unless match
52
- fail Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
52
+ raise Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
53
53
  end
54
54
 
55
55
  @major, @minor, @patch, @prerelease, @build = match[1..5]
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Mixlib
20
20
  class Versioning
21
- VERSION = '1.1.0'
21
+ VERSION = "1.2.1"
22
22
  end
23
23
  end
@@ -1,28 +1,28 @@
1
1
  # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'mixlib/versioning/version'
4
+ require "mixlib/versioning/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = 'mixlib-versioning'
7
+ spec.name = "mixlib-versioning"
8
8
  spec.version = Mixlib::Versioning::VERSION
9
- spec.authors = ['Seth Chisamore', 'Christopher Maier']
10
- spec.email = ['schisamo@chef.io', 'cm@chef.io']
11
- spec.description = 'General purpose Ruby library that allows you to parse, compare and manipulate version strings in multiple formats.'
9
+ spec.authors = ["Seth Chisamore", "Christopher Maier"]
10
+ spec.email = ["schisamo@chef.io", "cm@chef.io"]
11
+ spec.description = "General purpose Ruby library that allows you to parse, compare and manipulate version strings in multiple formats."
12
12
  spec.summary = spec.description
13
- spec.homepage = 'https://github.com/chef/mixlib-versioning'
14
- spec.license = 'Apache 2.0'
13
+ spec.homepage = "https://github.com/chef/mixlib-versioning"
14
+ spec.license = "Apache 2.0"
15
15
 
16
- spec.required_ruby_version = '>= 1.9'
16
+ spec.required_ruby_version = ">= 2.2"
17
17
 
18
18
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
19
19
  spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
- spec.require_paths = ['lib']
21
+ spec.require_paths = ["lib"]
22
22
 
23
23
  # Development dependencies
24
- spec.add_development_dependency 'rubocop', '= 0.31.0'
25
- spec.add_development_dependency 'rspec', '~> 2.14'
26
- spec.add_development_dependency 'bundler'
27
- spec.add_development_dependency 'rake'
24
+ spec.add_development_dependency "chefstyle"
25
+ spec.add_development_dependency "rspec", "~> 3.0"
26
+ spec.add_development_dependency "rspec-its"
27
+ spec.add_development_dependency "rake", "~> 12"
28
28
  end
@@ -16,103 +16,103 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'spec_helper'
19
+ require "spec_helper"
20
20
 
21
21
  describe Mixlib::Versioning::Format::GitDescribe do
22
22
  subject { described_class.new(version_string) }
23
23
 
24
- it_has_behavior 'parses valid version strings', {
25
- '0.10.8-231-g59d6185' => {
24
+ it_has_behavior "parses valid version strings", {
25
+ "0.10.8-231-g59d6185" => {
26
26
  major: 0,
27
27
  minor: 10,
28
28
  patch: 8,
29
29
  prerelease: nil,
30
- build: '231.g59d6185.0',
30
+ build: "231.g59d6185.0",
31
31
  release?: false,
32
32
  prerelease?: false,
33
33
  build?: true,
34
34
  release_build?: true,
35
35
  prerelease_build?: false,
36
36
  commits_since: 231,
37
- commit_sha: '59d6185',
37
+ commit_sha: "59d6185",
38
38
  iteration: 0,
39
39
  },
40
- '10.16.2-49-g21353f0-1' => {
40
+ "10.16.2-49-g21353f0-1" => {
41
41
  major: 10,
42
42
  minor: 16,
43
43
  patch: 2,
44
44
  prerelease: nil,
45
- build: '49.g21353f0.1',
45
+ build: "49.g21353f0.1",
46
46
  release?: false,
47
47
  prerelease?: false,
48
48
  build?: true,
49
49
  release_build?: true,
50
50
  prerelease_build?: false,
51
51
  commits_since: 49,
52
- commit_sha: '21353f0',
52
+ commit_sha: "21353f0",
53
53
  iteration: 1,
54
54
  },
55
- '10.16.2.rc.1-49-g21353f0-1' => {
55
+ "10.16.2.rc.1-49-g21353f0-1" => {
56
56
  major: 10,
57
57
  minor: 16,
58
58
  patch: 2,
59
- prerelease: 'rc.1',
60
- build: '49.g21353f0.1',
59
+ prerelease: "rc.1",
60
+ build: "49.g21353f0.1",
61
61
  release?: false,
62
62
  prerelease?: false,
63
63
  build?: true,
64
64
  release_build?: false,
65
65
  prerelease_build?: true,
66
66
  commits_since: 49,
67
- commit_sha: '21353f0',
67
+ commit_sha: "21353f0",
68
68
  iteration: 1,
69
69
  },
70
- '10.16.2-alpha-49-g21353f0-1' => {
70
+ "10.16.2-alpha-49-g21353f0-1" => {
71
71
  major: 10,
72
72
  minor: 16,
73
73
  patch: 2,
74
- prerelease: 'alpha',
75
- build: '49.g21353f0.1',
74
+ prerelease: "alpha",
75
+ build: "49.g21353f0.1",
76
76
  release?: false,
77
77
  prerelease?: false,
78
78
  build?: true,
79
79
  release_build?: false,
80
80
  prerelease_build?: true,
81
81
  commits_since: 49,
82
- commit_sha: '21353f0',
82
+ commit_sha: "21353f0",
83
83
  iteration: 1,
84
84
  },
85
- '10.16.2-alpha-49-g21353f0' => {
85
+ "10.16.2-alpha-49-g21353f0" => {
86
86
  major: 10,
87
87
  minor: 16,
88
88
  patch: 2,
89
- prerelease: 'alpha',
90
- build: '49.g21353f0.0',
89
+ prerelease: "alpha",
90
+ build: "49.g21353f0.0",
91
91
  release?: false,
92
92
  prerelease?: false,
93
93
  build?: true,
94
94
  release_build?: false,
95
95
  prerelease_build?: true,
96
96
  commits_since: 49,
97
- commit_sha: '21353f0',
97
+ commit_sha: "21353f0",
98
98
  iteration: 0,
99
99
  },
100
100
  }
101
101
 
102
- it_has_behavior 'rejects invalid version strings', {
103
- '1.0.0' => 'no git describe data',
104
- '1.0.0-alpha.1' => 'no git describe data',
105
- '1.0.0-alpha.1+build.deadbeef' => 'no git describe data',
106
- '1.0.0-123-gfd0e3a65282cb5f6df3bab6a53f4fcb722340d499-1' => 'too many SHA1 characters',
107
- '1.0.0-123-gdeadbe-1' => 'too few SHA1 characters',
108
- '1.0.0-123-gNOTHEX1-1' => 'illegal SHA1 characters',
109
- '1.0.0-123-g1234567-alpha' => 'non-numeric iteration',
110
- '1.0.0-alpha-poop-g1234567-1' => "non-numeric 'commits_since'",
111
- '1.0.0-g1234567-1' => "missing 'commits_since'",
112
- '1.0.0-123-1' => 'missing SHA1',
102
+ it_has_behavior "rejects invalid version strings", {
103
+ "1.0.0" => "no git describe data",
104
+ "1.0.0-alpha.1" => "no git describe data",
105
+ "1.0.0-alpha.1+build.deadbeef" => "no git describe data",
106
+ "1.0.0-123-gfd0e3a65282cb5f6df3bab6a53f4fcb722340d499-1" => "too many SHA1 characters",
107
+ "1.0.0-123-gdeadbe-1" => "too few SHA1 characters",
108
+ "1.0.0-123-gNOTHEX1-1" => "illegal SHA1 characters",
109
+ "1.0.0-123-g1234567-alpha" => "non-numeric iteration",
110
+ "1.0.0-alpha-poop-g1234567-1" => "non-numeric 'commits_since'",
111
+ "1.0.0-g1234567-1" => "missing 'commits_since'",
112
+ "1.0.0-123-1" => "missing SHA1",
113
113
  }
114
114
 
115
- version_strings = %w(
115
+ version_strings = %w{
116
116
  9.0.1-1-gdeadbee-1
117
117
  9.1.2-2-g1234567-1
118
118
  10.0.0-1-gabcdef3-1
@@ -123,14 +123,14 @@ describe Mixlib::Versioning::Format::GitDescribe do
123
123
  9.0.1-2-gdeadbe1-2
124
124
  9.0.1-2-gdeadbe2-1
125
125
  9.1.1-2-g1234567-1
126
- )
126
+ }
127
127
 
128
- it_has_behavior 'serializable', version_strings
128
+ it_has_behavior "serializable", version_strings
129
129
 
130
- it_has_behavior 'sortable' do
130
+ it_has_behavior "sortable" do
131
131
  let(:unsorted_version_strings) { version_strings }
132
132
  let(:sorted_version_strings) do
133
- %w(
133
+ %w{
134
134
  9.0.1-1-gdeadbee-1
135
135
  9.0.1-2-gdeadbe1-1
136
136
  9.0.1-2-gdeadbe1-2
@@ -141,17 +141,17 @@ describe Mixlib::Versioning::Format::GitDescribe do
141
141
  10.5.7-2-g21353f0-1
142
142
  10.20.2-2-gbbbbbbb-1
143
143
  10.20.2-3-gaaaaaaa-1
144
- )
144
+ }
145
145
  end
146
- let(:min) { '9.0.1-1-gdeadbee-1' }
147
- let(:max) { '10.20.2-3-gaaaaaaa-1' }
146
+ let(:min) { "9.0.1-1-gdeadbee-1" }
147
+ let(:max) { "10.20.2-3-gaaaaaaa-1" }
148
148
  end # it_has_behavior
149
149
 
150
150
  # The +GitDescribe+ format only produces release build versions.
151
- it_has_behavior 'filterable' do
151
+ it_has_behavior "filterable" do
152
152
  let(:unsorted_version_strings) { version_strings }
153
153
  let(:build_versions) do
154
- %w(
154
+ %w{
155
155
  9.0.1-1-gdeadbee-1
156
156
  9.1.2-2-g1234567-1
157
157
  10.0.0-1-gabcdef3-1
@@ -162,10 +162,10 @@ describe Mixlib::Versioning::Format::GitDescribe do
162
162
  9.0.1-2-gdeadbe1-2
163
163
  9.0.1-2-gdeadbe2-1
164
164
  9.1.1-2-g1234567-1
165
- )
165
+ }
166
166
  end
167
167
  let(:release_build_versions) do
168
- %w(
168
+ %w{
169
169
  9.0.1-1-gdeadbee-1
170
170
  9.1.2-2-g1234567-1
171
171
  10.0.0-1-gabcdef3-1
@@ -176,15 +176,15 @@ describe Mixlib::Versioning::Format::GitDescribe do
176
176
  9.0.1-2-gdeadbe1-2
177
177
  9.0.1-2-gdeadbe2-1
178
178
  9.1.1-2-g1234567-1
179
- )
179
+ }
180
180
  end
181
- end # it_has_behavior
181
+ end # it_has_behavior
182
182
 
183
- it_has_behavior 'comparable', [
184
- '9.0.1-1-gdeadbee-1', '9.0.1-2-gdeadbe1-1',
185
- '9.0.1-2-gdeadbe1-2', '9.0.1-2-gdeadbe2-1',
186
- '9.1.1-2-g1234567-1', '9.1.2-2-g1234567-1',
187
- '10.0.0-1-gabcdef3-1', '10.5.7-2-g21353f0-1',
188
- '10.20.2-2-gbbbbbbb-1', '10.20.2-3-gaaaaaaa-1'
183
+ it_has_behavior "comparable", [
184
+ "9.0.1-1-gdeadbee-1", "9.0.1-2-gdeadbe1-1",
185
+ "9.0.1-2-gdeadbe1-2", "9.0.1-2-gdeadbe2-1",
186
+ "9.1.1-2-g1234567-1", "9.1.2-2-g1234567-1",
187
+ "10.0.0-1-gabcdef3-1", "10.5.7-2-g21353f0-1",
188
+ "10.20.2-2-gbbbbbbb-1", "10.20.2-3-gaaaaaaa-1"
189
189
  ]
190
190
  end # describe
@@ -16,38 +16,38 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'spec_helper'
19
+ require "spec_helper"
20
20
 
21
21
  describe Mixlib::Versioning::Format::OpscodeSemVer do
22
22
  subject { described_class.new(version_string) }
23
23
 
24
24
  it_should_behave_like Mixlib::Versioning::Format::SemVer
25
25
 
26
- it_has_behavior 'rejects invalid version strings', {
27
- '1.0.0-poop.0' => 'non-valid pre-release type',
28
- '1.0.0+2010AA08010101' => 'a malformed timestamp',
29
- '1.0.0+cvs.33.e0f985a' => 'a malformed git describe: no git string',
30
- '1.0.0+git.AA.e0f985a' => 'a malformed git describe: non-numeric COMMITS_SINCE',
31
- '1.0.0+git.33.z0f985a' => 'a malformed git describe: invalid SHA1',
32
- '11.0.08-rc.1+20130308110833' => 'leading zero invalid',
33
- '01.0.8-alpha.2+20130308110833.git.2.94a1dde' => 'leading zero invalid',
34
- '11.02.8-rc.1+20130308110833' => 'leading zero invalid',
35
- '0008.1.4' => 'leading zero invalid',
36
- '11.00000000002.8-rc.1+20130308110833' => 'leading zero invalid',
37
- '4.67.00012+build.20131219' => 'leading zero invalid',
38
- '3.6.7-rc.007' => 'leading zero invalid',
26
+ it_has_behavior "rejects invalid version strings", {
27
+ "1.0.0-poop.0" => "non-valid pre-release type",
28
+ "1.0.0+2010AA08010101" => "a malformed timestamp",
29
+ "1.0.0+cvs.33.e0f985a" => "a malformed git describe: no git string",
30
+ "1.0.0+git.AA.e0f985a" => "a malformed git describe: non-numeric COMMITS_SINCE",
31
+ "1.0.0+git.33.z0f985a" => "a malformed git describe: invalid SHA1",
32
+ "11.0.08-rc.1+20130308110833" => "leading zero invalid",
33
+ "01.0.8-alpha.2+20130308110833.git.2.94a1dde" => "leading zero invalid",
34
+ "11.02.8-rc.1+20130308110833" => "leading zero invalid",
35
+ "0008.1.4" => "leading zero invalid",
36
+ "11.00000000002.8-rc.1+20130308110833" => "leading zero invalid",
37
+ "4.67.00012+build.20131219" => "leading zero invalid",
38
+ "3.6.7-rc.007" => "leading zero invalid",
39
39
  }
40
40
 
41
- it_has_behavior 'serializable', [
42
- '1.0.0',
43
- '1.0.0-alpha.1',
44
- '1.0.0-alpha.1+20130308110833',
45
- '1.0.0+20130308110833.git.2.94a1dde',
41
+ it_has_behavior "serializable", [
42
+ "1.0.0",
43
+ "1.0.0-alpha.1",
44
+ "1.0.0-alpha.1+20130308110833",
45
+ "1.0.0+20130308110833.git.2.94a1dde",
46
46
  ]
47
47
 
48
- it_has_behavior 'sortable' do
48
+ it_has_behavior "sortable" do
49
49
  let(:unsorted_version_strings) do
50
- %w(
50
+ %w{
51
51
  1.0.0-beta.2
52
52
  1.0.0-alpha
53
53
  1.0.0-rc.1+20130309074433
@@ -59,10 +59,10 @@ describe Mixlib::Versioning::Format::OpscodeSemVer do
59
59
  1.3.7+20131009104433.git.2.94a1dde
60
60
  1.3.7+20131009104433
61
61
  1.3.7+20131009074433
62
- )
62
+ }
63
63
  end
64
64
  let(:sorted_version_strings) do
65
- %w(
65
+ %w{
66
66
  1.0.0-alpha
67
67
  1.0.0-alpha.1
68
68
  1.0.0-beta.2
@@ -74,15 +74,15 @@ describe Mixlib::Versioning::Format::OpscodeSemVer do
74
74
  1.3.7+20131009074433
75
75
  1.3.7+20131009104433
76
76
  1.3.7+20131009104433.git.2.94a1dde
77
- )
77
+ }
78
78
  end
79
- let(:min) { '1.0.0-alpha' }
80
- let(:max) { '1.3.7+20131009104433.git.2.94a1dde' }
79
+ let(:min) { "1.0.0-alpha" }
80
+ let(:max) { "1.3.7+20131009104433.git.2.94a1dde" }
81
81
  end # it_has_behavior
82
82
 
83
- it_has_behavior 'filterable' do
83
+ it_has_behavior "filterable" do
84
84
  let(:unsorted_version_strings) do
85
- %w(
85
+ %w{
86
86
  1.0.0-beta.2
87
87
  1.0.0-alpha
88
88
  1.0.0-rc.1+20130309074433
@@ -94,45 +94,45 @@ describe Mixlib::Versioning::Format::OpscodeSemVer do
94
94
  1.3.7+20131009104433.git.2.94a1dde
95
95
  1.3.7+20131009104433
96
96
  1.3.7+20131009074433
97
- )
97
+ }
98
98
  end
99
- let(:release_versions) { %w(1.0.0) }
99
+ let(:release_versions) { %w{1.0.0} }
100
100
  let(:prerelease_versions) do
101
- %w(
101
+ %w{
102
102
  1.0.0-beta.2
103
103
  1.0.0-alpha
104
104
  1.0.0-beta.11
105
105
  1.0.0-rc.1
106
106
  1.0.0-alpha.1
107
- )
107
+ }
108
108
  end
109
109
  let(:build_versions) do
110
- %w(
110
+ %w{
111
111
  1.0.0-rc.1+20130309074433
112
112
  1.0.0+20121009074433
113
113
  1.3.7+20131009104433.git.2.94a1dde
114
114
  1.3.7+20131009104433
115
115
  1.3.7+20131009074433
116
- )
116
+ }
117
117
  end
118
118
  let(:release_build_versions) do
119
- %w(
119
+ %w{
120
120
  1.0.0+20121009074433
121
121
  1.3.7+20131009104433.git.2.94a1dde
122
122
  1.3.7+20131009104433
123
123
  1.3.7+20131009074433
124
- )
124
+ }
125
125
  end
126
126
  let(:prerelease_build_versions) do
127
- %w(
128
- 1.0.0-rc.1+20130309074433 )
127
+ %w{
128
+ 1.0.0-rc.1+20130309074433 }
129
129
  end
130
130
  end # it_has_behavior
131
131
 
132
- it_has_behavior 'comparable', [
133
- '0.1.0', '0.2.0',
134
- '1.0.0-alpha.1', '1.0.0',
135
- '1.2.3', '1.2.3+20121009074433',
136
- '2.0.0-beta.1', '2.0.0+20131009104433.git.2.94a1dde'
132
+ it_has_behavior "comparable", [
133
+ "0.1.0", "0.2.0",
134
+ "1.0.0-alpha.1", "1.0.0",
135
+ "1.2.3", "1.2.3+20121009074433",
136
+ "2.0.0-beta.1", "2.0.0+20131009104433.git.2.94a1dde"
137
137
  ]
138
138
  end # describe