1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
require "spec_helper"
describe "bundle update" do
before :each do
build_repo2
install_gemfile <<-G
source "file://#{gem_repo2}"
gem "activesupport"
gem "rack-obama"
G
end
describe "with no arguments" do
it "updates the entire bundle" do
update_repo2 do
build_gem "activesupport", "3.0"
end
bundle "update"
should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 3.0"
end
it "doesn't delete the Gemfile.lock file if something goes wrong" do
gemfile <<-G
source "file://#{gem_repo2}"
gem "activesupport"
gem "rack-obama"
exit!
G
bundle "update"
expect(bundled_app("Gemfile.lock")).to exist
end
end
describe "--quiet argument" do
it 'shows UI messages without --quiet argument' do
bundle "update"
expect(out).to include("Fetching source")
end
it 'does not show UI messages with --quiet argument' do
bundle "update --quiet"
expect(out).not_to include("Fetching source")
end
end
describe "with a top level dependency" do
it "unlocks all child dependencies that are unrelated to other locked dependencies" do
update_repo2 do
build_gem "activesupport", "3.0"
end
bundle "update rack-obama"
should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 2.3.5"
end
end
describe "with a unknown dependency" do
it "should inform the user" do
bundle "update halting-problem-solver", :expect_err=>true
expect(out).to include "Could not find gem 'halting-problem-solver'"
end
it "should suggest alternatives" do
bundle "update active-support", :expect_err=>true
expect(out).to include "Did you mean activesupport?"
end
end
describe "with --local option" do
it "doesn't hit repo2" do
FileUtils.rm_rf(gem_repo2)
bundle "update --local"
expect(out).not_to match(/Fetching source index/)
end
end
end
describe "bundle update in more complicated situations" do
before :each do
build_repo2
end
it "will eagerly unlock dependencies of a specified gem" do
install_gemfile <<-G
source "file://#{gem_repo2}"
gem "thin"
gem "rack-obama"
G
update_repo2 do
build_gem "thin" , '2.0' do |s|
s.add_dependency "rack"
end
end
bundle "update thin"
should_be_installed "thin 2.0", "rack 1.2", "rack-obama 1.0"
end
end
describe "bundle update without a Gemfile.lock" do
it "should not explode" do
build_repo2
gemfile <<-G
source "file://#{gem_repo2}"
gem "rack", "1.0"
G
bundle "update"
should_be_installed "rack 1.0.0"
end
end
describe "bundle update when a gem depends on a newer version of bundler" do
before(:each) do
build_repo2 do
build_gem "rails", "3.0.1" do |s|
s.add_dependency "bundler", Bundler::VERSION.succ
end
end
gemfile <<-G
source "file://#{gem_repo2}"
gem "rails", "3.0.1"
G
end
it "should not explode" do
bundle "update"
expect(err).to be_empty
end
it "should explain that bundler conflicted" do
bundle "update"
expect(out).not_to match(/in snapshot/i)
expect(out).to match(/current Bundler version/i)
expect(out).to match(/perhaps you need to update bundler/i)
end
end
|