# frozen_string_literal: true require_relative "helper" require "rubygems/command" require "rubygems/version_option" class TestGemVersionOption < Gem::TestCase def setup super @cmd = Gem::Command.new "dummy", "dummy" @cmd.extend Gem::VersionOption end def test_add_platform_option @cmd.add_platform_option assert @cmd.handles?(%w[--platform x86-darwin]) end def test_add_version_option @cmd.add_version_option assert @cmd.handles?(%w[--version >1]) end def test_enables_prerelease @cmd.add_version_option @cmd.handle_options %w[mygem -v 0.2.0.a] assert @cmd.options[:prerelease] @cmd.handle_options %w[mygem -v 0.2.0] refute @cmd.options[:prerelease] @cmd.handle_options %w[mygem] refute @cmd.options[:prerelease] end def test_platform_option @cmd.add_platform_option @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd7] expected = [ Gem::Platform::RUBY, Gem::Platform.new("x86-freebsd6"), Gem::Platform.new("x86-freebsd7"), ] assert_equal expected, Gem.platforms end def test_platform_option_ruby @cmd.add_platform_option @cmd.handle_options %w[--platform ruby] expected = [ Gem::Platform::RUBY, ] assert_equal expected, Gem.platforms end def test_platform_option_twice @cmd.add_platform_option @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd-6] expected = [ Gem::Platform::RUBY, Gem::Platform.new("x86-freebsd6"), ] assert_equal expected, Gem.platforms end def test_version_option @cmd.add_version_option @cmd.handle_options %w[--version >1] expected = { args: [], explicit_prerelease: false, prerelease: false, version: Gem::Requirement.new("> 1"), } assert_equal expected, @cmd.options end def test_version_option_compound @cmd.add_version_option @cmd.handle_options ["--version", "< 1, > 0.9"] expected = { args: [], explicit_prerelease: false, prerelease: false, version: Gem::Requirement.new("< 1", "> 0.9"), } assert_equal expected, @cmd.options end def test_multiple_version_operator_option_compound @cmd.add_version_option @cmd.handle_options ["--version", "< 1", "--version", "> 0.9"] expected = { args: [], explicit_prerelease: false, prerelease: false, version: Gem::Requirement.new("< 1", "> 0.9"), } assert_equal expected, @cmd.options end def test_version_option_explicit_prerelease @cmd.add_prerelease_option @cmd.add_version_option @cmd.handle_options %w[--pre --version >1] expected = { args: [], explicit_prerelease: true, prerelease: true, version: Gem::Requirement.new("> 1"), } assert_equal expected, @cmd.options end def test_version_option_twice @cmd.add_version_option @cmd.handle_options %w[--version >1.a] expected = { args: [], explicit_prerelease: false, prerelease: true, version: Gem::Requirement.new("> 1.a"), } assert_equal expected, @cmd.options @cmd.handle_options %w[--version >1] expected = { args: [], explicit_prerelease: false, prerelease: false, version: Gem::Requirement.new("> 1"), } assert_equal expected, @cmd.options end end