summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_indexer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems/test_gem_indexer.rb')
-rw-r--r--test/rubygems/test_gem_indexer.rb295
1 files changed, 47 insertions, 248 deletions
diff --git a/test/rubygems/test_gem_indexer.rb b/test/rubygems/test_gem_indexer.rb
index 6002cd8925..f942ebfadd 100644
--- a/test/rubygems/test_gem_indexer.rb
+++ b/test/rubygems/test_gem_indexer.rb
@@ -24,22 +24,13 @@ class TestGemIndexer < Gem::TestCase
@d2_0_b = quick_spec 'd', '2.0.b'
util_build_gem @d2_0_b
- @_tempdir = @tempdir
@tempdir = File.join(@tempdir, 'indexer')
gems = File.join(@tempdir, 'gems')
FileUtils.mkdir_p gems
FileUtils.mv Dir[File.join(@gemhome, "cache", '*.gem')], gems
- @indexer = Gem::Indexer.new(@tempdir,
- :rss_title => 'ExampleForge gems',
- :rss_host => 'example.com',
- :rss_gems_host => 'gems.example.com')
- end
-
- def teardown
- @tempdir = @_tempdir
- super
+ @indexer = Gem::Indexer.new(@tempdir)
end
def test_initialize
@@ -48,18 +39,10 @@ class TestGemIndexer < Gem::TestCase
@indexer.directory
indexer = Gem::Indexer.new @tempdir
- assert indexer.build_legacy
assert indexer.build_modern
- indexer = Gem::Indexer.new @tempdir, :build_legacy => false,
- :build_modern => true
- refute indexer.build_legacy
+ indexer = Gem::Indexer.new @tempdir, :build_modern => true
assert indexer.build_modern
-
- indexer = Gem::Indexer.new @tempdir, :build_legacy => true,
- :build_modern => false
- assert indexer.build_legacy
- refute indexer.build_modern
end
def test_build_indicies
@@ -79,7 +62,9 @@ class TestGemIndexer < Gem::TestCase
["b", Gem::Version.new("2"), "ruby"],
["c", Gem::Version.new("1.2"), "ruby"],
["d", Gem::Version.new("2.0"), "ruby"],
- ["pl", Gem::Version.new("1"), "i386-linux"]]
+ ["dep_x", Gem::Version.new("1"), "ruby"],
+ ["pl", Gem::Version.new("1"), "i386-linux"],
+ ["x", Gem::Version.new("1"), "ruby"]]
assert_equal expected, specs
@@ -93,7 +78,9 @@ class TestGemIndexer < Gem::TestCase
["b", Gem::Version.new("2"), "ruby"],
["c", Gem::Version.new("1.2"), "ruby"],
["d", Gem::Version.new("2.0"), "ruby"],
- ["pl", Gem::Version.new("1"), "i386-linux"]]
+ ["dep_x", Gem::Version.new("1"), "ruby"],
+ ["pl", Gem::Version.new("1"), "i386-linux"],
+ ["x", Gem::Version.new("1"), "ruby"]]
assert_equal expected, latest_specs, 'latest_specs'
end
@@ -103,9 +90,6 @@ class TestGemIndexer < Gem::TestCase
@indexer.generate_index
end
- assert_indexed @tempdir, "Marshal.#{@marshal_version}"
- assert_indexed @tempdir, "Marshal.#{@marshal_version}.Z"
-
quickdir = File.join @tempdir, 'quick'
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
@@ -122,208 +106,10 @@ class TestGemIndexer < Gem::TestCase
assert_indexed @tempdir, "latest_specs.#{@marshal_version}"
assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
-
- expected = <<-EOF
-<?xml version=\"1.0\"?>
-<rss version=\"2.0\">
- <channel>
- <title>ExampleForge gems</title>
- <link>http://example.com</link>
- <description>Recently released gems from http://example.com</description>
- <generator>RubyGems v#{Gem::VERSION}</generator>
- <docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
- <item>
- <title>a-2</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>a-2</guid>
- <enclosure url=\"http://gems.example.com/gems/a-2.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@a2.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>a-3.a</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>a-3.a</guid>
- <enclosure url=\"http://gems.example.com/gems/a-3.a.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@a3a.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>a_evil-9</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>a_evil-9</guid>
- <enclosure url=\"http://gems.example.com/gems/a_evil-9.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@a_evil9.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>b-2</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>b-2</guid>
- <enclosure url=\"http://gems.example.com/gems/b-2.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@b2.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>c-1.2</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>c-1.2</guid>
- <enclosure url=\"http://gems.example.com/gems/c-1.2.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@c1_2.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>d-2.0.a</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>d-2.0.a</guid>
- <enclosure url=\"http://gems.example.com/gems/d-2.0.a.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@d2_0_a.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>d-2.0.b</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>d-2.0.b</guid>
- <enclosure url=\"http://gems.example.com/gems/d-2.0.b.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@d2_0_b.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>pl-1-x86-linux</title>
- <description>
-&lt;pre&gt;This is a test description&lt;/pre&gt;
- </description>
- <author>example@example.com (A User)</author>
- <guid>pl-1-x86-linux</guid>
- <enclosure url=\"http://gems.example.com/gems/pl-1-x86-linux.gem\"
- length=\"3072\" type=\"application/octet-stream\" />
- <pubDate>#{@pl1.date.rfc2822}</pubDate>
- <link>http://example.com</link>
- </item>
- <item>
- <title>a-1</title>
- <description>
-&lt;pre&gt;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.&lt;/pre&gt;
- </description>
- <author>example@example.com (Example), example2@example.com (Example2)</author>
- <guid>a-1</guid>
- <enclosure url=\"http://gems.example.com/gems/a-1.gem\"
- length=\"3584\" type=\"application/octet-stream\" />
- <pubDate>#{@a1.date.rfc2822}</pubDate>
- <link>http://a.example.com</link>
- </item>
- </channel>
-</rss>
- EOF
-
- gems_rss = File.read File.join(@tempdir, 'index.rss')
-
- assert_equal expected, gems_rss
- end
-
- def test_generate_index_legacy
- @indexer.build_modern = false
- @indexer.build_legacy = true
-
- use_ui @ui do
- @indexer.generate_index
- end
-
- assert_indexed @tempdir, "Marshal.#{@marshal_version}"
- assert_indexed @tempdir, "Marshal.#{@marshal_version}.Z"
-
- quickdir = File.join @tempdir, 'quick'
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
-
- assert File.directory?(quickdir)
- assert File.directory?(marshal_quickdir)
-
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
-
- refute_indexed marshal_quickdir, "#{File.basename(@c1_2.spec_file)}"
-
- refute_indexed @tempdir, "specs.#{@marshal_version}"
- refute_indexed @tempdir, "specs.#{@marshal_version}.gz"
-
- refute_indexed @tempdir, "latest_specs.#{@marshal_version}"
- refute_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
- end
-
- def test_generate_index_legacy_back_to_back
- @indexer.build_modern = true
- @indexer.build_legacy = true
-
- use_ui @ui do
- @indexer.generate_index
- end
-
- @indexer = Gem::Indexer.new @tempdir
- @indexer.build_modern = false
- @indexer.build_legacy = true
-
- use_ui @ui do
- @indexer.generate_index
- end
-
- assert_indexed @tempdir, "Marshal.#{@marshal_version}"
- assert_indexed @tempdir, "Marshal.#{@marshal_version}.Z"
-
- quickdir = File.join @tempdir, 'quick'
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
-
- assert File.directory?(marshal_quickdir)
-
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
-
- assert_indexed @tempdir, "specs.#{@marshal_version}"
- assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
-
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}"
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
end
def test_generate_index_modern
@indexer.build_modern = true
- @indexer.build_legacy = false
use_ui @ui do
@indexer.generate_index
@@ -369,7 +155,6 @@ eighty characters.&lt;/pre&gt;
def test_generate_index_modern_back_to_back
@indexer.build_modern = true
- @indexer.build_legacy = true
use_ui @ui do
@indexer.generate_index
@@ -377,15 +162,10 @@ eighty characters.&lt;/pre&gt;
@indexer = Gem::Indexer.new @tempdir
@indexer.build_modern = true
- @indexer.build_legacy = false
use_ui @ui do
@indexer.generate_index
end
-
- assert_indexed @tempdir, "Marshal.#{@marshal_version}"
- assert_indexed @tempdir, "Marshal.#{@marshal_version}.Z"
-
quickdir = File.join @tempdir, 'quick'
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
@@ -407,14 +187,13 @@ eighty characters.&lt;/pre&gt;
@indexer.generate_index
end
- assert_match %r%^\.\.\.\.\.\.\.\.\.\.$%, @ui.output
- assert_match %r%^Generating Marshal quick index gemspecs for 10 gems$%,
+ assert_match %r%^\.\.\.\.\.\.\.\.\.\.\.\.$%, @ui.output
+ assert_match %r%^Generating Marshal quick index gemspecs for 12 gems$%,
@ui.output
assert_match %r%^Complete$%, @ui.output
assert_match %r%^Generating specs index$%, @ui.output
assert_match %r%^Generating latest specs index$%, @ui.output
assert_match %r%^Generating prerelease specs index$%, @ui.output
- assert_match %r%^Generating Marshal master index$%, @ui.output
assert_match %r%^Complete$%, @ui.output
assert_match %r%^Compressing indicies$%, @ui.output
@@ -438,7 +217,9 @@ eighty characters.&lt;/pre&gt;
['b', Gem::Version.new(2), 'ruby'],
['c', Gem::Version.new('1.2'), 'ruby'],
['d', Gem::Version.new('2.0'), 'ruby'],
+ ['dep_x', Gem::Version.new(1), 'ruby'],
['pl', Gem::Version.new(1), 'i386-linux'],
+ ['x', Gem::Version.new(1), 'ruby'],
]
assert_equal expected, specs
@@ -472,7 +253,9 @@ eighty characters.&lt;/pre&gt;
['b', Gem::Version.new(2), 'ruby'],
['c', Gem::Version.new('1.2'), 'ruby'],
['d', Gem::Version.new('2.0'), 'ruby'],
+ ['dep_x', Gem::Version.new(1), 'ruby'],
['pl', Gem::Version.new(1), 'i386-linux'],
+ ['x', Gem::Version.new(1), 'ruby'],
]
assert_equal expected, latest_specs
@@ -500,6 +283,20 @@ eighty characters.&lt;/pre&gt;
prerelease_specs
end
+ ##
+ # Emulate the starting state of Gem::Specification in a live environment,
+ # where it will carry the list of system gems
+ def with_system_gems
+ Gem::Specification.reset
+
+ sys_gem = quick_spec 'systemgem', '1.0'
+ util_build_gem sys_gem
+ Gem::Specification.add_spec sys_gem
+ yield
+ util_remove_gem sys_gem
+ end
+
+
def test_update_index
use_ui @ui do
@indexer.generate_index
@@ -524,30 +321,32 @@ eighty characters.&lt;/pre&gt;
FileUtils.mv @d2_1.cache_file, gems
FileUtils.mv @d2_1_a.cache_file, gems
- use_ui @ui do
- @indexer.update_index
- end
+ with_system_gems do
+ use_ui @ui do
+ @indexer.update_index
+ end
- assert_indexed marshal_quickdir, "#{File.basename(@d2_1.spec_file)}.rz"
+ assert_indexed marshal_quickdir, "#{File.basename(@d2_1.spec_file)}.rz"
- specs_index = Marshal.load Gem.read_binary(@indexer.dest_specs_index)
+ specs_index = Marshal.load Gem.read_binary(@indexer.dest_specs_index)
- assert_includes specs_index, @d2_1_tuple
- refute_includes specs_index, @d2_1_a_tuple
+ assert_includes specs_index, @d2_1_tuple
+ refute_includes specs_index, @d2_1_a_tuple
- latest_specs_index = Marshal.load \
- Gem.read_binary(@indexer.dest_latest_specs_index)
+ latest_specs_index = Marshal.load \
+ Gem.read_binary(@indexer.dest_latest_specs_index)
- assert_includes latest_specs_index, @d2_1_tuple
- assert_includes latest_specs_index,
- [@d2_0.name, @d2_0.version, @d2_0.original_platform]
- refute_includes latest_specs_index, @d2_1_a_tuple
+ assert_includes latest_specs_index, @d2_1_tuple
+ assert_includes latest_specs_index,
+ [@d2_0.name, @d2_0.version, @d2_0.original_platform]
+ refute_includes latest_specs_index, @d2_1_a_tuple
- pre_specs_index = Marshal.load \
- Gem.read_binary(@indexer.dest_prerelease_specs_index)
+ pre_specs_index = Marshal.load \
+ Gem.read_binary(@indexer.dest_prerelease_specs_index)
- assert_includes pre_specs_index, @d2_1_a_tuple
- refute_includes pre_specs_index, @d2_1_tuple
+ assert_includes pre_specs_index, @d2_1_a_tuple
+ refute_includes pre_specs_index, @d2_1_tuple
+ end
end
def assert_indexed(dir, name)