Sha256: e797cd2043b6c58149013e5d25d889ab1c9945b618fc2d04e825c99806dbd850

Contents?: true

Size: 1.35 KB

Versions: 70

Compression:

Stored size: 1.35 KB

Contents

module RSpec
  module Support
    LibraryVersionTooLowError = Class.new(StandardError)

    # @private
    class VersionChecker
      def initialize(library_name, library_version, min_patch_level)
        @library_name, @library_version = library_name, library_version
        @min_patch_level = min_patch_level

        @major,     @minor,     @patch     = parse_version(library_version)
        @min_major, @min_minor, @min_patch = parse_version(min_patch_level)

        @comparison_result = compare_version
      end

      def check_version!
        raise_too_low_error if too_low?
      end

    private

      def too_low?
        @comparison_result == :too_low
      end

      def raise_too_low_error
        raise LibraryVersionTooLowError,
              "You are using #{@library_name} #{@library_version}. " \
              "RSpec requires version #{version_requirement}."
      end

      def compare_version
        case
        when @major < @min_major then :too_low
        when @major > @min_major then :ok
        when @minor < @min_minor then :too_low
        when @minor > @min_minor then :ok
        when @patch < @min_patch then :too_low
        else :ok
        end
      end

      def version_requirement
        ">= #{@min_patch_level}"
      end

      def parse_version(version)
        version.split('.').map { |v| v.to_i }
      end
    end
  end
end

Version data entries

70 entries across 65 versions & 22 rubygems

Version Path
opal-rspec-0.8.0 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.8.0.alpha3 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.8.0.alpha2 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.8.0.alpha1 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.7.1 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.7.0 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.6.2 rspec-support/lib/rspec/support/version_checker.rb
opal-rspec-0.7.0.rc.2 rspec-support/upstream/lib/rspec/support/version_checker.rb
opal-rspec-0.6.1 rspec-support/lib/rspec/support/version_checker.rb
cvss-suite-1.0.8 vendor/cache/ruby/2.2.0/gems/rspec-support-3.4.0/lib/rspec/support/version_checker.rb
opal-rspec-0.6.0 rspec-support/lib/rspec/support/version_checker.rb
opal-rspec-0.6.0.beta1 rspec-support/lib/rspec/support/version_checker.rb
opal-connect-rspec-0.5.0 rspec-support/lib/rspec/support/version_checker.rb
tdiary-5.0.1 vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb
cvss-suite-1.0.7 vendor/cache/ruby/2.2.0/gems/rspec-support-3.4.0/lib/rspec/support/version_checker.rb
able-neo4j-1.0.0 vendor/bundle/jruby/1.9/gems/rspec-support-3.1.2/lib/rspec/support/version_checker.rb
guesswhat-1.1.0 vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb
guesswhat-1.0.1 vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb
guesswhat-1.0.0 vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb
guesswhat-0.1.0 vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb