mixlib-versioning 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,56 @@
1
+ #
2
+ # Author:: Krzysztof Wilczynski (<kwilczynski@chef.io>)
3
+ # Author:: Ryan Hass (<rhass@chef.io>)
4
+ # Copyright:: Copyright (c) 2014, 2017 Chef Software Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ shared_examples "comparable_types" do |version_matrix|
21
+ describe "#<" do
22
+ version_matrix.each_slice(2) do |a, b|
23
+ it "confirms that #{a} is less-than #{b}" do
24
+ expect(described_class.new(a) < b[:class].new(b[:value])).to be true
25
+ expect(b[:class].new(b[:value]) < described_class.new(a)).to be false
26
+ end
27
+ end
28
+ end
29
+
30
+ describe "#<=" do
31
+ version_matrix.each_slice(2) do |a, b|
32
+ it "confirms that #{a} less-than or equal to #{b}" do
33
+ expect(described_class.new(a) <= b[:class].new(b[:value])).to be true
34
+ expect(b[:class].new("#{b[:value]}") <= described_class.new(a)).to be false
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "#>" do
40
+ version_matrix.each_slice(2) do |a, b|
41
+ it "confirms that #{a} is greater-than #{b}" do
42
+ expect(b[:class].new(b[:value]) > described_class.new(a)).to be true
43
+ expect(described_class.new(a) > b[:class].new(b[:value])).to be false
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "#>=" do
49
+ version_matrix.each_slice(2) do |a, b|
50
+ it "confirms that #{a} greater-than or equal to #{b}" do
51
+ expect(b[:class].new(b[:value]) >= described_class.new(a)).to be true
52
+ expect(described_class.new(a) >= b[:class].new(b[:value])).to be false
53
+ end
54
+ end
55
+ end
56
+ end
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- shared_examples 'filterable' do
19
+ shared_examples "filterable" do
20
20
  let(:unsorted_versions) do
21
21
  unsorted_version_strings.map { |v| described_class.new(v) }
22
22
  end
@@ -28,27 +28,27 @@ shared_examples 'filterable' do
28
28
  let(:release_build_versions) { [] }
29
29
  let(:prerelease_build_versions) { [] }
30
30
 
31
- it 'filters by release versions only' do
32
- unsorted_versions.select(&:release?).should eq(release_versions.map { |v| described_class.new(v) })
31
+ it "filters by release versions only" do
32
+ expect(unsorted_versions.select(&:release?)).to eq(release_versions.map { |v| described_class.new(v) })
33
33
  end # it
34
34
 
35
- it 'filters by pre-release versions only' do
35
+ it "filters by pre-release versions only" do
36
36
  filtered = unsorted_versions.select(&:prerelease?)
37
- filtered.should eq(prerelease_versions.map { |v| described_class.new(v) })
37
+ expect(filtered).to eq(prerelease_versions.map { |v| described_class.new(v) })
38
38
  end # it
39
39
 
40
- it 'filters by build versions only' do
40
+ it "filters by build versions only" do
41
41
  filtered = unsorted_versions.select(&:build?)
42
- filtered.should eq(build_versions.map { |v| described_class.new(v) })
42
+ expect(filtered).to eq(build_versions.map { |v| described_class.new(v) })
43
43
  end # it
44
44
 
45
- it 'filters by release build versions only' do
45
+ it "filters by release build versions only" do
46
46
  filtered = unsorted_versions.select(&:release_build?)
47
- filtered.should eq(release_build_versions.map { |v| described_class.new(v) })
47
+ expect(filtered).to eq(release_build_versions.map { |v| described_class.new(v) })
48
48
  end # it
49
49
 
50
- it 'filters by pre-release build versions only' do
50
+ it "filters by pre-release build versions only" do
51
51
  filtered = unsorted_versions.select(&:prerelease_build?)
52
- filtered.should eq(prerelease_build_versions.map { |v| described_class.new(v) })
52
+ expect(filtered).to eq(prerelease_build_versions.map { |v| described_class.new(v) })
53
53
  end # it
54
54
  end # shared_examples
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- shared_examples 'parses valid version strings' do |valid_examples|
19
+ shared_examples "parses valid version strings" do |valid_examples|
20
20
  valid_examples.each do |version, options|
21
21
  context version do
22
22
  let(:version_string) { version }
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- shared_examples 'rejects invalid version strings' do |invalid_examples|
19
+ shared_examples "rejects invalid version strings" do |invalid_examples|
20
20
  invalid_examples.each_pair do |version, reason|
21
21
  context version do
22
22
  let(:version_string) { version }
@@ -16,33 +16,33 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- shared_examples 'serializable' do |version_strings|
20
- describe '#to_s' do
19
+ shared_examples "serializable" do |version_strings|
20
+ describe "#to_s" do
21
21
  version_strings.each do |v|
22
22
  it "reconstructs the initial input for #{v}" do
23
- described_class.new(v).to_s.should == v
23
+ expect(described_class.new(v).to_s).to eq(v)
24
24
  end # it
25
25
  end # version_strings
26
26
  end # describe
27
27
 
28
- describe '#to_semver_string' do
28
+ describe "#to_semver_string" do
29
29
  version_strings.each do |v|
30
30
  it "generates a semver version string for #{v}" do
31
31
  subject = described_class.new(v)
32
32
  string = subject.to_semver_string
33
33
  semver = Mixlib::Versioning::Format::SemVer.new(string)
34
- string.should eq semver.to_s
34
+ expect(string).to eq semver.to_s
35
35
  end # it
36
36
  end # version_strings
37
37
  end # describe
38
38
 
39
- describe '#to_rubygems_string' do
39
+ describe "#to_rubygems_string" do
40
40
  version_strings.each do |v|
41
41
  it "generates a rubygems version string for #{v}" do
42
42
  subject = described_class.new(v)
43
43
  string = subject.to_rubygems_string
44
44
  rubygems = Mixlib::Versioning::Format::Rubygems.new(string)
45
- string.should eq rubygems.to_s
45
+ expect(string).to eq rubygems.to_s
46
46
  end # it
47
47
  end # version_strings
48
48
  end # describe
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- shared_examples 'sortable' do
19
+ shared_examples "sortable" do
20
20
  let(:unsorted_versions) do
21
21
  unsorted_version_strings.map { |v| described_class.new(v) }
22
22
  end
@@ -25,19 +25,19 @@ shared_examples 'sortable' do
25
25
  sorted_version_strings.map { |v| described_class.new(v) }
26
26
  end
27
27
 
28
- it 'responds to <=>' do
29
- described_class.should respond_to(:<=>)
28
+ it "responds to <=>" do
29
+ expect(described_class).to respond_to(:<=>)
30
30
  end
31
31
 
32
- it 'sorts all properly' do
33
- unsorted_versions.sort.should eq sorted_versions
32
+ it "sorts all properly" do
33
+ expect(unsorted_versions.sort).to eq sorted_versions
34
34
  end
35
35
 
36
- it 'finds the min' do
37
- unsorted_versions.min.should eq described_class.new(min)
36
+ it "finds the min" do
37
+ expect(unsorted_versions.min).to eq described_class.new(min)
38
38
  end
39
39
 
40
- it 'finds the max' do
41
- unsorted_versions.max.should eq described_class.new(max)
40
+ it "finds the max" do
41
+ expect(unsorted_versions.max).to eq described_class.new(max)
42
42
  end
43
43
  end # shared_examples
@@ -16,17 +16,17 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'mixlib/versioning'
19
+ require "mixlib/versioning"
20
20
 
21
21
  shared_examples Mixlib::Versioning::Format::SemVer do
22
- it_should_behave_like 'Basic SemVer'
22
+ it_should_behave_like "Basic SemVer"
23
23
 
24
- it_has_behavior 'parses valid version strings', {
25
- '1.0.0-alpha.1' => {
24
+ it_has_behavior "parses valid version strings", {
25
+ "1.0.0-alpha.1" => {
26
26
  major: 1,
27
27
  minor: 0,
28
28
  patch: 0,
29
- prerelease: 'alpha.1',
29
+ prerelease: "alpha.1",
30
30
  build: nil,
31
31
  release?: false,
32
32
  prerelease?: true,
@@ -34,24 +34,24 @@ shared_examples Mixlib::Versioning::Format::SemVer do
34
34
  release_build?: false,
35
35
  prerelease_build?: false,
36
36
  },
37
- '1.0.0+20130308110833' => {
37
+ "1.0.0+20130308110833" => {
38
38
  major: 1,
39
39
  minor: 0,
40
40
  patch: 0,
41
41
  prerelease: nil,
42
- build: '20130308110833',
42
+ build: "20130308110833",
43
43
  release?: false,
44
44
  prerelease?: false,
45
45
  build?: true,
46
46
  release_build?: true,
47
47
  prerelease_build?: false,
48
48
  },
49
- '1.0.0-beta.3+20130308110833' => {
49
+ "1.0.0-beta.3+20130308110833" => {
50
50
  major: 1,
51
51
  minor: 0,
52
52
  patch: 0,
53
- prerelease: 'beta.3',
54
- build: '20130308110833',
53
+ prerelease: "beta.3",
54
+ build: "20130308110833",
55
55
  release?: false,
56
56
  prerelease?: false,
57
57
  build?: true,
@@ -60,58 +60,58 @@ shared_examples Mixlib::Versioning::Format::SemVer do
60
60
  },
61
61
  }
62
62
 
63
- it_has_behavior 'rejects invalid version strings', {
64
- '8.8.8.8' => 'too many segments: MAJOR.MINOR.PATCH.EXTRA',
65
- '01.1.1' => 'leading zero invalid',
66
- '1.01.1' => 'leading zero invalid',
67
- '1.1.01' => 'leading zero invalid',
68
- '1.0.0-' => 'empty prerelease identifier',
69
- '1.0.0-alpha..' => 'empty prerelease identifier',
70
- '1.0.0-01.02.03' => 'leading zero invalid',
71
- '1.0.0-alpha.01' => 'leading zero invalid',
72
- '6.3.1+' => 'empty build identifier',
73
- '6.4.8-alpha.1.2.3+build.' => 'empty build identifier',
74
- '4.0.000000000002-alpha.1' => 'leading zero invalid',
75
- '007.2.3-rc.1+build.16' => 'leading zero invalid',
76
- '12.0005.1-alpha.12' => 'leading zero invalid',
77
- '12.2.10-beta.00000017' => 'leading zero invalid',
63
+ it_has_behavior "rejects invalid version strings", {
64
+ "8.8.8.8" => "too many segments: MAJOR.MINOR.PATCH.EXTRA",
65
+ "01.1.1" => "leading zero invalid",
66
+ "1.01.1" => "leading zero invalid",
67
+ "1.1.01" => "leading zero invalid",
68
+ "1.0.0-" => "empty prerelease identifier",
69
+ "1.0.0-alpha.." => "empty prerelease identifier",
70
+ "1.0.0-01.02.03" => "leading zero invalid",
71
+ "1.0.0-alpha.01" => "leading zero invalid",
72
+ "6.3.1+" => "empty build identifier",
73
+ "6.4.8-alpha.1.2.3+build." => "empty build identifier",
74
+ "4.0.000000000002-alpha.1" => "leading zero invalid",
75
+ "007.2.3-rc.1+build.16" => "leading zero invalid",
76
+ "12.0005.1-alpha.12" => "leading zero invalid",
77
+ "12.2.10-beta.00000017" => "leading zero invalid",
78
78
  }
79
79
 
80
- describe 'build qualification' do
81
- context 'release version' do
82
- let(:version_string) { '1.0.0' }
83
- its(:release?) { should be_true }
84
- its(:prerelease?) { should be_false }
85
- its(:build?) { should be_false }
86
- its(:release_build?) { should be_false }
87
- its(:prerelease_build?) { should be_false }
80
+ describe "build qualification" do
81
+ context "release version" do
82
+ let(:version_string) { "1.0.0" }
83
+ its(:release?) { should be_truthy }
84
+ its(:prerelease?) { should be_falsey }
85
+ its(:build?) { should be_falsey }
86
+ its(:release_build?) { should be_falsey }
87
+ its(:prerelease_build?) { should be_falsey }
88
88
  end
89
89
 
90
- context 'pre-release version' do
91
- let(:version_string) { '1.0.0-alpha.1' }
92
- its(:release?) { should be_false }
93
- its(:prerelease?) { should be_true }
94
- its(:build?) { should be_false }
95
- its(:release_build?) { should be_false }
96
- its(:prerelease_build?) { should be_false }
90
+ context "pre-release version" do
91
+ let(:version_string) { "1.0.0-alpha.1" }
92
+ its(:release?) { should be_falsey }
93
+ its(:prerelease?) { should be_truthy }
94
+ its(:build?) { should be_falsey }
95
+ its(:release_build?) { should be_falsey }
96
+ its(:prerelease_build?) { should be_falsey }
97
97
  end
98
98
 
99
- context 'pre-release build version' do
100
- let(:version_string) { '1.0.0-alpha.1+20130308110833' }
101
- its(:release?) { should be_false }
102
- its(:prerelease?) { should be_false }
103
- its(:build?) { should be_true }
104
- its(:release_build?) { should be_false }
105
- its(:prerelease_build?) { should be_true }
99
+ context "pre-release build version" do
100
+ let(:version_string) { "1.0.0-alpha.1+20130308110833" }
101
+ its(:release?) { should be_falsey }
102
+ its(:prerelease?) { should be_falsey }
103
+ its(:build?) { should be_truthy }
104
+ its(:release_build?) { should be_falsey }
105
+ its(:prerelease_build?) { should be_truthy }
106
106
  end
107
107
 
108
- context 'release build version' do
109
- let(:version_string) { '1.0.0+20130308110833' }
110
- its(:release?) { should be_false }
111
- its(:prerelease?) { should be_false }
112
- its(:build?) { should be_true }
113
- its(:release_build?) { should be_true }
114
- its(:prerelease_build?) { should be_false }
108
+ context "release build version" do
109
+ let(:version_string) { "1.0.0+20130308110833" }
110
+ its(:release?) { should be_falsey }
111
+ its(:prerelease?) { should be_falsey }
112
+ its(:build?) { should be_truthy }
113
+ its(:release_build?) { should be_truthy }
114
+ its(:prerelease_build?) { should be_falsey }
115
115
  end
116
116
  end
117
117
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Chisamore
@@ -9,38 +9,38 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-04 00:00:00.000000000 Z
12
+ date: 2017-07-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rubocop
15
+ name: chefstyle
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 0.31.0
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 0.31.0
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.14'
34
+ version: '3.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.14'
41
+ version: '3.0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: bundler
43
+ name: rspec-its
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -57,16 +57,16 @@ dependencies:
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: '12'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '12'
70
70
  description: General purpose Ruby library that allows you to parse, compare and manipulate
71
71
  version strings in multiple formats.
72
72
  email:
@@ -76,25 +76,30 @@ executables: []
76
76
  extensions: []
77
77
  extra_rdoc_files: []
78
78
  files:
79
+ - ".expeditor/config.yml"
80
+ - ".expeditor/update_version.sh"
81
+ - ".github/CODEOWNERS"
79
82
  - ".gitignore"
80
- - ".rubocop.yml"
81
83
  - ".travis.yml"
82
84
  - CHANGELOG.md
83
85
  - Gemfile
84
86
  - LICENSE
85
87
  - README.md
86
88
  - Rakefile
89
+ - VERSION
87
90
  - lib/mixlib/versioning.rb
88
91
  - lib/mixlib/versioning/exceptions.rb
89
92
  - lib/mixlib/versioning/format.rb
90
93
  - lib/mixlib/versioning/format/git_describe.rb
91
94
  - lib/mixlib/versioning/format/opscode_semver.rb
95
+ - lib/mixlib/versioning/format/partial_semver.rb
92
96
  - lib/mixlib/versioning/format/rubygems.rb
93
97
  - lib/mixlib/versioning/format/semver.rb
94
98
  - lib/mixlib/versioning/version.rb
95
99
  - mixlib-versioning.gemspec
96
100
  - spec/mixlib/versioning/format/git_describe_spec.rb
97
101
  - spec/mixlib/versioning/format/opscode_semver_spec.rb
102
+ - spec/mixlib/versioning/format/partial_semver_spec.rb
98
103
  - spec/mixlib/versioning/format/rubygems_spec.rb
99
104
  - spec/mixlib/versioning/format/semver_spec.rb
100
105
  - spec/mixlib/versioning/format_spec.rb
@@ -102,6 +107,7 @@ files:
102
107
  - spec/spec_helper.rb
103
108
  - spec/support/shared_examples/basic_semver.rb
104
109
  - spec/support/shared_examples/behaviors/comparable.rb
110
+ - spec/support/shared_examples/behaviors/comparable_types.rb
105
111
  - spec/support/shared_examples/behaviors/filterable.rb
106
112
  - spec/support/shared_examples/behaviors/parses_valid_version_strings.rb
107
113
  - spec/support/shared_examples/behaviors/rejects_invalid_version_strings.rb
@@ -120,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - ">="
122
128
  - !ruby/object:Gem::Version
123
- version: '1.9'
129
+ version: '2.2'
124
130
  required_rubygems_version: !ruby/object:Gem::Requirement
125
131
  requirements:
126
132
  - - ">="
@@ -128,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
134
  version: '0'
129
135
  requirements: []
130
136
  rubyforge_project:
131
- rubygems_version: 2.2.2
137
+ rubygems_version: 2.6.11
132
138
  signing_key:
133
139
  specification_version: 4
134
140
  summary: General purpose Ruby library that allows you to parse, compare and manipulate
@@ -136,6 +142,7 @@ summary: General purpose Ruby library that allows you to parse, compare and mani
136
142
  test_files:
137
143
  - spec/mixlib/versioning/format/git_describe_spec.rb
138
144
  - spec/mixlib/versioning/format/opscode_semver_spec.rb
145
+ - spec/mixlib/versioning/format/partial_semver_spec.rb
139
146
  - spec/mixlib/versioning/format/rubygems_spec.rb
140
147
  - spec/mixlib/versioning/format/semver_spec.rb
141
148
  - spec/mixlib/versioning/format_spec.rb
@@ -143,10 +150,10 @@ test_files:
143
150
  - spec/spec_helper.rb
144
151
  - spec/support/shared_examples/basic_semver.rb
145
152
  - spec/support/shared_examples/behaviors/comparable.rb
153
+ - spec/support/shared_examples/behaviors/comparable_types.rb
146
154
  - spec/support/shared_examples/behaviors/filterable.rb
147
155
  - spec/support/shared_examples/behaviors/parses_valid_version_strings.rb
148
156
  - spec/support/shared_examples/behaviors/rejects_invalid_version_strings.rb
149
157
  - spec/support/shared_examples/behaviors/serializable.rb
150
158
  - spec/support/shared_examples/behaviors/sortable.rb
151
159
  - spec/support/shared_examples/semver.rb
152
- has_rdoc: