File: C:/Ruby27-x64/share/doc/ruby/html/Gem/TestCase.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class Gem::TestCase - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link">(defined?(Minitest::Test) ? Minitest::Test : MiniTest::Unit::TestCase)
</div>
<div id="includes-section" class="nav-section">
<h3>Included Modules</h3>
<ul class="link-list">
<li><a class="include" href="DefaultUserInteraction.html">Gem::DefaultUserInteraction</a>
</ul>
</div>
<div id="extends-section" class="nav-section">
<h3>Extended With Modules</h3>
<ul class="link-list">
<li><a class="extend" href="Deprecate.html">Gem::Deprecate</a>
</ul>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-java_platform-3F">::java_platform?</a>
<li ><a href="#method-c-make_command">::make_command</a>
<li ><a href="#method-c-process_based_port">::process_based_port</a>
<li ><a href="#method-c-rubybin">::rubybin</a>
<li ><a href="#method-c-vc_windows-3F">::vc_windows?</a>
<li ><a href="#method-c-win_platform-3F">::win_platform?</a>
<li ><a href="#method-i-add_to_fetcher">#add_to_fetcher</a>
<li ><a href="#method-i-all_spec_names">#all_spec_names</a>
<li ><a href="#method-i-ask_if_ok">#ask_if_ok</a>
<li ><a href="#method-i-assert_activate">#assert_activate</a>
<li ><a href="#method-i-assert_contains_make_command">#assert_contains_make_command</a>
<li ><a href="#method-i-assert_directory_exists">#assert_directory_exists</a>
<li ><a href="#method-i-assert_path_exists">#assert_path_exists</a>
<li ><a href="#method-i-bindir">#bindir</a>
<li ><a href="#method-i-build_rake_in">#build_rake_in</a>
<li ><a href="#method-i-common_installer_setup">#common_installer_setup</a>
<li ><a href="#method-i-common_installer_teardown">#common_installer_teardown</a>
<li ><a href="#method-i-enable_shared">#enable_shared</a>
<li ><a href="#method-i-exeext">#exeext</a>
<li ><a href="#method-i-git_gem">#git_gem</a>
<li ><a href="#method-i-have_git-3F">#have_git?</a>
<li ><a href="#method-i-install_default_gems">#install_default_gems</a>
<li ><a href="#method-i-install_default_specs">#install_default_specs</a>
<li ><a href="#method-i-install_gem">#install_gem</a>
<li ><a href="#method-i-install_gem_user">#install_gem_user</a>
<li ><a href="#method-i-install_specs">#install_specs</a>
<li ><a href="#method-i-java_platform-3F">#java_platform?</a>
<li ><a href="#method-i-loaded_spec_names">#loaded_spec_names</a>
<li ><a href="#method-i-make_command">#make_command</a>
<li ><a href="#method-i-mu_pp">#mu_pp</a>
<li ><a href="#method-i-new_default_spec">#new_default_spec</a>
<li ><a href="#method-i-nmake_found-3F">#nmake_found?</a>
<li ><a href="#method-i-parse_make_command_line">#parse_make_command_line</a>
<li ><a href="#method-i-process_based_port">#process_based_port</a>
<li ><a href="#method-i-quick_gem">#quick_gem</a>
<li ><a href="#method-i-read_binary">#read_binary</a>
<li ><a href="#method-i-read_cache">#read_cache</a>
<li ><a href="#method-i-refute_path_exists">#refute_path_exists</a>
<li ><a href="#method-i-save_loaded_features">#save_loaded_features</a>
<li ><a href="#method-i-scan_make_command_lines">#scan_make_command_lines</a>
<li class="calls-super" ><a href="#method-i-setup">#setup</a>
<li ><a href="#method-i-teardown">#teardown</a>
<li ><a href="#method-i-uninstall_gem">#uninstall_gem</a>
<li ><a href="#method-i-unresolved_names">#unresolved_names</a>
<li ><a href="#method-i-util_build_gem">#util_build_gem</a>
<li ><a href="#method-i-util_clear_RUBY_VERSION">#util_clear_RUBY_VERSION</a>
<li ><a href="#method-i-util_clear_gems">#util_clear_gems</a>
<li ><a href="#method-i-util_gem">#util_gem</a>
<li ><a href="#method-i-util_gzip">#util_gzip</a>
<li ><a href="#method-i-util_make_gems">#util_make_gems</a>
<li ><a href="#method-i-util_remove_gem">#util_remove_gem</a>
<li ><a href="#method-i-util_restore_RUBY_VERSION">#util_restore_RUBY_VERSION</a>
<li ><a href="#method-i-util_set_RUBY_VERSION">#util_set_RUBY_VERSION</a>
<li ><a href="#method-i-util_set_arch">#util_set_arch</a>
<li ><a href="#method-i-util_setup_spec_fetcher">#util_setup_spec_fetcher</a>
<li ><a href="#method-i-util_spec">#util_spec</a>
<li ><a href="#method-i-util_zip">#util_zip</a>
<li ><a href="#method-i-vc_windows-3F">#vc_windows?</a>
<li ><a href="#method-i-vendordir">#vendordir</a>
<li ><a href="#method-i-wait_for_child_process_to_exit">#wait_for_child_process_to_exit</a>
<li ><a href="#method-i-win_platform-3F">#win_platform?</a>
<li ><a href="#method-i-with_clean_path_to_ruby">#with_clean_path_to_ruby</a>
<li ><a href="#method-i-write_file">#write_file</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-Gem::TestCase">
<h1 id="class-Gem::TestCase" class="class">
class Gem::TestCase
</h1>
<section class="description">
<p>RubyGemTestCase provides a variety of methods for testing rubygems and gem-related behavior in a sandbox. Through RubyGemTestCase you can install and uninstall gems, fetch remote gems through a stub fetcher and be assured your normal set of gems is not affected.</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="SPECIFICATIONS">SPECIFICATIONS
<dd>
<dt id="TEST_PATH">TEST_PATH
<dd>
</dl>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-java_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">java_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this test being run on a Java platform?</p>
<div class="method-source-code" id="java_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1133</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">java_platform?</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">java_platform?</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-make_command" class="method-detail ">
<div class="method-heading">
<span class="method-name">make_command</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the make command for the current platform. For versions of Ruby built on MS Windows with VC++ or Borland it will return 'nmake'. On all other platforms, including Cygwin, it will return 'make'.</p>
<div class="method-source-code" id="make_command-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1165</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">make_command</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"make"</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">"MAKE"</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">vc_windows?</span> <span class="ruby-operator">?</span> <span class="ruby-string">'nmake'</span> <span class="ruby-operator">:</span> <span class="ruby-string">'make'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-process_based_port" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_based_port</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows tests to use a random (but controlled) port number instead of a hardcoded one. This helps CI tools when running parallels builds on the same builder slave.</p>
<div class="method-source-code" id="process_based_port-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1198</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">process_based_port</span>
<span class="ruby-identifier">@@process_based_port</span> <span class="ruby-operator">||=</span> <span class="ruby-value">8000</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">$$</span> <span class="ruby-operator">%</span> <span class="ruby-value">1000</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-rubybin" class="method-detail ">
<div class="method-heading">
<span class="method-name">rubybin</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Finds the path to the Ruby executable</p>
<div class="method-source-code" id="rubybin-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1231</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">rubybin</span>
<span class="ruby-identifier">ruby</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">"RUBY"</span>]
<span class="ruby-keyword">return</span> <span class="ruby-identifier">ruby</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">ruby</span>
<span class="ruby-identifier">ruby</span> = <span class="ruby-string">"ruby"</span>
<span class="ruby-identifier">rubyexe</span> = <span class="ruby-node">"#{ruby}.exe"</span>
<span class="ruby-value">3</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-identifier">ruby</span> <span class="ruby-keyword">and</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span> <span class="ruby-identifier">ruby</span> <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span> <span class="ruby-identifier">ruby</span>
<span class="ruby-keyword">return</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">ruby</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-identifier">rubyexe</span> <span class="ruby-keyword">and</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span> <span class="ruby-identifier">rubyexe</span>
<span class="ruby-keyword">return</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">rubyexe</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ruby</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">".."</span>, <span class="ruby-identifier">ruby</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">"rbconfig"</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"bindir"</span>],
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"ruby_install_name"</span>] <span class="ruby-operator">+</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"EXEEXT"</span>])
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">LoadError</span>
<span class="ruby-string">"ruby"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-vc_windows-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">vc_windows?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns whether or not we're on a version of Ruby built with VC++ (or Borland) versus Cygwin, Mingw, etc.</p>
<div class="method-source-code" id="vc_windows-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1148</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">vc_windows?</span>
<span class="ruby-constant">RUBY_PLATFORM</span>.<span class="ruby-identifier">match</span>(<span class="ruby-string">'mswin'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-win_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">win_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this test being run on a Windows platform?</p>
<div class="method-source-code" id="win_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1119</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">win_platform?</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">win_platform?</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-add_to_fetcher" class="method-detail ">
<div class="method-heading">
<span class="method-name">add_to_fetcher</span><span
class="method-args">(spec, path=nil, repo=@gem_repo)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Add <code>spec</code> to +@fetcher+ serving the data in the file <code>path</code>. <code>repo</code> indicates which repo to make <code>spec</code> appear to be in.</p>
<div class="method-source-code" id="add_to_fetcher-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 998</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_to_fetcher</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">path</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">repo</span>=<span class="ruby-ivar">@gem_repo</span>)
<span class="ruby-identifier">path</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>
<span class="ruby-ivar">@fetcher</span>.<span class="ruby-identifier">data</span>[<span class="ruby-node">"#{@gem_repo}gems/#{spec.file_name}"</span>] = <span class="ruby-identifier">read_binary</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-all_spec_names" class="method-detail ">
<div class="method-heading">
<span class="method-name">all_spec_names</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="all_spec_names-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 647</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">all_spec_names</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&</span><span class="ruby-value">:full_name</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-ask_if_ok" class="method-detail ">
<div class="method-heading">
<span class="method-name">ask_if_ok</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="ask_if_ok-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 600</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ask_if_ok</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-assert_activate" class="method-detail ">
<div class="method-heading">
<span class="method-name">assert_activate</span><span
class="method-args">(expected, *specs)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="assert_activate-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 101</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">assert_activate</span>(<span class="ruby-identifier">expected</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">String</span> <span class="ruby-keyword">then</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">find_by_name</span>(<span class="ruby-identifier">spec</span>).<span class="ruby-identifier">activate</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span> <span class="ruby-keyword">then</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">activate</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">flunk</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">loaded</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&</span><span class="ruby-value">:full_name</span>)
<span class="ruby-identifier">assert_equal</span> <span class="ruby-identifier">expected</span>.<span class="ruby-identifier">sort</span>, <span class="ruby-identifier">loaded</span>.<span class="ruby-identifier">sort</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">expected</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-assert_contains_make_command" class="method-detail ">
<div class="method-heading">
<span class="method-name">assert_contains_make_command</span><span
class="method-args">(target, output, msg = nil) { |make, line| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="assert_contains_make_command-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 251</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">assert_contains_make_command</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">output</span>, <span class="ruby-identifier">msg</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/\n/</span>)
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">message</span>(<span class="ruby-identifier">msg</span>) <span class="ruby-keyword">do</span>
<span class="ruby-string">'Expected output containing make command "%s": %s'</span> <span class="ruby-operator">%</span> [
(<span class="ruby-string">'%s %s'</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">make_command</span>, <span class="ruby-identifier">target</span>]).<span class="ruby-identifier">rstrip</span>,
<span class="ruby-identifier">output</span>.<span class="ruby-identifier">inspect</span>
]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">message</span>(<span class="ruby-identifier">msg</span>) <span class="ruby-keyword">do</span>
<span class="ruby-string">'Expected make command "%s": %s'</span> <span class="ruby-operator">%</span> [
(<span class="ruby-string">'%s %s'</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">make_command</span>, <span class="ruby-identifier">target</span>]).<span class="ruby-identifier">rstrip</span>,
<span class="ruby-identifier">output</span>.<span class="ruby-identifier">inspect</span>
]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">assert</span> <span class="ruby-identifier">scan_make_command_lines</span>(<span class="ruby-identifier">output</span>).<span class="ruby-identifier">any?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">make</span> = <span class="ruby-identifier">parse_make_command_line</span>(<span class="ruby-identifier">line</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">make</span>[<span class="ruby-value">:targets</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">target</span>)
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">make</span>, <span class="ruby-identifier">line</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
}, <span class="ruby-identifier">msg</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-assert_directory_exists" class="method-detail ">
<div class="method-heading">
<span class="method-name">assert_directory_exists</span><span
class="method-args">(path, msg = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="assert_directory_exists-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 124</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">assert_directory_exists</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">msg</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">message</span>(<span class="ruby-identifier">msg</span>) { <span class="ruby-node">"Expected path '#{path}' to be a directory"</span> }
<span class="ruby-identifier">assert_path_exists</span> <span class="ruby-identifier">path</span>
<span class="ruby-identifier">assert</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">path</span>), <span class="ruby-identifier">msg</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-assert_path_exists" class="method-detail ">
<div class="method-heading">
<span class="method-name">assert_path_exists</span><span
class="method-args">(path, msg = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>TODO: move to minitest</p>
<div class="method-source-code" id="assert_path_exists-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 119</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">assert_path_exists</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">msg</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">message</span>(<span class="ruby-identifier">msg</span>) { <span class="ruby-node">"Expected path '#{path}' to exist"</span> }
<span class="ruby-identifier">assert</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">path</span>), <span class="ruby-identifier">msg</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-bindir" class="method-detail ">
<div class="method-heading">
<span class="method-name">bindir</span><span
class="method-args">(value) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the bindir entry in RbConfig::CONFIG to <code>value</code> and restores the original value when the block ends</p>
<div class="method-source-code" id="bindir-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 173</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">bindir</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">with_clean_path_to_ruby</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">bindir</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'bindir'</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'bindir'</span>] = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'bindir'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">bindir</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'bindir'</span>] = <span class="ruby-identifier">bindir</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'bindir'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-build_rake_in" class="method-detail ">
<div class="method-heading">
<span class="method-name">build_rake_in</span><span
class="method-args">(good=true) { |rake| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows the proper version of <code>rake</code> to be used for the test.</p>
<div class="method-source-code" id="build_rake_in-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1212</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">build_rake_in</span>(<span class="ruby-identifier">good</span>=<span class="ruby-keyword">true</span>)
<span class="ruby-identifier">gem_ruby</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span> = <span class="ruby-identifier">@@ruby</span>
<span class="ruby-identifier">env_rake</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">"rake"</span>]
<span class="ruby-identifier">rake</span> = (<span class="ruby-identifier">good</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">@@good_rake</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">@@bad_rake</span>)
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"rake"</span>] = <span class="ruby-identifier">rake</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">rake</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span> = <span class="ruby-identifier">gem_ruby</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">env_rake</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"rake"</span>] = <span class="ruby-identifier">env_rake</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">ENV</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-string">"rake"</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-common_installer_setup" class="method-detail ">
<div class="method-heading">
<span class="method-name">common_installer_setup</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="common_installer_setup-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 471</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">common_installer_setup</span>
<span class="ruby-identifier">common_installer_teardown</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_build</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">installer</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@post_build_hook_arg</span> = <span class="ruby-identifier">installer</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_install</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">installer</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@post_install_hook_arg</span> = <span class="ruby-identifier">installer</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_uninstall</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">uninstaller</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@post_uninstall_hook_arg</span> = <span class="ruby-identifier">uninstaller</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">pre_install</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">installer</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@pre_install_hook_arg</span> = <span class="ruby-identifier">installer</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">pre_uninstall</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">uninstaller</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@pre_uninstall_hook_arg</span> = <span class="ruby-identifier">uninstaller</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-common_installer_teardown" class="method-detail ">
<div class="method-heading">
<span class="method-name">common_installer_teardown</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="common_installer_teardown-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 497</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">common_installer_teardown</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_build_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_install_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">done_installing_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_reset_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">post_uninstall_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">pre_install_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">pre_reset_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">pre_uninstall_hooks</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-enable_shared" class="method-detail ">
<div class="method-heading">
<span class="method-name">enable_shared</span><span
class="method-args">(value) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the ENABLE_SHARED entry in RbConfig::CONFIG to <code>value</code> and restores the original value when the block ends</p>
<div class="method-source-code" id="enable_shared-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 134</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">enable_shared</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">enable_shared</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ENABLE_SHARED'</span>]
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ENABLE_SHARED'</span>] = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">enable_shared</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'enable_shared'</span>] = <span class="ruby-identifier">enable_shared</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'enable_shared'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-exeext" class="method-detail ">
<div class="method-heading">
<span class="method-name">exeext</span><span
class="method-args">(value) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the EXEEXT entry in RbConfig::CONFIG to <code>value</code> and restores the original value when the block ends</p>
<div class="method-source-code" id="exeext-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 199</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">exeext</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">exeext</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'EXEEXT'</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'EXEEXT'</span>] = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'EXEEXT'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">exeext</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'EXEEXT'</span>] = <span class="ruby-identifier">exeext</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'EXEEXT'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-git_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">git_gem</span><span
class="method-args">(name = 'a', version = 1) { |specification| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>A <a href="TestCase.html#method-i-git_gem"><code>git_gem</code></a> is used with a gem dependencies file. The gem created here has no files, just a gem specification for the given <code>name</code> and <code>version</code>.</p>
<p>Yields the <code>specification</code> to the block, if given</p>
<div class="method-source-code" id="git_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 514</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">git_gem</span>(<span class="ruby-identifier">name</span> = <span class="ruby-string">'a'</span>, <span class="ruby-identifier">version</span> = <span class="ruby-value">1</span>)
<span class="ruby-identifier">have_git?</span>
<span class="ruby-identifier">directory</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-string">'git'</span>, <span class="ruby-identifier">name</span>
<span class="ruby-identifier">directory</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span> <span class="ruby-identifier">directory</span>
<span class="ruby-identifier">git_spec</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">specification</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">specification</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-identifier">directory</span>
<span class="ruby-identifier">gemspec</span> = <span class="ruby-node">"#{name}.gemspec"</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">gemspec</span>), <span class="ruby-string">'w'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">git_spec</span>.<span class="ruby-identifier">to_ruby</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">head</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-identifier">directory</span> <span class="ruby-keyword">do</span>
<span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-string">'.git'</span>
<span class="ruby-identifier">system</span> <span class="ruby-ivar">@git</span>, <span class="ruby-string">'init'</span>, <span class="ruby-string">'--quiet'</span>
<span class="ruby-identifier">system</span> <span class="ruby-ivar">@git</span>, <span class="ruby-string">'config'</span>, <span class="ruby-string">'user.name'</span>, <span class="ruby-string">'RubyGems Tests'</span>
<span class="ruby-identifier">system</span> <span class="ruby-ivar">@git</span>, <span class="ruby-string">'config'</span>, <span class="ruby-string">'user.email'</span>, <span class="ruby-string">'rubygems@example'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">system</span> <span class="ruby-ivar">@git</span>, <span class="ruby-string">'add'</span>, <span class="ruby-identifier">gemspec</span>
<span class="ruby-identifier">system</span> <span class="ruby-ivar">@git</span>, <span class="ruby-string">'commit'</span>, <span class="ruby-string">'-a'</span>, <span class="ruby-string">'-m'</span>, <span class="ruby-string">'a non-empty commit message'</span>, <span class="ruby-string">'--quiet'</span>
<span class="ruby-identifier">head</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">popen</span>(<span class="ruby-ivar">@git</span>, <span class="ruby-string">'rev-parse'</span>, <span class="ruby-string">'master'</span>).<span class="ruby-identifier">strip</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">git_spec</span>.<span class="ruby-identifier">version</span>, <span class="ruby-identifier">directory</span>, <span class="ruby-identifier">head</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-have_git-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">have_git?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Skips this test unless you have a git executable</p>
<div class="method-source-code" id="have_git-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 552</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">have_git?</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">in_path?</span> <span class="ruby-ivar">@git</span>
<span class="ruby-identifier">skip</span> <span class="ruby-string">'cannot find git executable, use GIT environment variable to set'</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-install_default_gems" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_default_gems</span><span
class="method-args">(*specs)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Installs the provided default specs including writing the spec file</p>
<div class="method-source-code" id="install_default_gems-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 747</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_default_gems</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">install_default_specs</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span>, <span class="ruby-string">'w'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">to_ruby_for_cache</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-install_default_specs" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_default_specs</span><span
class="method-args">(*specs)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Install the provided default specs</p>
<div class="method-source-code" id="install_default_specs-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 760</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_default_specs</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">installer</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Installer</span>.<span class="ruby-identifier">for_spec</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-value">:install_as_default</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>)
<span class="ruby-identifier">installer</span>.<span class="ruby-identifier">install</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">register_default_spec</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-install_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_gem</span><span
class="method-args">(spec, options = {})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Builds and installs the <a href="Specification.html"><code>Gem::Specification</code></a> <code>spec</code></p>
<div class="method-source-code" id="install_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 569</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_gem</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">options</span> = {})
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/installer'</span>
<span class="ruby-identifier">gem</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">"gems"</span>, <span class="ruby-node">"#{spec.full_name}.gem"</span>
<span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-identifier">gem</span>
<span class="ruby-identifier">use_ui</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">MockGemUi</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-ivar">@tempdir</span> <span class="ruby-keyword">do</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Package</span>.<span class="ruby-identifier">build</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">gem</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@tempdir</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>)).<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Installer</span>.<span class="ruby-identifier">at</span>(<span class="ruby-identifier">gem</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:wrappers</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})).<span class="ruby-identifier">install</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-install_gem_user" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_gem_user</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Builds and installs the <a href="Specification.html"><code>Gem::Specification</code></a> <code>spec</code> into the user dir</p>
<div class="method-source-code" id="install_gem_user-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 590</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_gem_user</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-identifier">install_gem</span> <span class="ruby-identifier">spec</span>, <span class="ruby-value">:user_install</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-install_specs" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_specs</span><span
class="method-args">(*specs)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Install the provided specs</p>
<div class="method-source-code" id="install_specs-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 736</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_specs</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Installer</span>.<span class="ruby-identifier">for_spec</span>(<span class="ruby-identifier">spec</span>).<span class="ruby-identifier">install</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">searcher</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-java_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">java_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this test being run on a Java platform?</p>
<div class="method-source-code" id="java_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1140</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">java_platform?</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">java_platform?</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-loaded_spec_names" class="method-detail ">
<div class="method-heading">
<span class="method-name">loaded_spec_names</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="loaded_spec_names-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 768</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">loaded_spec_names</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&</span><span class="ruby-value">:full_name</span>).<span class="ruby-identifier">sort</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-make_command" class="method-detail ">
<div class="method-heading">
<span class="method-name">make_command</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the make command for the current platform. For versions of Ruby built on MS Windows with VC++ or Borland it will return 'nmake'. On all other platforms, including Cygwin, it will return 'make'.</p>
<div class="method-source-code" id="make_command-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1174</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">make_command</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"make"</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">"MAKE"</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">vc_windows?</span> <span class="ruby-operator">?</span> <span class="ruby-string">'nmake'</span> <span class="ruby-operator">:</span> <span class="ruby-string">'make'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-mu_pp" class="method-detail ">
<div class="method-heading">
<span class="method-name">mu_pp</span><span
class="method-args">(obj)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Enables pretty-print for all tests</p>
<div class="method-source-code" id="mu_pp-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 609</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">mu_pp</span>(<span class="ruby-identifier">obj</span>)
<span class="ruby-identifier">s</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">s</span> = <span class="ruby-constant">PP</span>.<span class="ruby-identifier">pp</span> <span class="ruby-identifier">obj</span>, <span class="ruby-identifier">s</span>
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>)
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-new_default_spec" class="method-detail ">
<div class="method-heading">
<span class="method-name">new_default_spec</span><span
class="method-args">(name, version, deps = nil, *files)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new_default_spec-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 786</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">new_default_spec</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">deps</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">files</span>)
<span class="ruby-identifier">spec</span> = <span class="ruby-identifier">util_spec</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">deps</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@default_spec_dir</span>, <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_name</span>)
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span> = <span class="ruby-identifier">files</span>
<span class="ruby-identifier">lib_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">"default_gems"</span>, <span class="ruby-string">"lib"</span>)
<span class="ruby-identifier">lib_dir</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value">:@gem_prelude_index</span>, <span class="ruby-identifier">lib_dir</span>)
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">lib_dir</span>)
<span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">rb_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">lib_dir</span>, <span class="ruby-identifier">file</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">rb_path</span>))
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">rb_path</span>, <span class="ruby-string">"w"</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rb</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">rb</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"# #{file}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-nmake_found-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">nmake_found?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns whether or not the nmake command could be found.</p>
<div class="method-source-code" id="nmake_found-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1181</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">nmake_found?</span>
<span class="ruby-identifier">system</span>(<span class="ruby-string">'nmake /? 1>NUL 2>&1'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-parse_make_command_line" class="method-detail ">
<div class="method-heading">
<span class="method-name">parse_make_command_line</span><span
class="method-args">(line)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="parse_make_command_line-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 227</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse_make_command_line</span>(<span class="ruby-identifier">line</span>)
<span class="ruby-identifier">command</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">shellsplit</span>
<span class="ruby-identifier">targets</span> = []
<span class="ruby-identifier">macros</span> = {}
<span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">arg</span>
<span class="ruby-keyword">when</span> <span class="ruby-regexp">/\A(\w+)=/</span>
<span class="ruby-identifier">macros</span>[<span class="ruby-node">$1</span>] = <span class="ruby-node">$'</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">targets</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">arg</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">targets</span> <span class="ruby-operator"><<</span> <span class="ruby-string">''</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">targets</span>.<span class="ruby-identifier">empty?</span>
{
<span class="ruby-value">:command</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">command</span>,
<span class="ruby-value">:targets</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">targets</span>,
<span class="ruby-value">:macros</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">macros</span>,
}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_based_port" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_based_port</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>See <a href="TestCase.html#method-c-process_based_port"><code>::process_based_port</code></a></p>
<div class="method-source-code" id="process_based_port-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1205</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_based_port</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">process_based_port</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-quick_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">quick_gem</span><span
class="method-args">(name, version='2') { |s| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Creates a <a href="Specification.html"><code>Gem::Specification</code></a> with a minimum of extra work. <code>name</code> and <code>version</code> are the gem's name and version, platform, author, email, homepage, summary and description are defaulted. The specification is yielded for customization.</p>
<p>The gem is added to the installed gems in +@gemhome+ and the runtime.</p>
<p>Use this with <a href="TestCase.html#method-i-write_file"><code>write_file</code></a> to build an installed gem.</p>
<div class="method-source-code" id="quick_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 661</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">quick_gem</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>=<span class="ruby-string">'2'</span>)
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/specification'</span>
<span class="ruby-identifier">spec</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span><span class="ruby-operator">::</span><span class="ruby-constant">RUBY</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">version</span> = <span class="ruby-identifier">version</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">author</span> = <span class="ruby-string">'A User'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">email</span> = <span class="ruby-string">'example@example.com'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">homepage</span> = <span class="ruby-string">'http://example.com'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">summary</span> = <span class="ruby-string">"this is a summary"</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">description</span> = <span class="ruby-string">"This is a test description"</span>
<span class="ruby-keyword">yield</span>(<span class="ruby-identifier">s</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">map</span> <span class="ruby-comment"># HACK: force specs to (re-)load before we write</span>
<span class="ruby-identifier">written_path</span> = <span class="ruby-identifier">write_file</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_file</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">to_ruby_for_cache</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-identifier">written_path</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-read_binary" class="method-detail ">
<div class="method-heading">
<span class="method-name">read_binary</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Reads a binary file at <code>path</code></p>
<div class="method-source-code" id="read_binary-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 628</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_binary</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">read_binary</span> <span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-read_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">read_cache</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Reads a <a href="../Marshal.html"><code>Marshal</code></a> file at <code>path</code></p>
<div class="method-source-code" id="read_cache-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 619</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_cache</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>), <span class="ruby-string">'rb'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">load</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-refute_path_exists" class="method-detail ">
<div class="method-heading">
<span class="method-name">refute_path_exists</span><span
class="method-args">(path, msg = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>TODO: move to minitest</p>
<div class="method-source-code" id="refute_path_exists-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 218</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">refute_path_exists</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">msg</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">message</span>(<span class="ruby-identifier">msg</span>) { <span class="ruby-node">"Expected path '#{path}' to not exist"</span> }
<span class="ruby-identifier">refute</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">path</span>), <span class="ruby-identifier">msg</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-save_loaded_features" class="method-detail ">
<div class="method-heading">
<span class="method-name">save_loaded_features</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="save_loaded_features-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 776</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">save_loaded_features</span>
<span class="ruby-identifier">old_loaded_features</span> = <span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-identifier">prefix</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword">__FILE__</span>) <span class="ruby-operator">+</span> <span class="ruby-string">"/"</span>
<span class="ruby-identifier">new_features</span> = (<span class="ruby-identifier">$LOADED_FEATURES</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">old_loaded_features</span>)
<span class="ruby-identifier">old_loaded_features</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">new_features</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-value">0</span>)})
<span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">replace</span> <span class="ruby-identifier">old_loaded_features</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-scan_make_command_lines" class="method-detail ">
<div class="method-heading">
<span class="method-name">scan_make_command_lines</span><span
class="method-args">(output)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="scan_make_command_lines-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 223</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">scan_make_command_lines</span>(<span class="ruby-identifier">output</span>)
<span class="ruby-identifier">output</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/^#{Regexp.escape make_command}(?:[[:blank:]].*)?$/</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-setup" class="method-detail ">
<div class="method-heading">
<span class="method-name">setup</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="TestCase.html#method-i-setup"><code>setup</code></a> prepares a sandboxed location to install gems. All installs are directed to a temporary directory. All install plugins are removed.</p>
<p>If the <code>RUBY</code> environment variable is set the given path is used for <a href="../Gem.html#method-c-ruby"><code>Gem::ruby</code></a>. The local platform is set to <code>i386-mswin32</code> for Windows or <code>i686-darwin8.10.1</code> otherwise.</p>
<div class="method-calls-super">
Calls superclass method
</div>
<div class="method-source-code" id="setup-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 293</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">setup</span>
<span class="ruby-keyword">super</span>
<span class="ruby-ivar">@orig_env</span> = <span class="ruby-constant">ENV</span>.<span class="ruby-identifier">to_hash</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">'GEM_VENDOR'</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">'GEMRC'</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">'SOURCE_DATE_EPOCH'</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@current_dir</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>
<span class="ruby-ivar">@fetcher</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@back_ui</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultUserInteraction</span>.<span class="ruby-identifier">ui</span>
<span class="ruby-ivar">@ui</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">MockGemUi</span>.<span class="ruby-identifier">new</span>
<span class="ruby-comment"># This needs to be a new instance since we call use_ui(@ui) when we want to</span>
<span class="ruby-comment"># capture output</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultUserInteraction</span>.<span class="ruby-identifier">ui</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">MockGemUi</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">tmpdir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">realpath</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">tmpdir</span>
<span class="ruby-identifier">tmpdir</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-ivar">@tempdir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">tmpdir</span>, <span class="ruby-node">"test_rubygems_#{$$}"</span>)
<span class="ruby-ivar">@tempdir</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-ivar">@tempdir</span>
<span class="ruby-comment"># This makes the tempdir consistent on Windows.</span>
<span class="ruby-comment"># Dir.tmpdir may return short path name, but Dir[Dir.tmpdir] returns long</span>
<span class="ruby-comment"># path name. https://bugs.ruby-lang.org/issues/10819</span>
<span class="ruby-comment"># File.expand_path or File.realpath doesn't convert path name to long path</span>
<span class="ruby-comment"># name. Only Dir[] (= Dir.glob) works.</span>
<span class="ruby-comment"># Short and long path name is specific to Windows filesystem.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">win_platform?</span>
<span class="ruby-ivar">@tempdir</span> = <span class="ruby-constant">Dir</span>[<span class="ruby-ivar">@tempdir</span>][<span class="ruby-value">0</span>]
<span class="ruby-ivar">@tempdir</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@gemhome</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'gemhome'</span>
<span class="ruby-ivar">@userhome</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'userhome'</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"GEM_SPEC_CACHE"</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'spec_cache'</span>
<span class="ruby-ivar">@orig_ruby</span> = <span class="ruby-keyword">if</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">'RUBY'</span>]
<span class="ruby-identifier">ruby</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">'RUBY'</span>]
<span class="ruby-identifier">ruby</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@git</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">'GIT'</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'git'</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ensure_gem_subdirectories</span> <span class="ruby-ivar">@gemhome</span>
<span class="ruby-ivar">@orig_LOAD_PATH</span> = <span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">expand_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">realpath</span>(<span class="ruby-identifier">s</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">s</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">expand_path</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">s</span>
<span class="ruby-identifier">expand_path</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@gem_prelude_index</span>)
<span class="ruby-identifier">expand_path</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value">:@gem_prelude_index</span>, <span class="ruby-identifier">expand_path</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">expand_path</span>.<span class="ruby-identifier">freeze</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">frozen?</span>
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">expand_path</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-ivar">@tempdir</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">'HOME'</span>] = <span class="ruby-ivar">@userhome</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@user_home</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@gemdeps</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@env_requirements_by_name</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_instance_variable</span>, <span class="ruby-value">:@ruby_version</span> <span class="ruby-keyword">if</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value">:@ruby_version</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-ivar">@gemhome</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-ivar">@userhome</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">'GEM_PRIVATE_KEY_PASSPHRASE'</span>] = <span class="ruby-constant">PRIVATE_KEY_PASSPHRASE</span>
<span class="ruby-ivar">@default_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'default'</span>
<span class="ruby-ivar">@default_spec_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@default_dir</span>, <span class="ruby-string">"specifications"</span>, <span class="ruby-string">"default"</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">java_platform?</span>
<span class="ruby-ivar">@orig_default_gem_home</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'default_gem_home'</span>]
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'default_gem_home'</span>] = <span class="ruby-ivar">@default_dir</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value">:@default_dir</span>, <span class="ruby-ivar">@default_dir</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-ivar">@default_spec_dir</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">unresolved_deps</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">use_paths</span>(<span class="ruby-ivar">@gemhome</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Security</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value">:@activated_gem_paths</span>, <span class="ruby-value">0</span>)
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">clear_default_specs</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">reset!</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">verbose</span> = <span class="ruby-keyword">true</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">update_sources</span> = <span class="ruby-keyword">true</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RemoteFetcher</span>.<span class="ruby-identifier">fetcher</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">FakeFetcher</span>.<span class="ruby-identifier">new</span>
<span class="ruby-ivar">@gem_repo</span> = <span class="ruby-string">"http://gems.example.com/"</span>
<span class="ruby-ivar">@uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span> <span class="ruby-ivar">@gem_repo</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">sources</span>.<span class="ruby-identifier">replace</span> [<span class="ruby-ivar">@gem_repo</span>]
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">searcher</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">SpecFetcher</span>.<span class="ruby-identifier">fetcher</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@orig_arch</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'arch'</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">win_platform?</span>
<span class="ruby-identifier">util_set_arch</span> <span class="ruby-string">'i386-mswin32'</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">util_set_arch</span> <span class="ruby-string">'i686-darwin8.10.1'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@orig_hooks</span> = {}
<span class="ruby-node">%w[post_install_hooks done_installing_hooks post_uninstall_hooks pre_uninstall_hooks pre_install_hooks pre_reset_hooks post_reset_hooks post_build_hooks]</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
<span class="ruby-ivar">@orig_hooks</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@marshal_version</span> = <span class="ruby-node">"#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"</span>
<span class="ruby-ivar">@orig_LOADED_FEATURES</span> = <span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-teardown" class="method-detail ">
<div class="method-heading">
<span class="method-name">teardown</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="TestCase.html#method-i-teardown"><code>teardown</code></a> restores the process to its original state and removes the tempdir</p>
<div class="method-source-code" id="teardown-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 425</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">teardown</span>
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">replace</span> <span class="ruby-ivar">@orig_LOAD_PATH</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@orig_LOAD_PATH</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@orig_LOADED_FEATURES</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@orig_LOAD_PATH</span>
<span class="ruby-identifier">paths</span> = <span class="ruby-ivar">@orig_LOAD_PATH</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">path</span>), <span class="ruby-string">"/"</span>)}
(<span class="ruby-identifier">$LOADED_FEATURES</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@orig_LOADED_FEATURES</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">feat</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">paths</span>.<span class="ruby-identifier">any?</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-identifier">feat</span>.<span class="ruby-identifier">start_with?</span>(<span class="ruby-identifier">path</span>)}
<span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">feat</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">replace</span> <span class="ruby-ivar">@orig_LOADED_FEATURES</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'arch'</span>] = <span class="ruby-ivar">@orig_arch</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RemoteFetcher</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RemoteFetcher</span>.<span class="ruby-identifier">fetcher</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-ivar">@current_dir</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_rf</span> <span class="ruby-ivar">@tempdir</span>
<span class="ruby-constant">ENV</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-ivar">@orig_env</span>)
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span> = <span class="ruby-ivar">@orig_ruby</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@orig_ruby</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">java_platform?</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'default_gem_home'</span>] = <span class="ruby-ivar">@orig_default_gem_home</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@default_dir</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">_clear_load_cache</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">unresolved_deps</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-identifier">refresh</span>
<span class="ruby-ivar">@orig_hooks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">hooks</span><span class="ruby-operator">|</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">replace</span> <span class="ruby-identifier">hooks</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@back_ui</span>.<span class="ruby-identifier">close</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-uninstall_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">uninstall_gem</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Uninstalls the <a href="Specification.html"><code>Gem::Specification</code></a> <code>spec</code></p>
<div class="method-source-code" id="uninstall_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 596</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uninstall_gem</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/uninstaller'</span>
<span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Uninstaller</span>) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ask_if_ok</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value">:executables</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:user_install</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>).<span class="ruby-identifier">uninstall</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-unresolved_names" class="method-detail ">
<div class="method-heading">
<span class="method-name">unresolved_names</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="unresolved_names-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 772</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unresolved_names</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">unresolved_deps</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&</span><span class="ruby-value">:to_s</span>).<span class="ruby-identifier">sort</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_build_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_build_gem</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Builds a gem from <code>spec</code> and places it in <code>File.join @gemhome, 'cache'</code>. Automatically creates files based on <code>spec.files</code></p>
<div class="method-source-code" id="util_build_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 694</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_build_gem</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-identifier">dir</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">gem_dir</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-identifier">dir</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-identifier">dir</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-identifier">file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">file</span>)
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">file</span>, <span class="ruby-string">'w'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fp</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">fp</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"# #{file}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">use_ui</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">MockGemUi</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Package</span>.<span class="ruby-identifier">build</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">cache</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mv</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">cache</span>), <span class="ruby-identifier">cache</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_clear_RUBY_VERSION" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_clear_RUBY_VERSION</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="util_clear_RUBY_VERSION-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1107</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_clear_RUBY_VERSION</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_VERSION</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_PATCHLEVEL</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_PATCHLEVEL</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_REVISION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_REVISION</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_DESCRIPTION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_DESCRIPTION</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_ENGINE</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_const</span>, <span class="ruby-value">:RUBY_ENGINE_VERSION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_ENGINE_VERSION</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_clear_gems" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_clear_gems</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Removes all installed gems from +@gemhome+.</p>
<div class="method-source-code" id="util_clear_gems-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 725</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_clear_gems</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_rf</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@gemhome</span>, <span class="ruby-string">"gems"</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@gemhome</span>, <span class="ruby-string">"gems"</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_rf</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@gemhome</span>, <span class="ruby-string">"specifications"</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@gemhome</span>, <span class="ruby-string">"specifications"</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_gem</span><span
class="method-args">(name, version, deps = nil, &block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Creates a gem with <code>name</code>, <code>version</code> and <code>deps</code>. The specification will be yielded before gem creation for customization. The gem will be placed in <code>File.join @tempdir, 'gems'</code>. The specification and .gem file location are returned.</p>
<div class="method-source-code" id="util_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 858</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_gem</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">deps</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">deps</span>
<span class="ruby-identifier">block</span> = <span class="ruby-identifier">proc</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-comment"># Since Hash#each is unordered in 1.8, sort</span>
<span class="ruby-comment"># the keys and iterate that way so the tests are</span>
<span class="ruby-comment"># deterministic on all implementations.</span>
<span class="ruby-identifier">deps</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">add_dependency</span> <span class="ruby-identifier">n</span>, (<span class="ruby-identifier">deps</span>[<span class="ruby-identifier">n</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'>= 0'</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">util_build_gem</span> <span class="ruby-identifier">spec</span>
<span class="ruby-identifier">cache_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'gems'</span>, <span class="ruby-node">"#{spec.original_name}.gem"</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mv</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>, <span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_file</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-keyword">nil</span>
[<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">cache_file</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_gzip" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_gzip</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Gzips <code>data</code>.</p>
<div class="method-source-code" id="util_gzip-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 887</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_gzip</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-identifier">out</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
<span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">GzipWriter</span>.<span class="ruby-identifier">wrap</span> <span class="ruby-identifier">out</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">out</span>.<span class="ruby-identifier">string</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_make_gems" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_make_gems</span><span
class="method-args">(prerelease = false)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Creates several default gems which all have a lib/code.rb file. The gems are not installed but are available in the cache dir.</p>
<dl class="rdoc-list note-list"><dt>+@a1+
<dd>
<p>gem a version 1, this is the best-described gem.</p>
</dd><dt>+@a2+
<dd>
<p>gem a version 2</p>
</dd><dt>+@a3a
<dd>
<p>gem a version 3.a</p>
</dd><dt>+@a_evil9+
<dd>
<p>gem a_evil version 9, use this to ensure similarly-named gems don't collide with a.</p>
</dd><dt>+@b2+
<dd>
<p>gem b version 2</p>
</dd><dt>+@c1_2+
<dd>
<p>gem c version 1.2</p>
</dd><dt>+@pl1+
<dd>
<p>gem pl version 1, this gem has a legacy platform of i386-linux.</p>
</dd></dl>
<p>Additional <code>prerelease</code> gems may also be created:</p>
<dl class="rdoc-list note-list"><dt>+@a2_pre+
<dd>
<p>gem a version 2.a</p>
</dd></dl>
<p>TODO: nuke this and fix tests. this should speed up a lot</p>
<div class="method-source-code" id="util_make_gems-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 915</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_make_gems</span>(<span class="ruby-identifier">prerelease</span> = <span class="ruby-keyword">false</span>)
<span class="ruby-ivar">@a1</span> = <span class="ruby-identifier">quick_gem</span> <span class="ruby-string">'a'</span>, <span class="ruby-string">'1'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">files</span> = <span class="ruby-node">%w[lib/code.rb]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">require_paths</span> = <span class="ruby-node">%w[lib]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">date</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span><span class="ruby-operator">::</span><span class="ruby-constant">TODAY</span> <span class="ruby-operator">-</span> <span class="ruby-value">86400</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">homepage</span> = <span class="ruby-string">'http://a.example.com'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">email</span> = <span class="ruby-node">%w[example@example.com example2@example.com]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">authors</span> = <span class="ruby-node">%w[Example Example2]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">description</span> = <span class="ruby-identifier"><<-DESC</span>
<span class="ruby-value">This line is really, really long. So long, in fact, that it is more than eighty characters long! The purpose of this line is for testing wrapping behavior because sometimes people don't wrap their text to eighty characters. Without the wrapping, the text might not look good in the RSS feed.
Also, a list:
* An entry that\'s actually kind of sort
* an entry that\'s really long, which will probably get wrapped funny. That's ok, somebody wasn't thinking straight when they made it more than eighty characters.
</span><span class="ruby-identifier"> DESC</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">init</span> = <span class="ruby-identifier">proc</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">files</span> = <span class="ruby-node">%w[lib/code.rb]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">require_paths</span> = <span class="ruby-node">%w[lib]</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@a2</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'a'</span>, <span class="ruby-string">'2'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@a3a</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'a'</span>, <span class="ruby-string">'3.a'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@a_evil9</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'a_evil'</span>, <span class="ruby-string">'9'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@b2</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'b'</span>, <span class="ruby-string">'2'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@c1_2</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'c'</span>, <span class="ruby-string">'1.2'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@x</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'x'</span>, <span class="ruby-string">'1'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-ivar">@dep_x</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'dep_x'</span>, <span class="ruby-string">'1'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">files</span> = <span class="ruby-node">%w[lib/code.rb]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">require_paths</span> = <span class="ruby-node">%w[lib]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">add_dependency</span> <span class="ruby-string">'x'</span>, <span class="ruby-string">'>= 1'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@pl1</span> = <span class="ruby-identifier">quick_gem</span> <span class="ruby-string">'pl'</span>, <span class="ruby-string">'1'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-comment"># l for legacy</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">files</span> = <span class="ruby-node">%w[lib/code.rb]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">require_paths</span> = <span class="ruby-node">%w[lib]</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span>.<span class="ruby-identifier">new</span> <span class="ruby-string">'i386-linux'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@original_platform</span>, <span class="ruby-string">'i386-linux'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">prerelease</span>
<span class="ruby-ivar">@a2_pre</span> = <span class="ruby-identifier">quick_gem</span>(<span class="ruby-string">'a'</span>, <span class="ruby-string">'2.a'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">init</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@a2_pre.original_name} lib code.rb]</span>)
<span class="ruby-identifier">util_build_gem</span> <span class="ruby-ivar">@a2_pre</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@a1.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@a2.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@a3a.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@a_evil9.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@b2.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@c1_2.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@pl1.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@x.original_name} lib code.rb]</span>)
<span class="ruby-identifier">write_file</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-node">%W[gems #{@dep_x.original_name} lib code.rb]</span>)
[<span class="ruby-ivar">@a1</span>, <span class="ruby-ivar">@a2</span>, <span class="ruby-ivar">@a3a</span>, <span class="ruby-ivar">@a_evil9</span>, <span class="ruby-ivar">@b2</span>, <span class="ruby-ivar">@c1_2</span>, <span class="ruby-ivar">@pl1</span>, <span class="ruby-ivar">@x</span>, <span class="ruby-ivar">@dep_x</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">util_build_gem</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_r</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@gemhome</span>, <span class="ruby-string">"gems"</span>, <span class="ruby-ivar">@pl1</span>.<span class="ruby-identifier">original_name</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_remove_gem" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_remove_gem</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="util_remove_gem-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 717</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_remove_gem</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_rf</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_rf</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_file</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_restore_RUBY_VERSION" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_restore_RUBY_VERSION</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="util_restore_RUBY_VERSION-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1092</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_restore_RUBY_VERSION</span>
<span class="ruby-identifier">util_clear_RUBY_VERSION</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_VERSION</span>, <span class="ruby-ivar">@RUBY_VERSION</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_PATCHLEVEL</span>, <span class="ruby-ivar">@RUBY_PATCHLEVEL</span> <span class="ruby-keyword">if</span>
<span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@RUBY_PATCHLEVEL</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_REVISION</span>, <span class="ruby-ivar">@RUBY_REVISION</span> <span class="ruby-keyword">if</span>
<span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@RUBY_REVISION</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_DESCRIPTION</span>, <span class="ruby-ivar">@RUBY_DESCRIPTION</span> <span class="ruby-keyword">if</span>
<span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@RUBY_DESCRIPTION</span>)
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_ENGINE</span>, <span class="ruby-ivar">@RUBY_ENGINE</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_ENGINE_VERSION</span>, <span class="ruby-ivar">@RUBY_ENGINE_VERSION</span> <span class="ruby-keyword">if</span>
<span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@RUBY_ENGINE_VERSION</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_set_RUBY_VERSION" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_set_RUBY_VERSION</span><span
class="method-args">(version, patchlevel = nil, revision = nil, description = nil, engine = "ruby", engine_version = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="util_set_RUBY_VERSION-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1070</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_set_RUBY_VERSION</span>(<span class="ruby-identifier">version</span>, <span class="ruby-identifier">patchlevel</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">revision</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">description</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">engine</span> = <span class="ruby-string">"ruby"</span>, <span class="ruby-identifier">engine_version</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value">:@ruby_version</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">send</span> <span class="ruby-value">:remove_instance_variable</span>, <span class="ruby-value">:@ruby_version</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@RUBY_VERSION</span> = <span class="ruby-constant">RUBY_VERSION</span>
<span class="ruby-ivar">@RUBY_PATCHLEVEL</span> = <span class="ruby-constant">RUBY_PATCHLEVEL</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_PATCHLEVEL</span>)
<span class="ruby-ivar">@RUBY_REVISION</span> = <span class="ruby-constant">RUBY_REVISION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_REVISION</span>)
<span class="ruby-ivar">@RUBY_DESCRIPTION</span> = <span class="ruby-constant">RUBY_DESCRIPTION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_DESCRIPTION</span>)
<span class="ruby-ivar">@RUBY_ENGINE</span> = <span class="ruby-constant">RUBY_ENGINE</span>
<span class="ruby-ivar">@RUBY_ENGINE_VERSION</span> = <span class="ruby-constant">RUBY_ENGINE_VERSION</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_ENGINE_VERSION</span>)
<span class="ruby-identifier">util_clear_RUBY_VERSION</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_VERSION</span>, <span class="ruby-identifier">version</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_PATCHLEVEL</span>, <span class="ruby-identifier">patchlevel</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">patchlevel</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_REVISION</span>, <span class="ruby-identifier">revision</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">revision</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_DESCRIPTION</span>, <span class="ruby-identifier">description</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">description</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_ENGINE</span>, <span class="ruby-identifier">engine</span>
<span class="ruby-constant">Object</span>.<span class="ruby-identifier">const_set</span> <span class="ruby-value">:RUBY_ENGINE_VERSION</span>, <span class="ruby-identifier">engine_version</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">engine_version</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_set_arch" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_set_arch</span><span
class="method-args">(arch) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="../Set.html"><code>Set</code></a> the platform to <code>arch</code></p>
<div class="method-source-code" id="util_set_arch-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 982</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_set_arch</span>(<span class="ruby-identifier">arch</span>)
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'arch'</span>] = <span class="ruby-identifier">arch</span>
<span class="ruby-identifier">platform</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">arch</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@platforms</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@local</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">yield</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-identifier">platform</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_setup_spec_fetcher" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_setup_spec_fetcher</span><span
class="method-args">(*specs)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets up <a href="SpecFetcher.html"><code>Gem::SpecFetcher</code></a> to return information from the gems in <code>specs</code>.</p>
<div class="method-source-code" id="util_setup_spec_fetcher-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1006</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_setup_spec_fetcher</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">specs</span>)
<span class="ruby-identifier">all_specs</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">to_a</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">specs</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">_resort!</span> <span class="ruby-identifier">all_specs</span>
<span class="ruby-identifier">spec_fetcher</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">SpecFetcher</span>.<span class="ruby-identifier">fetcher</span>
<span class="ruby-identifier">prerelease</span>, <span class="ruby-identifier">all</span> = <span class="ruby-identifier">all_specs</span>.<span class="ruby-identifier">partition</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">version</span>.<span class="ruby-identifier">prerelease?</span> }
<span class="ruby-identifier">latest</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">_latest_specs</span> <span class="ruby-identifier">all_specs</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">specs</span>[<span class="ruby-ivar">@uri</span>] = []
<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">specs</span>[<span class="ruby-ivar">@uri</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">latest_specs</span>[<span class="ruby-ivar">@uri</span>] = []
<span class="ruby-identifier">latest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">latest_specs</span>[<span class="ruby-ivar">@uri</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">prerelease_specs</span>[<span class="ruby-ivar">@uri</span>] = []
<span class="ruby-identifier">prerelease</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">spec_fetcher</span>.<span class="ruby-identifier">prerelease_specs</span>[<span class="ruby-ivar">@uri</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># HACK for test_download_to_cache</span>
<span class="ruby-keyword">unless</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RemoteFetcher</span> <span class="ruby-operator">===</span> <span class="ruby-ivar">@fetcher</span>
<span class="ruby-identifier">v</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">marshal_version</span>
<span class="ruby-identifier">specs</span> = <span class="ruby-identifier">all</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span> }
<span class="ruby-identifier">s_zip</span> = <span class="ruby-identifier">util_gzip</span> <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">NameTuple</span>.<span class="ruby-identifier">to_basic</span> <span class="ruby-identifier">specs</span>
<span class="ruby-identifier">latest_specs</span> = <span class="ruby-identifier">latest</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">l_zip</span> = <span class="ruby-identifier">util_gzip</span> <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">NameTuple</span>.<span class="ruby-identifier">to_basic</span> <span class="ruby-identifier">latest_specs</span>
<span class="ruby-identifier">prerelease_specs</span> = <span class="ruby-identifier">prerelease</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name_tuple</span> }
<span class="ruby-identifier">p_zip</span> = <span class="ruby-identifier">util_gzip</span> <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">NameTuple</span>.<span class="ruby-identifier">to_basic</span> <span class="ruby-identifier">prerelease_specs</span>
<span class="ruby-ivar">@fetcher</span>.<span class="ruby-identifier">data</span>[<span class="ruby-node">"#{@gem_repo}specs.#{v}.gz"</span>] = <span class="ruby-identifier">s_zip</span>
<span class="ruby-ivar">@fetcher</span>.<span class="ruby-identifier">data</span>[<span class="ruby-node">"#{@gem_repo}latest_specs.#{v}.gz"</span>] = <span class="ruby-identifier">l_zip</span>
<span class="ruby-ivar">@fetcher</span>.<span class="ruby-identifier">data</span>[<span class="ruby-node">"#{@gem_repo}prerelease_specs.#{v}.gz"</span>] = <span class="ruby-identifier">p_zip</span>
<span class="ruby-identifier">v</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">marshal_version</span>
<span class="ruby-identifier">all_specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">path</span> = <span class="ruby-node">"#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"</span>
<span class="ruby-identifier">data</span> = <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span> <span class="ruby-identifier">spec</span>
<span class="ruby-identifier">data_deflate</span> = <span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">Deflate</span>.<span class="ruby-identifier">deflate</span> <span class="ruby-identifier">data</span>
<span class="ruby-ivar">@fetcher</span>.<span class="ruby-identifier">data</span>[<span class="ruby-identifier">path</span>] = <span class="ruby-identifier">data_deflate</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">nil</span> <span class="ruby-comment"># force errors</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_spec" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_spec</span><span
class="method-args">(name, version = 2, deps = nil, *files) { |specification| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Creates a spec with <code>name</code>, <code>version</code>. <code>deps</code> can specify the dependency or a <code>block</code> can be given for full customization of the specification.</p>
<div class="method-source-code" id="util_spec-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 810</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_spec</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span> = <span class="ruby-value">2</span>, <span class="ruby-identifier">deps</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">files</span>) <span class="ruby-comment"># :yields: specification</span>
<span class="ruby-identifier">raise</span> <span class="ruby-string">"deps or block, not both"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">deps</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-identifier">spec</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span><span class="ruby-operator">::</span><span class="ruby-constant">RUBY</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">version</span> = <span class="ruby-identifier">version</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">author</span> = <span class="ruby-string">'A User'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">email</span> = <span class="ruby-string">'example@example.com'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">homepage</span> = <span class="ruby-string">'http://example.com'</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">summary</span> = <span class="ruby-string">"this is a summary"</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">description</span> = <span class="ruby-string">"This is a test description"</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">files</span>.<span class="ruby-identifier">push</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">files</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">deps</span>
<span class="ruby-comment"># Since Hash#each is unordered in 1.8, sort the keys and iterate that</span>
<span class="ruby-comment"># way so the tests are deterministic on all implementations.</span>
<span class="ruby-identifier">deps</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_dependency</span> <span class="ruby-identifier">n</span>, (<span class="ruby-identifier">deps</span>[<span class="ruby-identifier">n</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'>= 0'</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">write_file</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_file</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">to_ruby_for_cache</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">util_build_gem</span> <span class="ruby-identifier">spec</span>
<span class="ruby-identifier">cache_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@tempdir</span>, <span class="ruby-string">'gems'</span>, <span class="ruby-node">"#{spec.full_name}.gem"</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mv</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">cache_file</span>, <span class="ruby-identifier">cache_file</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">spec_file</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-util_zip" class="method-detail ">
<div class="method-heading">
<span class="method-name">util_zip</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Deflates <code>data</code></p>
<div class="method-source-code" id="util_zip-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1066</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">util_zip</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">Deflate</span>.<span class="ruby-identifier">deflate</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-vc_windows-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">vc_windows?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns whether or not we're on a version of Ruby built with VC++ (or Borland) versus Cygwin, Mingw, etc.</p>
<div class="method-source-code" id="vc_windows-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1156</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vc_windows?</span>
<span class="ruby-constant">RUBY_PLATFORM</span>.<span class="ruby-identifier">match</span>(<span class="ruby-string">'mswin'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-vendordir" class="method-detail ">
<div class="method-heading">
<span class="method-name">vendordir</span><span
class="method-args">(value) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Sets the vendordir entry in RbConfig::CONFIG to <code>value</code> and restores the original value when the block ends</p>
<div class="method-source-code" id="vendordir-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 151</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vendordir</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">vendordir</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'vendordir'</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'vendordir'</span>] = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'vendordir'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">vendordir</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'vendordir'</span>] = <span class="ruby-identifier">vendordir</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>.<span class="ruby-identifier">delete</span> <span class="ruby-string">'vendordir'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-wait_for_child_process_to_exit" class="method-detail ">
<div class="method-heading">
<span class="method-name">wait_for_child_process_to_exit</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>In case we're building docs in a background process, this method waits for that process to exit (or if it's already been reaped, or never happened, swallows the Errno::ECHILD error).</p>
<div class="method-source-code" id="wait_for_child_process_to_exit-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1188</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">wait_for_child_process_to_exit</span>
<span class="ruby-constant">Process</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:fork</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ECHILD</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-win_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">win_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this test being run on a Windows platform?</p>
<div class="method-source-code" id="win_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1126</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">win_platform?</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">win_platform?</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-with_clean_path_to_ruby" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_clean_path_to_ruby</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="with_clean_path_to_ruby-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 1257</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_clean_path_to_ruby</span>
<span class="ruby-identifier">orig_ruby</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">ruby</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@ruby</span>, <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">instance_variable_set</span> <span class="ruby-value">:@ruby</span>, <span class="ruby-identifier">orig_ruby</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-write_file" class="method-detail ">
<div class="method-heading">
<span class="method-name">write_file</span><span
class="method-args">(path) { |io| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Writes a binary file to <code>path</code> which is relative to +@gemhome+</p>
<div class="method-source-code" id="write_file-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 635</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write_file</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-ivar">@gemhome</span>, <span class="ruby-identifier">path</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>).<span class="ruby-identifier">absolute?</span>
<span class="ruby-identifier">dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-identifier">path</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-identifier">dir</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span> <span class="ruby-identifier">dir</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">path</span>, <span class="ruby-string">'wb'</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">io</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>