|
8 | 8 | before do |
9 | 9 | # Oh no! Someone evil is trying to hijack myrack :( |
10 | 10 | # need this to be broken to check for correct source ordering |
11 | | - build_repo gem_repo3 do |
| 11 | + build_repo3 do |
12 | 12 | build_gem "myrack", repo3_myrack_version do |s| |
13 | 13 | s.write "lib/myrack.rb", "MYRACK = 'FAIL'" |
14 | 14 | end |
|
156 | 156 | before do |
157 | 157 | # Oh no! Someone evil is trying to hijack myrack :( |
158 | 158 | # need this to be broken to check for correct source ordering |
159 | | - build_repo gem_repo3 do |
| 159 | + build_repo3 do |
160 | 160 | build_gem "myrack", "1.0.0" do |s| |
161 | 161 | s.write "lib/myrack.rb", "MYRACK = 'FAIL'" |
162 | 162 | end |
|
200 | 200 | before do |
201 | 201 | # Oh no! Someone evil is trying to hijack myrack :( |
202 | 202 | # need this to be broken to check for correct source ordering |
203 | | - build_repo gem_repo3 do |
| 203 | + build_repo3 do |
204 | 204 | build_gem "myrack", "1.0.0" do |s| |
205 | 205 | s.write "lib/myrack.rb", "MYRACK = 'FAIL'" |
206 | 206 | end |
|
225 | 225 |
|
226 | 226 | context "when a pinned gem has an indirect dependency in the pinned source" do |
227 | 227 | before do |
228 | | - build_repo gem_repo3 do |
| 228 | + build_repo3 do |
229 | 229 | build_gem "depends_on_myrack", "1.0.1" do |s| |
230 | 230 | s.add_dependency "myrack" |
231 | 231 | end |
|
287 | 287 | before do |
288 | 288 | # In these tests, we need a working myrack gem in repo2 and not repo3 |
289 | 289 |
|
290 | | - build_repo gem_repo3 do |
| 290 | + build_repo3 do |
291 | 291 | build_gem "depends_on_myrack", "1.0.1" do |s| |
292 | 292 | s.add_dependency "myrack" |
293 | 293 | end |
|
502 | 502 | before do |
503 | 503 | build_repo2 |
504 | 504 |
|
505 | | - build_repo gem_repo3 do |
| 505 | + build_repo3 do |
506 | 506 | build_gem "private_gem_1", "1.0.0" |
507 | 507 | build_gem "private_gem_2", "1.0.0" |
508 | 508 | end |
|
528 | 528 | before do |
529 | 529 | build_repo2 |
530 | 530 |
|
531 | | - build_repo gem_repo3 do |
| 531 | + build_repo3 do |
532 | 532 | build_gem "depends_on_missing", "1.0.1" do |s| |
533 | 533 | s.add_dependency "missing" |
534 | 534 | end |
|
565 | 565 | end |
566 | 566 | end |
567 | 567 |
|
568 | | - build_repo gem_repo3 do |
| 568 | + build_repo3 do |
569 | 569 | build_gem "unrelated_gem", "1.0.0" |
570 | 570 | end |
571 | 571 |
|
|
645 | 645 |
|
646 | 646 | context "when a scoped gem has a deeply nested indirect dependency" do |
647 | 647 | before do |
648 | | - build_repo gem_repo3 do |
| 648 | + build_repo3 do |
649 | 649 | build_gem "depends_on_depends_on_myrack", "1.0.1" do |s| |
650 | 650 | s.add_dependency "depends_on_myrack" |
651 | 651 | end |
|
764 | 764 | build_gem "zeitwerk", "2.4.2" |
765 | 765 | end |
766 | 766 |
|
767 | | - build_repo gem_repo3 do |
| 767 | + build_repo3 do |
768 | 768 | build_gem "sidekiq-pro", "5.2.1" do |s| |
769 | 769 | s.add_dependency "connection_pool", ">= 2.2.3" |
770 | 770 | s.add_dependency "sidekiq", ">= 6.1.0" |
|
1080 | 1080 |
|
1081 | 1081 | context "when a pinned gem has an indirect dependency with more than one level of indirection in the default source " do |
1082 | 1082 | before do |
1083 | | - build_repo gem_repo3 do |
| 1083 | + build_repo3 do |
1084 | 1084 | build_gem "handsoap", "0.2.5.5" do |s| |
1085 | 1085 | s.add_dependency "nokogiri", ">= 1.2.3" |
1086 | 1086 | end |
|
1157 | 1157 |
|
1158 | 1158 | context "with a gem that is only found in the wrong source" do |
1159 | 1159 | before do |
1160 | | - build_repo gem_repo3 do |
| 1160 | + build_repo3 do |
1161 | 1161 | build_gem "not_in_repo1", "1.0.0" |
1162 | 1162 | end |
1163 | 1163 |
|
|
1250 | 1250 | end |
1251 | 1251 |
|
1252 | 1252 | before do |
1253 | | - build_repo gem_repo3 do |
| 1253 | + build_repo3 do |
1254 | 1254 | build_gem "myrack", "0.9.1" |
1255 | 1255 | end |
1256 | 1256 |
|
|
1393 | 1393 | context "re-resolving" do |
1394 | 1394 | context "when there is a mix of sources in the gemfile" do |
1395 | 1395 | before do |
1396 | | - build_repo gem_repo3 do |
| 1396 | + build_repo3 do |
1397 | 1397 | build_gem "myrack" |
1398 | 1398 | end |
1399 | 1399 |
|
|
1921 | 1921 | expect(err).to include("Could not find gem 'example' in rubygems repository https://gem.repo4/") |
1922 | 1922 | end |
1923 | 1923 | end |
| 1924 | + |
| 1925 | + context "when a gem has versions in two sources, but only the locked one has updates" do |
| 1926 | + let(:original_lockfile) do |
| 1927 | + <<~L |
| 1928 | + GEM |
| 1929 | + remote: https://main.source/ |
| 1930 | + specs: |
| 1931 | + activesupport (1.0) |
| 1932 | + bigdecimal |
| 1933 | + bigdecimal (1.0.0) |
| 1934 | +
|
| 1935 | + GEM |
| 1936 | + remote: https://main.source/extra/ |
| 1937 | + specs: |
| 1938 | + foo (1.0) |
| 1939 | + bigdecimal |
| 1940 | +
|
| 1941 | + PLATFORMS |
| 1942 | + #{lockfile_platforms} |
| 1943 | +
|
| 1944 | + DEPENDENCIES |
| 1945 | + activesupport |
| 1946 | + foo! |
| 1947 | +
|
| 1948 | + BUNDLED WITH |
| 1949 | + #{Bundler::VERSION} |
| 1950 | + L |
| 1951 | + end |
| 1952 | + |
| 1953 | + before do |
| 1954 | + build_repo3 do |
| 1955 | + build_gem "activesupport" do |s| |
| 1956 | + s.add_dependency "bigdecimal" |
| 1957 | + end |
| 1958 | + |
| 1959 | + build_gem "bigdecimal", "1.0.0" |
| 1960 | + build_gem "bigdecimal", "3.3.1" |
| 1961 | + end |
| 1962 | + |
| 1963 | + build_repo4 do |
| 1964 | + build_gem "foo" do |s| |
| 1965 | + s.add_dependency "bigdecimal" |
| 1966 | + end |
| 1967 | + |
| 1968 | + build_gem "bigdecimal", "1.0.0" |
| 1969 | + end |
| 1970 | + |
| 1971 | + gemfile <<~G |
| 1972 | + source "https://main.source" |
| 1973 | +
|
| 1974 | + gem "activesupport" |
| 1975 | +
|
| 1976 | + source "https://main.source/extra" do |
| 1977 | + gem "foo" |
| 1978 | + end |
| 1979 | + G |
| 1980 | + |
| 1981 | + lockfile original_lockfile |
| 1982 | + end |
| 1983 | + |
| 1984 | + it "properly upgrades the lockfile when updating that specific gem" do |
| 1985 | + bundle "update bigdecimal --conservative", artifice: "compact_index_extra_api", env: { "BUNDLER_SPEC_GEM_REPO" => gem_repo3.to_s } |
| 1986 | + |
| 1987 | + expect(lockfile).to eq original_lockfile.gsub("bigdecimal (1.0.0)", "bigdecimal (3.3.1)") |
| 1988 | + end |
| 1989 | + end |
1924 | 1990 | end |
0 commit comments