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
@@ -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: