diff options
| author | Martin Emde <me@martinemde.com> | 2024-05-30 21:37:24 -0700 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-05-31 20:20:03 +0000 |
| commit | bc40d0609177cd60ba1bc4fd915e03e917c0b79c (patch) | |
| tree | 1dd1b74d97bb52f0a98109e6272557ff337dc187 /spec | |
| parent | b5c8fb9a3f1ee8a38a04a3c96b7da5bf6c4c23ac (diff) | |
[rubygems/rubygems] String search based parsing of compact index versions
This significantly reduces memory usage.
https://github.com/rubygems/rubygems/commit/8a76506c90
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/bundler/bundler/compact_index_client/parser_spec.rb | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/spec/bundler/bundler/compact_index_client/parser_spec.rb b/spec/bundler/bundler/compact_index_client/parser_spec.rb index 1d1d41a5a8..45a08fd9ff 100644 --- a/spec/bundler/bundler/compact_index_client/parser_spec.rb +++ b/spec/bundler/bundler/compact_index_client/parser_spec.rb @@ -20,7 +20,9 @@ RSpec.describe Bundler::CompactIndexClient::Parser do let(:compact_index) { TestCompactIndexClient.new(names, versions, info_data) } let(:names) { "a\nb\nc\n" } - let(:versions) { <<~VERSIONS } + let(:versions) { <<~VERSIONS.dup } + created_at: 2024-05-01T00:00:04Z + --- a 1.0.0,1.0.1,1.1.0 aaa111 b 2.0.0,2.0.0-java bbb222 c 3.0.0,3.0.3,3.3.3 ccc333 @@ -33,7 +35,8 @@ RSpec.describe Bundler::CompactIndexClient::Parser do "c" => { "ccc333yanked" => c_info }, } end - let(:a_info) { <<~INFO } + let(:a_info) { <<~INFO.dup } + --- 1.0.0 |checksum:aaa1,ruby:>= 3.0.0,rubygems:>= 3.2.3 1.0.1 |checksum:aaa2,ruby:>= 3.0.0,rubygems:>= 3.2.3 1.1.0 |checksum:aaa3,ruby:>= 3.0.0,rubygems:>= 3.2.3 @@ -52,10 +55,45 @@ RSpec.describe Bundler::CompactIndexClient::Parser do expect(parser).to be_available end - it "returns false when versions are not available" do + it "returns true when versions has only one gem" do + compact_index.versions = +"a 1.0.0 aaa1\n" + expect(parser).to be_available + end + + it "returns true when versions has a gem and a header" do + compact_index.versions = +"---\na 1.0.0 aaa1\n" + expect(parser).to be_available + end + + it "returns true when versions has a gem and a header with header data" do + compact_index.versions = +"created_at: 2024-05-01T00:00:04Z\n---\na 1.0.0 aaa1\n" + expect(parser).to be_available + end + + it "returns false when versions has only the header" do + compact_index.versions = +"---\n" + expect(parser).not_to be_available + end + + it "returns false when versions has only the header with header data" do + compact_index.versions = +"created_at: 2024-05-01T00:00:04Z\n---\n" + expect(parser).not_to be_available + end + + it "returns false when versions index is not available" do compact_index.versions = nil expect(parser).not_to be_available end + + it "returns false when versions is empty" do + compact_index.versions = +"" + expect(parser).not_to be_available + end + + it "returns false when versions ends improperly without a newline" do + compact_index.versions = "a 1.0.0 aaa1" + expect(parser).not_to be_available + end end describe "#names" do |
