# class Gem::TestCase::SpecFetcherSetup

The `SpecFetcherSetup` allows easy setup of a remote source in RubyGems tests:

    spec_fetcher do |f|
      f.gem  'a', 1
      f.spec 'a', 2
      f.gem  'b', 1' 'a' => '~> 1.0'
    end

The above declaration creates two gems, a-1 and b-1, with a dependency from b to a. The declaration creates an additional spec a-2, but no gem for it (so it cannot be installed).

After the gems are created they are removed from `Gem.dir`.

### Public Class Methods

declare(test, repository) { |setup| ... } click to toggle source

Executes a SpecFetcher setup block. Yields an instance then creates the gems and specifications defined in the instance.

    # File lib/rubygems/test_utilities.rb, line 190
    def self.declare(test, repository)
      setup = new test, repository

      yield setup

      setup.execute
    end

### Public Instance Methods

created_specs() click to toggle source

Returns a `Hash` of created Specification full names and the corresponding Specification.

    # File lib/rubygems/test_utilities.rb, line 212
    def created_specs
      created = {}

      @gems.keys.each do |spec|
        created[spec.full_name] = spec
      end

      created
    end

download(name, version, dependencies = nil, &block) click to toggle source

Creates a gem with `name`, `version` and `deps`. The created gem is downloaded in to the cache directory but is not installed

The specification will be yielded before gem creation for customization, but only the block or the dependencies may be set, not both.

    # File lib/rubygems/test_utilities.rb, line 277
    def download(name, version, dependencies = nil, &block)
      @operations << [:download, name, version, dependencies, block]
    end

gem(name, version, dependencies = nil, &block) click to toggle source

Creates a gem with `name`, `version` and `deps`. The created gem can be downloaded and installed.

The specification will be yielded before gem creation for customization, but only the block or the dependencies may be set, not both.

    # File lib/rubygems/test_utilities.rb, line 266
    def gem(name, version, dependencies = nil, &block)
      @operations << [:gem, name, version, dependencies, block]
    end

legacy_platform() click to toggle source

Creates a legacy platform spec with the name 'pl' and version 1

    # File lib/rubygems/test_utilities.rb, line 284
    def legacy_platform
      spec 'pl', 1 do |s|
        s.platform = Gem::Platform.new 'i386-linux'
        s.instance_variable_set :@original_platform, 'i386-linux'
      end
    end

spec(name, version, dependencies = nil, &block) click to toggle source

Creates a spec with `name`, `version` and `deps`. The created gem can be downloaded and installed.

The specification will be yielded before creation for customization, but only the block or the dependencies may be set, not both.

    # File lib/rubygems/test_utilities.rb, line 330
    def spec(name, version, dependencies = nil, &block)
      @operations << [:spec, name, version, dependencies, block]
    end