[DRE-commits] [librarian-puppet] 21/97: 1.x versions should translate to ~>1.0 gem requirement

Stig Sandbeck Mathisen ssm at debian.org
Tue Mar 11 12:12:48 UTC 2014


This is an automated email from the git hooks/post-receive script.

ssm pushed a commit to branch master
in repository librarian-puppet.

commit 62efe9cd6f908dfd5a82c402f92bcf71823b6d5f
Author: Carlos Sanchez <csanchez at maestrodev.com>
Date:   Fri Apr 19 00:39:42 2013 +0200

    1.x versions should translate to ~>1.0 gem requirement
    
    Add specs
---
 Rakefile                            |  5 +-
 features/update.feature             |  3 +-
 lib/librarian/puppet/requirement.rb |  6 ++-
 spec/manifest_version_spec.rb       | 94 +++++++++++++++++++++++++++++++++++++
 spec/requirement_spec.rb            | 18 +++++++
 spec/spec_helper.rb                 |  4 ++
 6 files changed, 125 insertions(+), 5 deletions(-)

diff --git a/Rakefile b/Rakefile
index eccd8e1..1c7fc12 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,13 +1,14 @@
 require 'bundler/setup'
 require 'cucumber/rake/task'
+require 'rspec/core/rake_task'
 require 'bundler/gem_tasks'
 require 'rake/testtask'
 require 'rake/clean'
-require 'bundler/gem_tasks'
 
 CLEAN.include('pkg/', 'tmp/')
 CLOBBER.include('Gemfile.lock')
 
+RSpec::Core::RakeTask.new
 Cucumber::Rake::Task.new(:features)
 
 Rake::TestTask.new do |test|
@@ -15,4 +16,4 @@ Rake::TestTask.new do |test|
   test.verbose = true
 end
 
-task :default => [:test, :features]
+task :default => [:test, :spec, :features]
diff --git a/features/update.feature b/features/update.feature
index 9133073..f2d6764 100644
--- a/features/update.feature
+++ b/features/update.feature
@@ -1,9 +1,8 @@
 Feature: cli/update
   Puppet librarian needs to update modules properly
 
-  @pending
   Scenario: Updating a module
-    Given PENDING a file named "Puppetfile" with:
+    Given a file named "Puppetfile" with:
     """
     forge "http://forge.puppetlabs.com"
 
diff --git a/lib/librarian/puppet/requirement.rb b/lib/librarian/puppet/requirement.rb
index 9fcce9f..8495e66 100644
--- a/lib/librarian/puppet/requirement.rb
+++ b/lib/librarian/puppet/requirement.rb
@@ -11,12 +11,16 @@ module Librarian
         if range_requirement?
           [@range_match[1], @range_match[2]]
         elsif pessimistic_requirement?
-          "~> #{@pessimistic_match[1]}"
+          "~> #{@pessimistic_match[1]}.0"
         else
           requirement
         end
       end
 
+      def to_s
+        gem_requirement.to_s
+      end
+
       private
 
       def range_requirement?
diff --git a/spec/manifest_version_spec.rb b/spec/manifest_version_spec.rb
new file mode 100644
index 0000000..f3830c9
--- /dev/null
+++ b/spec/manifest_version_spec.rb
@@ -0,0 +1,94 @@
+require "librarian/manifest"
+
+describe Librarian::Manifest::Version do
+
+  describe "version comparison" do
+
+    context "when version has only two components" do
+      it "creates a new version with only 2 version components" do
+        v1 = described_class.new("1.0")
+      end
+    end
+
+    context "when neither version has pre-release items" do
+      it "compares 1.0.0 < 2.0.0" do
+        v1 = described_class.new("1.0.0")
+        v2 = described_class.new("2.0.0")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 2.0.0 < 2.1.0" do
+        v1 = described_class.new("2.0.0")
+        v2 = described_class.new("2.1.0")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 2.1.0 < 2.1.1" do
+        v1 = described_class.new("2.1.0")
+        v2 = described_class.new("2.1.1")
+        expect(v1 <=> v2).to eq(-1)
+      end
+    end
+
+    context "when versions have pre-release information" do
+      it "compares 1.0.0-alpha < 1.0.0-alpha1" do
+        v1 = described_class.new("1.0.0-alpha")
+        v2 = described_class.new("1.0.0-alpha.1")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-alpha.1 < 1.0.0-alpha.beta" do
+        v1 = described_class.new("1.0.0-alpha.1")
+        v2 = described_class.new("1.0.0-alpha.beta")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-alpha.beta < 1.0.0-beta" do
+        v1 = described_class.new("1.0.0-alpha.beta")
+        v2 = described_class.new("1.0.0-beta")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-beta < 1.0.0-beta.2" do
+        v1 = described_class.new("1.0.0-beta")
+        v2 = described_class.new("1.0.0-beta.2")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-beta.2 < 1.0.0-beta.11" do
+        v1 = described_class.new("1.0.0-beta.2")
+        v2 = described_class.new("1.0.0-beta.11")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-beta.11 < 1.0.0-rc.1" do
+        v1 = described_class.new("1.0.0-beta.11")
+        v2 = described_class.new("1.0.0-rc.1")
+        expect(v1 <=> v2).to eq(-1)
+      end
+      it "compares 1.0.0-rc.1 < 1.0.0" do
+        v1 = described_class.new("1.0.0-rc.1")
+        v2 = described_class.new("1.0.0")
+        expect(v1 <=> v2).to eq(-1)
+      end
+    end
+
+    context "when an invalid version number is provided" do
+      it "raises" do
+        expect { described_class.new("invalidversion") }.
+            to raise_error(ArgumentError)
+      end
+    end
+
+    context "when a version is converted to string" do
+      it "should be the full semver" do
+        version = "1.0.0-beta.11+200.1.2"
+        v1 = described_class.new(version)
+        expect(v1.to_s).to eq(version)
+      end
+      it "should be the full gem version" do
+        version = "1.0.0.a"
+        v1 = described_class.new(version)
+        expect(v1.to_s).to eq(version)
+      end
+      it "should be the two-component version" do
+        version = "1.0"
+        v1 = described_class.new(version)
+        expect(v1.to_s).to eq(version)
+      end
+    end
+  end
+end
\ No newline at end of file
diff --git a/spec/requirement_spec.rb b/spec/requirement_spec.rb
new file mode 100644
index 0000000..5a5f166
--- /dev/null
+++ b/spec/requirement_spec.rb
@@ -0,0 +1,18 @@
+require 'spec_helper'
+
+describe Librarian::Puppet::Requirement do
+
+  it 'should handle .x versions' do
+    described_class.new('1.x').gem_requirement.should eq('~> 1.0')
+    described_class.new('1.0.x').gem_requirement.should eq('~> 1.0.0')
+  end
+
+  it 'should handle version ranges' do
+    described_class.new('>=1.1.0 <2.0.0').gem_requirement.should eq(['>=1.1.0', '<2.0.0'])
+  end
+
+  it 'should print to_s' do
+    described_class.new('1.x').to_s.should eq('~> 1.0')
+    described_class.new('>=1.1.0 <2.0.0').to_s.should eq("[\">=1.1.0\", \"<2.0.0\"]")
+  end
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
new file mode 100644
index 0000000..5989cc7
--- /dev/null
+++ b/spec/spec_helper.rb
@@ -0,0 +1,4 @@
+require 'rubygems'
+require 'rspec'
+
+require 'librarian/puppet'

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/librarian-puppet.git



More information about the Pkg-ruby-extras-commits mailing list