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