diff options
Diffstat (limited to 'test/rubygems/test_gem_indexer.rb')
-rw-r--r-- | test/rubygems/test_gem_indexer.rb | 295 |
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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>This is a test description</pre> - </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> -<pre>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.</pre> - </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.</pre> 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.</pre> @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.</pre> @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.</pre> ['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.</pre> ['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.</pre> 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.</pre> 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) |