blob: 8fcc7910611702be947dd18510387da60b2e80ab (
plain)
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
|
require "spec_helper"
describe "bundle binstubs <gem>" do
context "when the gem exists in the lockfile" do
it "sets up the binstub" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
G
bundle "binstubs rack"
expect(bundled_app("bin/rackup")).to exist
end
it "does not install other binstubs" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
gem "rails"
G
bundle "binstubs rails"
expect(bundled_app("bin/rackup")).not_to exist
expect(bundled_app("bin/rails")).to exist
end
it "does not bundle the bundler binary" do
install_gemfile <<-G
source "file://#{gem_repo1}"
G
bundle "binstubs bundler"
expect(bundled_app("bin/bundle")).not_to exist
expect(out).to eq("Skipping bundler since can't bundle bundler.")
end
it "install binstubs from git gems" do
FileUtils.mkdir_p(lib_path("foo/bin"))
FileUtils.touch(lib_path("foo/bin/foo"))
build_git "foo", "1.0", :path => lib_path("foo") do |s|
s.executables = %w(foo)
end
install_gemfile <<-G
gem "foo", :git => "#{lib_path('foo')}"
G
bundle "binstubs foo"
expect(bundled_app("bin/foo")).to exist
end
it "installs binstubs from path gems" do
FileUtils.mkdir_p(lib_path("foo/bin"))
FileUtils.touch(lib_path("foo/bin/foo"))
build_lib "foo" , "1.0", :path => lib_path("foo") do |s|
s.executables = %w(foo)
end
install_gemfile <<-G
gem "foo", :path => "#{lib_path('foo')}"
G
bundle "binstubs foo"
expect(bundled_app("bin/foo")).to exist
end
end
context "--binstubs" do
it "sets the binstubs dir" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
G
bundle "binstubs rack --binstubs exec"
expect(bundled_app("exec/rackup")).to exist
end
it "setting is saved for bundle install" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
gem "rails"
G
bundle "binstubs rack --binstubs exec"
bundle :install
expect(bundled_app("exec/rails")).to exist
end
end
context "when the bin already exists" do
it "don't override it and warn" do
FileUtils.mkdir_p(bundled_app("bin"))
File.open(bundled_app("bin/rackup"), 'wb') do |file|
file.print "OMG"
end
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
G
bundle "binstubs rack"
expect(bundled_app("bin/rackup")).to exist
expect(File.read(bundled_app("bin/rackup"))).to eq("OMG")
expect(out).to eq("Skipping rackup since it already exists. Pass --force to overwrite.")
end
context "when using --force" do
it "overrides the binstub" do
FileUtils.mkdir_p(bundled_app("bin"))
File.open(bundled_app("bin/rackup"), 'wb') do |file|
file.print "OMG"
end
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
G
bundle "binstubs rack --force"
expect(bundled_app("bin/rackup")).to exist
expect(File.read(bundled_app("bin/rackup"))).not_to eq("OMG")
end
end
end
end
|