spec/support/shared_examples/semver.rb in mixlib-versioning-1.0.0 vs spec/support/shared_examples/semver.rb in mixlib-versioning-1.1.0
- old
+ new
@@ -1,7 +1,7 @@
#
-# Author:: Seth Chisamore (<schisamo@opscode.com>)
+# Author:: Seth Chisamore (<schisamo@chef.io>)
# Copyright:: Copyright (c) 2013 Opscode, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,89 +17,101 @@
#
require 'mixlib/versioning'
shared_examples Mixlib::Versioning::Format::SemVer do
+ it_should_behave_like 'Basic SemVer'
- it_should_behave_like "Basic SemVer"
-
- it_has_behavior "parses valid version strings", {
- "1.0.0-alpha.1" => {
- :major => 1,
- :minor => 0,
- :patch => 0,
- :prerelease => "alpha.1",
- :build => nil,
- :release? => false,
- :prerelease? => true,
- :build? => false,
- :release_build? => false,
- :prerelease_build? => false
+ it_has_behavior 'parses valid version strings', {
+ '1.0.0-alpha.1' => {
+ major: 1,
+ minor: 0,
+ patch: 0,
+ prerelease: 'alpha.1',
+ build: nil,
+ release?: false,
+ prerelease?: true,
+ build?: false,
+ release_build?: false,
+ prerelease_build?: false,
},
- "1.0.0+20130308110833" => {
- :major => 1,
- :minor => 0,
- :patch => 0,
- :prerelease => nil,
- :build => "20130308110833",
- :release? => false,
- :prerelease? => false,
- :build? => true,
- :release_build? => true,
- :prerelease_build? => false
+ '1.0.0+20130308110833' => {
+ major: 1,
+ minor: 0,
+ patch: 0,
+ prerelease: nil,
+ build: '20130308110833',
+ release?: false,
+ prerelease?: false,
+ build?: true,
+ release_build?: true,
+ prerelease_build?: false,
},
- "1.0.0-beta.3+20130308110833" => {
- :major => 1,
- :minor => 0,
- :patch => 0,
- :prerelease => "beta.3",
- :build => "20130308110833",
- :release? => false,
- :prerelease? => false,
- :build? => true,
- :release_build? => false,
- :prerelease_build? => true
- }
+ '1.0.0-beta.3+20130308110833' => {
+ major: 1,
+ minor: 0,
+ patch: 0,
+ prerelease: 'beta.3',
+ build: '20130308110833',
+ release?: false,
+ prerelease?: false,
+ build?: true,
+ release_build?: false,
+ prerelease_build?: true,
+ },
}
- it_has_behavior "rejects invalid version strings", {
- "8.8.8.8" => "too many segments: MAJOR.MINOR.PATCH.EXTRA"
+ it_has_behavior 'rejects invalid version strings', {
+ '8.8.8.8' => 'too many segments: MAJOR.MINOR.PATCH.EXTRA',
+ '01.1.1' => 'leading zero invalid',
+ '1.01.1' => 'leading zero invalid',
+ '1.1.01' => 'leading zero invalid',
+ '1.0.0-' => 'empty prerelease identifier',
+ '1.0.0-alpha..' => 'empty prerelease identifier',
+ '1.0.0-01.02.03' => 'leading zero invalid',
+ '1.0.0-alpha.01' => 'leading zero invalid',
+ '6.3.1+' => 'empty build identifier',
+ '6.4.8-alpha.1.2.3+build.' => 'empty build identifier',
+ '4.0.000000000002-alpha.1' => 'leading zero invalid',
+ '007.2.3-rc.1+build.16' => 'leading zero invalid',
+ '12.0005.1-alpha.12' => 'leading zero invalid',
+ '12.2.10-beta.00000017' => 'leading zero invalid',
}
- describe "build qualification" do
- context "release version" do
- let(:version_string){"1.0.0"}
- its(:release?){ should be_true }
- its(:prerelease?){ should be_false }
- its(:build?){ should be_false }
- its(:release_build?){ should be_false }
- its(:prerelease_build?){ should be_false }
+ describe 'build qualification' do
+ context 'release version' do
+ let(:version_string) { '1.0.0' }
+ its(:release?) { should be_true }
+ its(:prerelease?) { should be_false }
+ its(:build?) { should be_false }
+ its(:release_build?) { should be_false }
+ its(:prerelease_build?) { should be_false }
end
- context "pre-release version" do
- let(:version_string){"1.0.0-alpha.1"}
- its(:release?){ should be_false }
- its(:prerelease?){ should be_true }
- its(:build?){ should be_false }
- its(:release_build?){ should be_false }
- its(:prerelease_build?){ should be_false }
+ context 'pre-release version' do
+ let(:version_string) { '1.0.0-alpha.1' }
+ its(:release?) { should be_false }
+ its(:prerelease?) { should be_true }
+ its(:build?) { should be_false }
+ its(:release_build?) { should be_false }
+ its(:prerelease_build?) { should be_false }
end
- context "pre-release build version" do
- let(:version_string){"1.0.0-alpha.1+20130308110833"}
- its(:release?){ should be_false }
- its(:prerelease?){ should be_false }
- its(:build?){ should be_true }
- its(:release_build?){ should be_false }
- its(:prerelease_build?){ should be_true }
+ context 'pre-release build version' do
+ let(:version_string) { '1.0.0-alpha.1+20130308110833' }
+ its(:release?) { should be_false }
+ its(:prerelease?) { should be_false }
+ its(:build?) { should be_true }
+ its(:release_build?) { should be_false }
+ its(:prerelease_build?) { should be_true }
end
- context "release build version" do
- let(:version_string){"1.0.0+20130308110833"}
- its(:release?){ should be_false }
- its(:prerelease?){ should be_false }
- its(:build?){ should be_true }
- its(:release_build?){ should be_true }
- its(:prerelease_build?){ should be_false }
+ context 'release build version' do
+ let(:version_string) { '1.0.0+20130308110833' }
+ its(:release?) { should be_false }
+ its(:prerelease?) { should be_false }
+ its(:build?) { should be_true }
+ its(:release_build?) { should be_true }
+ its(:prerelease_build?) { should be_false }
end
end
end