bundler_ext 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.rspec +1 -1
- data/CHANGELOG +25 -0
- data/lib/bundler_ext/version.rb +1 -1
- data/spec/bundler_ext/bundler_ext_spec.rb +26 -26
- data/spec/bundler_ext/gemfile_spec.rb +33 -34
- data/spec/bundler_ext/integration_spec.rb +30 -29
- data/spec/bundler_ext/runtime_spec.rb +36 -36
- data/spec/bundler_ext/system_spec.rb +27 -31
- metadata +31 -13
- data/lib/bundler_ext/setup.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 231e9a2fab9c5f11cd70a494ac3be9b6dfa7d4b06a9426f416d2acaf511f6cd1
|
4
|
+
data.tar.gz: 81eafc716126fdbcc6ecec515283970b9b7442dba2a94f8c02eaf47b8aba5c4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd7ffbb8314041170c0ea1d0d43b12683c2da415ade6b4d22613ff705f40ccee253b84bc2410fd88273af214f69e23111f43fdc39f3b130de2b7017e7bd39c4
|
7
|
+
data.tar.gz: a5478231a4f88594a43086e07a723bbde6e38cc519c774d91d71ba479d162f686a2c246b83842c4ce60b802c4bc08f40de5a784dcf8523e997d3bea0867dde49
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--colour
|
2
|
-
--format
|
2
|
+
--format documentation
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
====== version 0.4.2 =========
|
2
|
+
|
3
|
+
Vít Ondruch (2020-09-16)
|
4
|
+
- Fix Bundler 1.8.1+ test failures
|
5
|
+
|
6
|
+
Ewoud Kohl van Wijngaarden (2022-07-12)
|
7
|
+
- Update test suite to rspec 3
|
8
|
+
- Correct expectations for modern Bundler output
|
9
|
+
- Add CI using GitHub Actions
|
10
|
+
|
11
|
+
====== version 0.4.1 =========
|
12
|
+
|
13
|
+
Lukas Zapletal (2014-06-09)
|
14
|
+
- Fix loading of namespaced gems
|
15
|
+
- Add BEXT_VERBOSE environment variable
|
16
|
+
|
17
|
+
====== version 0.4.0 =========
|
18
|
+
|
19
|
+
Mo Morsi (2013-12-19)
|
20
|
+
- Refactored into smaller modules
|
21
|
+
- Drop linux_admin dependency
|
22
|
+
- Add BundlerExt#system_setup analogous to Bundler#setup
|
23
|
+
- Update README
|
24
|
+
- Improve test coverage
|
25
|
+
|
1
26
|
====== version 0.3.2 =========
|
2
27
|
|
3
28
|
Mo Morsi (2013-11-19)
|
data/lib/bundler_ext/version.rb
CHANGED
@@ -4,19 +4,19 @@ require 'bundler_ext'
|
|
4
4
|
describe BundlerExt do
|
5
5
|
describe "#runtime" do
|
6
6
|
it "returns handle to runtime instance" do
|
7
|
-
described_class.runtime.
|
8
|
-
described_class.runtime.
|
7
|
+
expect(described_class.runtime).to be_an_instance_of(BundlerExt::Runtime)
|
8
|
+
expect(described_class.runtime).to eq(described_class.runtime)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "#system_require" do
|
13
13
|
it "sets up runtime env" do
|
14
|
-
described_class.runtime.
|
14
|
+
expect(described_class.runtime).to receive(:setup_env)
|
15
15
|
described_class.system_require('spec/fixtures/Gemfile.in')
|
16
16
|
end
|
17
17
|
|
18
18
|
it "parses specified gemfile" do
|
19
|
-
BundlerExt::Gemfile.
|
19
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
20
20
|
with('spec/fixtures/Gemfile.in', *['mygroups']).
|
21
21
|
and_call_original
|
22
22
|
described_class.system_require('spec/fixtures/Gemfile.in', 'mygroups')
|
@@ -24,52 +24,52 @@ describe BundlerExt do
|
|
24
24
|
|
25
25
|
context "System.activate? is true" do
|
26
26
|
it "activates system dependencies" do
|
27
|
-
BundlerExt::Gemfile.
|
27
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
28
28
|
and_return({'rails' => {:files => []}})
|
29
|
-
BundlerExt::System.
|
30
|
-
BundlerExt::System.
|
29
|
+
expect(BundlerExt::System).to receive(:activate?).and_return(true)
|
30
|
+
expect(BundlerExt::System).to receive(:activate!).with('rails')
|
31
31
|
described_class.system_require('my_gemfile')
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
it "requires dependency files" do
|
36
36
|
files = ['rails-includes']
|
37
|
-
BundlerExt::Gemfile.
|
37
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
38
38
|
and_return({'rails' => {:files => files}})
|
39
|
-
described_class.runtime.
|
39
|
+
expect(described_class.runtime).to receive(:system_require).with(files)
|
40
40
|
described_class.system_require('my_gemfile')
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
describe "#system_setup" do
|
45
45
|
it "sets up gemfile env" do
|
46
|
-
BundlerExt::Gemfile.
|
46
|
+
expect(BundlerExt::Gemfile).to receive(:setup_env).
|
47
47
|
with('spec/fixtures/Gemfile.in').at_least(:once)
|
48
|
-
described_class.runtime.
|
48
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
49
49
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
50
50
|
end
|
51
51
|
|
52
52
|
it "sets runtime gemfile" do
|
53
|
-
described_class.runtime.
|
53
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
54
54
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
55
|
-
described_class.runtime.gemfile.to_s.
|
55
|
+
expect(described_class.runtime.gemfile.to_s).to eq('spec/fixtures/Gemfile.in')
|
56
56
|
end
|
57
57
|
|
58
58
|
it "sets up runtime env" do
|
59
|
-
described_class.runtime.
|
60
|
-
described_class.runtime.
|
59
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
60
|
+
expect(described_class.runtime).to receive(:setup_env)
|
61
61
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
62
62
|
end
|
63
63
|
|
64
64
|
it "clears runtime" do
|
65
|
-
described_class.runtime.
|
66
|
-
described_class.runtime.
|
65
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
66
|
+
expect(described_class.runtime).to receive(:setup_env)
|
67
67
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
68
68
|
end
|
69
69
|
|
70
70
|
it "parses specified gemfile" do
|
71
|
-
described_class.runtime.
|
72
|
-
BundlerExt::Gemfile.
|
71
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
72
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
73
73
|
with('spec/fixtures/Gemfile.in', *['mygroups']).
|
74
74
|
and_call_original
|
75
75
|
described_class.system_setup('spec/fixtures/Gemfile.in', 'mygroups')
|
@@ -77,21 +77,21 @@ describe BundlerExt do
|
|
77
77
|
|
78
78
|
context "System.activate? is true" do
|
79
79
|
it "activates system dependencies" do
|
80
|
-
described_class.runtime.
|
81
|
-
BundlerExt::Gemfile.
|
80
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
81
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
82
82
|
and_return({'rails' => {:dep => ::Gem::Dependency.new('rails')}})
|
83
|
-
BundlerExt::System.
|
84
|
-
BundlerExt::System.
|
83
|
+
expect(BundlerExt::System).to receive(:activate?).and_return(true)
|
84
|
+
expect(BundlerExt::System).to receive(:activate!).with('rails')
|
85
85
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
it "adds dependency specs to runtime" do
|
90
90
|
dep = ::Gem::Dependency.new('rails')
|
91
|
-
described_class.runtime.
|
92
|
-
BundlerExt::Gemfile.
|
91
|
+
expect(described_class.runtime).to receive(:clear) # stub out clear
|
92
|
+
expect(BundlerExt::Gemfile).to receive(:parse).
|
93
93
|
and_return({'rails' => {:dep => dep}})
|
94
|
-
described_class.runtime.
|
94
|
+
expect(described_class.runtime).to receive(:add_spec).with(dep.to_spec())
|
95
95
|
described_class.system_setup('spec/fixtures/Gemfile.in')
|
96
96
|
end
|
97
97
|
end
|
@@ -12,7 +12,7 @@ module BundlerExt
|
|
12
12
|
|
13
13
|
it "sets BUNDLE_GEMFILE env varialbe" do
|
14
14
|
described_class.setup_env('Gemfile.custom')
|
15
|
-
ENV['BUNDLE_GEMFILE'].
|
15
|
+
expect(ENV['BUNDLE_GEMFILE']).to eq('Gemfile.custom')
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -26,39 +26,39 @@ module BundlerExt
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "converts specified groups to symbols" do
|
29
|
-
described_class.parse_env(['development', 'test'])[:groups].
|
29
|
+
expect(described_class.parse_env(['development', 'test'])[:groups]).to eq([:development, :test])
|
30
30
|
end
|
31
31
|
|
32
32
|
it "retrieves extra groups from BUNDLER_EXT_GROUPS env variable" do
|
33
33
|
ENV['BUNDLER_EXT_GROUPS'] = 'development test'
|
34
34
|
env = described_class.parse_env([])
|
35
|
-
env[:groups].
|
36
|
-
env[:extra_groups].
|
35
|
+
expect(env[:groups]).to eq([:development, :test])
|
36
|
+
expect(env[:extra_groups]).to eq('development test')
|
37
37
|
end
|
38
38
|
|
39
39
|
it "retrieves extra groups from BEXT_GROUPS env variable" do
|
40
40
|
ENV['BEXT_GROUPS'] = 'development test'
|
41
41
|
env = described_class.parse_env([])
|
42
|
-
env[:groups].
|
43
|
-
env[:extra_groups].
|
42
|
+
expect(env[:groups]).to eq([:development, :test])
|
43
|
+
expect(env[:extra_groups]).to eq('development test')
|
44
44
|
end
|
45
45
|
|
46
46
|
context "groups == [:all] and no extra groups specified" do
|
47
47
|
it "sets all_groups true" do
|
48
|
-
described_class.parse_env([:all])[:all_groups].
|
48
|
+
expect(described_class.parse_env([:all])[:all_groups]).to be true
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
context "groups != [:all]" do
|
53
53
|
it "sets all_groups false" do
|
54
|
-
described_class.parse_env([:dev])[:all_groups].
|
54
|
+
expect(described_class.parse_env([:dev])[:all_groups]).to be false
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
context "extra groups specified" do
|
59
59
|
it "sets all_groups false" do
|
60
60
|
ENV['BEXT_GROUPS'] = 'development'
|
61
|
-
described_class.parse_env([:all])[:all_groups].
|
61
|
+
expect(described_class.parse_env([:all])[:all_groups]).to be false
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -72,8 +72,8 @@ module BundlerExt
|
|
72
72
|
context "dep.current_platform? is false" do
|
73
73
|
it "returns false" do
|
74
74
|
@env[:all_groups] = true
|
75
|
-
@dep.
|
76
|
-
described_class.dependency_in_env?(@dep, @env).
|
75
|
+
expect(@dep).to receive(:current_platform?).and_return(false)
|
76
|
+
expect(described_class.dependency_in_env?(@dep, @env)).to be false
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -81,15 +81,15 @@ module BundlerExt
|
|
81
81
|
it "returns false" do
|
82
82
|
@env[:all_groups] = false
|
83
83
|
@env[:groups] << :dev
|
84
|
-
described_class.dependency_in_env?(@dep, @env).
|
84
|
+
expect(described_class.dependency_in_env?(@dep, @env)).to be false
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
88
|
context ":all_groups and dep.current_platform? are true" do
|
89
89
|
it "returns true" do
|
90
90
|
@env[:all_groups] = true
|
91
|
-
@dep.
|
92
|
-
described_class.dependency_in_env?(@dep, @env).
|
91
|
+
expect(@dep).to receive(:current_platform?).and_return(true)
|
92
|
+
expect(described_class.dependency_in_env?(@dep, @env)).to be true
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -97,8 +97,8 @@ module BundlerExt
|
|
97
97
|
it "returns true" do
|
98
98
|
@env[:groups] << :dev
|
99
99
|
@dep.groups << :dev
|
100
|
-
@dep.
|
101
|
-
described_class.dependency_in_env?(@dep, @env).
|
100
|
+
expect(@dep).to receive(:current_platform?).and_return(true)
|
101
|
+
expect(described_class.dependency_in_env?(@dep, @env)).to be true
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -107,15 +107,15 @@ module BundlerExt
|
|
107
107
|
context "dependency in env" do
|
108
108
|
it "returns dependency autorequires" do
|
109
109
|
dep = Bundler::Dependency.new 'rake', '1.0.0', 'require' => [:foo]
|
110
|
-
described_class.
|
111
|
-
described_class.files_for_dependency(dep, {}).
|
110
|
+
expect(described_class).to receive(:dependency_in_env?).and_return(true)
|
111
|
+
expect(described_class.files_for_dependency(dep, {})).to eq([:foo])
|
112
112
|
end
|
113
113
|
|
114
114
|
context "autorequires is nil" do
|
115
115
|
it("returns depenency name") do
|
116
116
|
dep = Bundler::Dependency.new 'rake', '1.0.0'
|
117
|
-
described_class.
|
118
|
-
described_class.files_for_dependency(dep, {}).
|
117
|
+
expect(described_class).to receive(:dependency_in_env?).and_return(true)
|
118
|
+
expect(described_class.files_for_dependency(dep, {})).to eq(['rake'])
|
119
119
|
end
|
120
120
|
end
|
121
121
|
end
|
@@ -123,8 +123,8 @@ module BundlerExt
|
|
123
123
|
context "dependency not in env" do
|
124
124
|
it "returns empty array" do
|
125
125
|
dep = Bundler::Dependency.new 'rake', '1.0.0'
|
126
|
-
described_class.
|
127
|
-
described_class.files_for_dependency(dep, {}).
|
126
|
+
expect(described_class).to receive(:dependency_in_env?).and_return(false)
|
127
|
+
expect(described_class.files_for_dependency(dep, {})).to eq([])
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
@@ -134,7 +134,7 @@ module BundlerExt
|
|
134
134
|
ENV['BUNDLE_GEMFILE'] = 'spec/fixtures/Gemfile.in'
|
135
135
|
@dep = Bundler::Dependency.new 'rake', '1.0.0'
|
136
136
|
@gemfile = Bundler::Dsl.evaluate 'spec/fixtures/Gemfile.in', nil, true
|
137
|
-
@gemfile.
|
137
|
+
expect(@gemfile).to receive(:dependencies).and_return([@dep])
|
138
138
|
end
|
139
139
|
|
140
140
|
after(:each) do
|
@@ -142,14 +142,13 @@ module BundlerExt
|
|
142
142
|
end
|
143
143
|
|
144
144
|
it "returns gemfile dependencies with files" do
|
145
|
-
described_class.
|
146
|
-
described_class.process(@gemfile, {}).
|
147
|
-
{'rake' => {:dep => @dep, :files => [:files]}}
|
145
|
+
expect(described_class).to receive(:files_for_dependency).and_return([:files])
|
146
|
+
expect(described_class.process(@gemfile, {})).to eq({'rake' => {:dep => @dep, :files => [:files]}})
|
148
147
|
end
|
149
148
|
|
150
149
|
it "does not return gemfile dependencies without files" do
|
151
|
-
described_class.
|
152
|
-
described_class.process(@gemfile, {}).
|
150
|
+
expect(described_class).to receive(:files_for_dependency).and_return([])
|
151
|
+
expect(described_class.process(@gemfile, {})).to eq({})
|
153
152
|
end
|
154
153
|
end
|
155
154
|
|
@@ -164,26 +163,26 @@ module BundlerExt
|
|
164
163
|
end
|
165
164
|
|
166
165
|
it "sets up env for gemfile" do
|
167
|
-
described_class.
|
166
|
+
expect(described_class).to receive(:setup_env).with(@gemfile)
|
168
167
|
described_class.parse(@gemfile)
|
169
168
|
end
|
170
169
|
|
171
170
|
it "retrieves env configured by gemfile" do
|
172
|
-
described_class.
|
171
|
+
expect(described_class).to receive(:parse_env).with([:test]).and_call_original
|
173
172
|
described_class.parse(@gemfile, :test)
|
174
173
|
end
|
175
174
|
|
176
175
|
it "evaluates gemfile with bundler dsl" do
|
177
|
-
Bundler::Dsl.
|
176
|
+
expect(Bundler::Dsl).to receive(:evaluate).with(@gemfile, nil, true).and_call_original
|
178
177
|
described_class.parse(@gemfile, :test)
|
179
178
|
end
|
180
179
|
|
181
180
|
it "processes gemfile / returns results" do
|
182
181
|
env = Object.new
|
183
182
|
gemfile = Object.new
|
184
|
-
described_class.
|
185
|
-
Bundler::Dsl.
|
186
|
-
described_class.
|
183
|
+
expect(described_class).to receive(:parse_env).and_return(env)
|
184
|
+
expect(Bundler::Dsl).to receive(:evaluate).and_return(gemfile)
|
185
|
+
expect(described_class).to receive(:process).with(gemfile, env)
|
187
186
|
described_class.parse(@gemfile, :test)
|
188
187
|
end
|
189
188
|
end
|
@@ -24,89 +24,90 @@ end
|
|
24
24
|
describe "with no group passed in" do
|
25
25
|
it "should return nothing to require" do
|
26
26
|
libs = BundlerExt::Gemfile.parse(@gemfile)
|
27
|
-
libs.
|
28
|
-
libs.keys.
|
29
|
-
libs.keys.
|
27
|
+
expect(libs).to be_an(Hash)
|
28
|
+
expect(libs.keys).to_not include('deltacloud-client')
|
29
|
+
expect(libs.keys).to_not include('vcr')
|
30
30
|
end
|
31
31
|
end
|
32
32
|
describe "with :all passed in" do
|
33
33
|
it "should return the list of system libraries in all groups to require" do
|
34
34
|
libs = BundlerExt::Gemfile.parse(@gemfile, :all)
|
35
|
-
libs.
|
36
|
-
libs.keys.
|
37
|
-
libs['deltacloud-client'][:files].
|
38
|
-
libs.keys.
|
35
|
+
expect(libs).to be_an(Hash)
|
36
|
+
expect(libs.keys).to include('deltacloud-client')
|
37
|
+
expect(libs['deltacloud-client'][:files]).to eq(['deltacloud'])
|
38
|
+
expect(libs.keys).to include('vcr')
|
39
39
|
end
|
40
40
|
end
|
41
41
|
describe "with group passed in" do
|
42
42
|
it "should not return any deps that are not in the 'development' group" do
|
43
43
|
libs = BundlerExt::Gemfile.parse(@gemfile,'development')
|
44
|
-
libs.
|
45
|
-
libs.keys.
|
44
|
+
expect(libs).to be_an(Hash)
|
45
|
+
expect(libs.keys).to_not include('deltacloud-client')
|
46
46
|
end
|
47
47
|
it "should return only deps that are in the :test group" do
|
48
48
|
libs = BundlerExt::Gemfile.parse(@gemfile, :test)
|
49
|
-
libs.
|
50
|
-
libs.keys.
|
51
|
-
libs.keys.
|
49
|
+
expect(libs).to be_an(Hash)
|
50
|
+
expect(libs.keys).to_not include('deltacloud-client')
|
51
|
+
expect(libs.keys).to include('vcr')
|
52
52
|
end
|
53
53
|
it "should return deps from both the :default and :test groups" do
|
54
54
|
libs = BundlerExt::Gemfile.parse(@gemfile, :default, :test)
|
55
|
-
libs.
|
56
|
-
libs.keys.
|
57
|
-
libs.keys.
|
55
|
+
expect(libs).to be_an(Hash)
|
56
|
+
expect(libs.keys).to include('deltacloud-client')
|
57
|
+
expect(libs.keys).to include('vcr')
|
58
58
|
end
|
59
59
|
end
|
60
60
|
it "should only return deps for the current platform" do
|
61
61
|
libs = BundlerExt::Gemfile.parse(@gemfile)
|
62
|
-
libs.
|
62
|
+
expect(libs).to be_an(Hash)
|
63
63
|
if RUBY_VERSION < "1.9"
|
64
|
-
libs.keys.
|
64
|
+
expect(libs.keys).to_not include('cinch')
|
65
65
|
else
|
66
|
-
libs.keys.
|
66
|
+
expect(libs.keys).to_not include('fastercsv')
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
70
70
|
describe "#system_require" do
|
71
71
|
it "strict mode should fail loading non existing gem" do
|
72
|
-
expect { BundlerExt.system_require(@gemfile, :fail) }.
|
72
|
+
expect { BundlerExt.system_require(@gemfile, :fail) }.
|
73
|
+
to raise_error(RuntimeError, 'Gem loading error: cannot load such file -- not_existing_gem')
|
73
74
|
end
|
74
75
|
|
75
76
|
it "non-strict mode should load the libraries in the gemfile" do
|
76
77
|
ENV['BEXT_NOSTRICT'] = 'true'
|
77
78
|
BundlerExt.system_require(@gemfile)
|
78
|
-
defined?(Gem).
|
79
|
+
expect(defined?(Gem)).to be_truthy
|
79
80
|
end
|
80
81
|
|
81
82
|
it "non-strict mode should load the libraries in the gemfile" do
|
82
83
|
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
83
84
|
BundlerExt.system_require(@gemfile)
|
84
|
-
defined?(Gem).
|
85
|
+
expect(defined?(Gem)).to be_truthy
|
85
86
|
end
|
86
87
|
|
87
88
|
it "non-strict mode should load the libraries in the gemfile" do
|
88
89
|
ENV['BEXT_NOSTRICT'] = 'true'
|
89
90
|
BundlerExt.system_require(@gemfile, :fail)
|
90
|
-
defined?(Gem).
|
91
|
+
expect(defined?(Gem)).to be_truthy
|
91
92
|
end
|
92
93
|
|
93
94
|
it "non-strict mode should load the libraries in the gemfile" do
|
94
95
|
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
95
96
|
BundlerExt.system_require(@gemfile, :fail)
|
96
|
-
defined?(Gem).
|
97
|
+
expect(defined?(Gem)).to be_truthy
|
97
98
|
end
|
98
99
|
it "non-strict mode should load the libraries using env var list" do
|
99
100
|
ENV['BEXT_GROUPS'] = 'test development blah'
|
100
101
|
ENV['BEXT_NOSTRICT'] = 'true'
|
101
102
|
BundlerExt.system_require(@gemfile)
|
102
|
-
defined?(Gem
|
103
|
+
expect(defined?(Gem)).to be_truthy
|
103
104
|
end
|
104
105
|
|
105
106
|
it "non-strict mode should load the libraries using env var list" do
|
106
107
|
ENV['BUNLDER_EXT_GROUPS'] = 'test development blah'
|
107
108
|
ENV['BEXT_NOSTRICT'] = 'true'
|
108
109
|
BundlerExt.system_require(@gemfile)
|
109
|
-
defined?(Gem
|
110
|
+
expect(defined?(Gem)).to be_truthy
|
110
111
|
end
|
111
112
|
|
112
113
|
unless skip_system
|
@@ -120,11 +121,11 @@ end
|
|
120
121
|
gems = BundlerExt::Gemfile.parse(@gemfile, :all)
|
121
122
|
gems.each { |gem,gdep|
|
122
123
|
version = rand(100)
|
123
|
-
BundlerExt::System.
|
124
|
+
expect(BundlerExt::System).to receive(:system_name_for).with(gem).
|
124
125
|
and_return(gem)
|
125
|
-
BundlerExt::System.
|
126
|
+
expect(BundlerExt::System).to receive(:system_version_for).with(gem).
|
126
127
|
and_return(version)
|
127
|
-
BundlerExt::System.
|
128
|
+
expect(BundlerExt::System).to receive(:gem).with(gem, "=#{version}")
|
128
129
|
}
|
129
130
|
BundlerExt.system_require(@gemfile, :all)
|
130
131
|
end
|
@@ -134,7 +135,7 @@ end
|
|
134
135
|
ENV['BEXT_PKG_PREFIX'] = 'rubygem-'
|
135
136
|
gems = BundlerExt::Gemfile.parse(@gemfile, :all)
|
136
137
|
gems.each { |gem,gdep|
|
137
|
-
BundlerExt::System.
|
138
|
+
expect(BundlerExt::System).to receive(:system_version_for).with("rubygem-#{gem}").
|
138
139
|
and_return('0')
|
139
140
|
}
|
140
141
|
BundlerExt.system_require(@gemfile, :all)
|
@@ -6,14 +6,14 @@ module BundlerExt
|
|
6
6
|
describe "#gemfile" do
|
7
7
|
it "gets/sets bext_gemfile" do
|
8
8
|
runtime = described_class.new
|
9
|
-
runtime.gemfile('Gemfile.in').
|
10
|
-
runtime.gemfile.
|
9
|
+
expect(runtime.gemfile('Gemfile.in')).to eq('Gemfile.in')
|
10
|
+
expect(runtime.gemfile).to eq('Gemfile.in')
|
11
11
|
end
|
12
12
|
|
13
13
|
it "defaults to Bundler.default_gemfile" do
|
14
|
-
Bundler.
|
14
|
+
expect(Bundler).to receive(:default_gemfile).and_return('DefaultGemfile')
|
15
15
|
runtime = described_class.new
|
16
|
-
runtime.gemfile.
|
16
|
+
expect(runtime.gemfile).to eq('DefaultGemfile')
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -21,7 +21,7 @@ module BundlerExt
|
|
21
21
|
it "returns directory name of gemfile" do
|
22
22
|
runtime = described_class.new
|
23
23
|
runtime.gemfile(Pathname.new('spec/fixtures/Gemfile.in'))
|
24
|
-
runtime.root.to_s.
|
24
|
+
expect(runtime.root.to_s).to eq(File.expand_path('spec/fixtures'))
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -30,9 +30,9 @@ module BundlerExt
|
|
30
30
|
runtime = described_class.new
|
31
31
|
runtime.gemfile(Pathname.new('spec/fixtures/Gemfile.in'))
|
32
32
|
bundler = runtime.bundler
|
33
|
-
bundler.
|
34
|
-
bundler.root.to_s.
|
35
|
-
runtime.bundler.
|
33
|
+
expect(bundler).to be_an_instance_of(Bundler::Runtime)
|
34
|
+
expect(bundler.root.to_s).to eq(File.expand_path('spec/fixtures'))
|
35
|
+
expect(runtime.bundler).to eq(bundler)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -40,8 +40,8 @@ module BundlerExt
|
|
40
40
|
it "returns handle to bundler rubygems integration" do
|
41
41
|
runtime = described_class.new
|
42
42
|
rubygems = runtime.rubygems
|
43
|
-
rubygems.
|
44
|
-
runtime.rubygems.
|
43
|
+
expect(rubygems).to be_an_instance_of(Bundler::RubygemsIntegration)
|
44
|
+
expect(runtime.rubygems).to eq(rubygems)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -55,76 +55,76 @@ module BundlerExt
|
|
55
55
|
it "assigns env home variable to BEXT_HOME" do
|
56
56
|
ENV['BEXT_HOME'] = '/home/foo'
|
57
57
|
described_class.new.setup_env
|
58
|
-
ENV['HOME'].
|
58
|
+
expect(ENV['HOME']).to eq('/home/foo')
|
59
59
|
end
|
60
60
|
|
61
61
|
it "assigns env home variable to BUNDLER_EXT_HOME" do
|
62
62
|
ENV['BUNDLER_EXT_HOME'] = '/home/foo'
|
63
63
|
described_class.new.setup_env
|
64
|
-
ENV['HOME'].
|
64
|
+
expect(ENV['HOME']).to eq('/home/foo')
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
describe "::namespaced_file" do
|
69
69
|
context "file does not include '-'" do
|
70
70
|
it "returns nil" do
|
71
|
-
described_class.namespaced_file('foobar').
|
71
|
+
expect(described_class.namespaced_file('foobar')).to be_nil
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
75
|
context "file responds to :name" do
|
76
76
|
it "returns file name in path format" do
|
77
77
|
file = Pathname.new 'foo-bar'
|
78
|
-
file.
|
79
|
-
described_class.namespaced_file(file).
|
78
|
+
expect(file).to receive(:name).and_return('foo-bar')
|
79
|
+
expect(described_class.namespaced_file(file)).to eq('foo/bar')
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
it "returns file in path format" do
|
84
|
-
described_class.namespaced_file("foo-bar").
|
84
|
+
expect(described_class.namespaced_file("foo-bar")).to eq('foo/bar')
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
88
|
describe "#system_require" do
|
89
89
|
it "requires files" do
|
90
90
|
runtime = described_class.new
|
91
|
-
runtime.
|
91
|
+
expect(runtime).to receive(:require).with('file1')
|
92
92
|
runtime.system_require(['file1'])
|
93
93
|
end
|
94
94
|
|
95
95
|
context "LoadError when requiring file" do
|
96
96
|
it "requires namespaced file" do
|
97
|
-
described_class.
|
97
|
+
expect(described_class).to receive(:namespaced_file).with('file1').
|
98
98
|
and_return('namespaced_file1')
|
99
99
|
runtime = described_class.new
|
100
|
-
runtime.
|
101
|
-
runtime.
|
100
|
+
expect(runtime).to receive(:require).with('file1').and_call_original
|
101
|
+
expect(runtime).to receive(:require).with('namespaced_file1')
|
102
102
|
runtime.system_require(['file1'])
|
103
103
|
end
|
104
104
|
|
105
105
|
context "LoadError when requiring namespaced file" do
|
106
106
|
it "outputs strict error" do
|
107
107
|
expected = 'Gem loading error: cannot load such file -- namespaced_file1'
|
108
|
-
Output.
|
108
|
+
expect(Output).to receive(:strict_err).with(expected)
|
109
109
|
|
110
|
-
described_class.
|
110
|
+
expect(described_class).to receive(:namespaced_file).with('file1').
|
111
111
|
and_return('namespaced_file1')
|
112
112
|
runtime = described_class.new
|
113
|
-
runtime.
|
114
|
-
runtime.
|
113
|
+
expect(runtime).to receive(:require).with('file1').and_call_original
|
114
|
+
expect(runtime).to receive(:require).with('namespaced_file1').and_call_original
|
115
115
|
runtime.system_require(['file1'])
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
context "namespaced file is nil" do
|
120
120
|
it "outputs strict error" do
|
121
|
-
expected =
|
122
|
-
Output.
|
121
|
+
expected = /^Gem loading error: cannot load such file -- file1($|\nDid you mean\? )/
|
122
|
+
expect(Output).to receive(:strict_err).with(expected)
|
123
123
|
|
124
|
-
described_class.
|
124
|
+
expect(described_class).to receive(:namespaced_file).with('file1').
|
125
125
|
and_return(nil)
|
126
126
|
runtime = described_class.new
|
127
|
-
runtime.
|
127
|
+
expect(runtime).to receive(:require).with('file1').and_call_original
|
128
128
|
runtime.system_require(['file1'])
|
129
129
|
end
|
130
130
|
end
|
@@ -134,14 +134,14 @@ module BundlerExt
|
|
134
134
|
describe "clear" do
|
135
135
|
it "cleans bundler load path" do
|
136
136
|
runtime = described_class.new
|
137
|
-
runtime.bundler.
|
137
|
+
expect(runtime.bundler).to receive(:clean_load_path)
|
138
138
|
runtime.clear
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
142
|
describe "add_spec" do
|
143
143
|
around(:each) do |spec|
|
144
|
-
orig = $LOAD_PATH
|
144
|
+
orig = $LOAD_PATH.dup
|
145
145
|
spec.run
|
146
146
|
|
147
147
|
# XXX need to restore this way else we'll get an err:
|
@@ -150,28 +150,28 @@ module BundlerExt
|
|
150
150
|
orig.each { |o| $LOAD_PATH << o }
|
151
151
|
end
|
152
152
|
|
153
|
+
# XXX needed to require rubygems/ext/builder in with Bundler 1.8.1+.
|
154
|
+
let!(:runtime) { described_class.new.tap {|c| c.rubygems} }
|
155
|
+
|
153
156
|
it "marks spec as loaded" do
|
154
157
|
spec = Gem::Specification.new
|
155
|
-
runtime
|
156
|
-
runtime.rubygems.should_receive(:mark_loaded).with(spec)
|
158
|
+
expect(runtime.rubygems).to receive(:mark_loaded).with(spec)
|
157
159
|
runtime.add_spec(spec)
|
158
160
|
end
|
159
161
|
|
160
162
|
it "adds spec load paths not already on LOAD_PATH to it" do
|
161
163
|
$LOAD_PATH.clear
|
162
164
|
spec = Gem::Specification.new :load_paths => ['foo']
|
163
|
-
runtime = described_class.new
|
164
165
|
runtime.add_spec(spec)
|
165
|
-
$LOAD_PATH.
|
166
|
+
expect($LOAD_PATH).to eq(spec.load_paths)
|
166
167
|
end
|
167
168
|
|
168
169
|
it "skips paths already on the $LOAD_PATH" do
|
169
170
|
spec = Gem::Specification.new :load_paths => ['foo']
|
170
171
|
$LOAD_PATH.clear
|
171
172
|
$LOAD_PATH << spec.load_paths.first
|
172
|
-
runtime = described_class.new
|
173
173
|
runtime.add_spec(spec)
|
174
|
-
$LOAD_PATH.size.
|
174
|
+
expect($LOAD_PATH.size).to eq(1)
|
175
175
|
end
|
176
176
|
end
|
177
177
|
end # describe Runtime
|
@@ -12,64 +12,64 @@ module BundlerExt
|
|
12
12
|
it "sets pkg_prefix from BEXT_PKG_PREFIX env variable" do
|
13
13
|
ENV['BEXT_PKG_PREFIX'] = 'rubygem-'
|
14
14
|
described_class.parse_env
|
15
|
-
described_class.pkg_prefix.
|
15
|
+
expect(described_class.pkg_prefix).to eq('rubygem-')
|
16
16
|
end
|
17
17
|
|
18
18
|
it "defaults to blank pkg_prefix" do
|
19
19
|
described_class.parse_env
|
20
|
-
described_class.pkg_prefix.
|
20
|
+
expect(described_class.pkg_prefix).to eq('')
|
21
21
|
end
|
22
22
|
|
23
23
|
it "sets activate_versions from BEXT_ACTIVATE_VERSIONS env variable" do
|
24
24
|
ENV['BEXT_ACTIVATE_VERSIONS'] = 'true'
|
25
25
|
described_class.parse_env
|
26
|
-
described_class.activate_versions.
|
26
|
+
expect(described_class.activate_versions).to eq('true')
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
describe "#activate?" do
|
31
31
|
context "activate_versions is false" do
|
32
32
|
it "returns false" do
|
33
|
-
described_class.activate
|
33
|
+
expect(described_class.activate?).to be_nil
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
context "not an rpm system" do
|
38
38
|
it "returns false" do
|
39
39
|
ENV['BEXT_ACTIVATE_VERSIONS'] = 'true'
|
40
|
-
described_class.
|
41
|
-
described_class.activate
|
40
|
+
expect(described_class).to receive(:is_rpm_system?).and_return(false)
|
41
|
+
expect(described_class.activate?).to be false
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
it "returns true" do
|
46
46
|
ENV['BEXT_ACTIVATE_VERSIONS'] = 'true'
|
47
|
-
described_class.
|
48
|
-
described_class.activate
|
47
|
+
expect(described_class).to receive(:is_rpm_system?).and_return(true)
|
48
|
+
expect(described_class.activate?).to be true
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "#system_name_for" do
|
53
53
|
it "returns package name with package prefix" do
|
54
54
|
ENV['BEXT_PKG_PREFIX'] = 'rubygem-'
|
55
|
-
described_class.system_name_for('rails').
|
55
|
+
expect(described_class.system_name_for('rails')).to eq('rubygem-rails')
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
describe "#is_rpm_system?" do
|
60
60
|
context "/usr/bin/rpm is not an executable file" do
|
61
61
|
it "returns false" do
|
62
|
-
File.
|
62
|
+
expect(File).to receive(:executable?).
|
63
63
|
with(described_class.rpm_cmd).and_return(false)
|
64
|
-
described_class.is_rpm_system
|
64
|
+
expect(described_class.is_rpm_system?).to be false
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
context "/usr/bin/rpm is an executable file" do
|
69
69
|
it "returns true" do
|
70
|
-
File.
|
70
|
+
expect(File).to receive(:executable?).
|
71
71
|
with(described_class.rpm_cmd).and_return(true)
|
72
|
-
described_class.is_rpm_system
|
72
|
+
expect(described_class.is_rpm_system?).to be true
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
@@ -83,55 +83,51 @@ module BundlerExt
|
|
83
83
|
|
84
84
|
it "gets/sets rpm command" do
|
85
85
|
described_class.rpm_cmd '/bin/rpm'
|
86
|
-
described_class.rpm_cmd.
|
86
|
+
expect(described_class.rpm_cmd).to eq('/bin/rpm')
|
87
87
|
end
|
88
88
|
|
89
89
|
it "defaults to /usr/bin/rpm" do
|
90
|
-
described_class.rpm_cmd.
|
90
|
+
expect(described_class.rpm_cmd).to eq('/usr/bin/rpm')
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
describe "#system_version_for" do
|
95
95
|
context "rpm system" do
|
96
96
|
it "uses rpm_cmd to retrieve version" do
|
97
|
-
described_class.
|
98
|
-
described_class.
|
97
|
+
expect(described_class).to receive(:is_rpm_system?).and_return(true)
|
98
|
+
expect(described_class).to receive(:`).
|
99
99
|
with("#{described_class.rpm_cmd} -qi rails").
|
100
100
|
and_return("Name: rails\nVersion : 1.0.0 \nAnything")
|
101
|
-
described_class.system_version_for('rails').
|
101
|
+
expect(described_class.system_version_for('rails')).to eq('1.0.0')
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
105
|
it "returns nil" do
|
106
|
-
described_class.
|
107
|
-
described_class.system_version_for('rails').
|
106
|
+
expect(described_class).to receive(:is_rpm_system?).and_return(false)
|
107
|
+
expect(described_class.system_version_for('rails')).to be_nil
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
111
|
describe "#activate!" do
|
112
112
|
it "activates system version of gem" do
|
113
|
-
described_class.
|
113
|
+
expect(described_class).to receive(:system_name_for).
|
114
114
|
with('rails').and_return('rubygem-rake')
|
115
|
-
described_class.
|
115
|
+
expect(described_class).to receive(:system_version_for).
|
116
116
|
with('rubygem-rake').and_return('1.2.3')
|
117
|
-
described_class.
|
117
|
+
expect(described_class).to receive(:gem).
|
118
118
|
with('rails', '=1.2.3')
|
119
119
|
described_class.activate!('rails')
|
120
120
|
end
|
121
121
|
|
122
122
|
it "gracefully handles load errors" do
|
123
|
-
described_class.
|
124
|
-
|
125
|
-
described_class.activate!('rails')
|
126
|
-
}.should_not raise_error
|
123
|
+
expect(described_class).to receive(:gem).and_raise(LoadError)
|
124
|
+
expect { described_class.activate!('rails') }.not_to raise_error
|
127
125
|
end
|
128
126
|
|
129
127
|
it "gracefully handles bad requirement errors" do
|
130
|
-
described_class.
|
128
|
+
expect(described_class).to receive(:gem).
|
131
129
|
and_raise(Gem::Requirement::BadRequirementError)
|
132
|
-
|
133
|
-
described_class.activate!('rails')
|
134
|
-
}.should_not raise_error
|
130
|
+
expect { described_class.activate!('rails') }.not_to raise_error
|
135
131
|
end
|
136
132
|
end
|
137
133
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Guiditta
|
8
8
|
- Mo Morsi
|
9
9
|
- Lukas Zapletal
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-07-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -28,18 +28,38 @@ dependencies:
|
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rspec
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '3'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rake
|
31
45
|
requirement: !ruby/object:Gem::Requirement
|
32
46
|
requirements:
|
33
47
|
- - ">="
|
34
48
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
49
|
+
version: '12'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '14'
|
36
53
|
type: :development
|
37
54
|
prerelease: false
|
38
55
|
version_requirements: !ruby/object:Gem::Requirement
|
39
56
|
requirements:
|
40
57
|
- - ">="
|
41
58
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
59
|
+
version: '12'
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '14'
|
43
63
|
description: Simple library leveraging the Bundler Gemfile DSL to load gems already
|
44
64
|
on the system and managed by the systems package manager (like yum/apt)
|
45
65
|
email:
|
@@ -57,7 +77,6 @@ files:
|
|
57
77
|
- lib/bundler_ext/gemfile.rb
|
58
78
|
- lib/bundler_ext/output.rb
|
59
79
|
- lib/bundler_ext/runtime.rb
|
60
|
-
- lib/bundler_ext/setup.rb
|
61
80
|
- lib/bundler_ext/system.rb
|
62
81
|
- lib/bundler_ext/version.rb
|
63
82
|
- spec/bundler_ext/bundler_ext_spec.rb
|
@@ -71,7 +90,7 @@ homepage: https://github.com/bundlerext/bundler_ext
|
|
71
90
|
licenses:
|
72
91
|
- MIT
|
73
92
|
metadata: {}
|
74
|
-
post_install_message:
|
93
|
+
post_install_message:
|
75
94
|
rdoc_options: []
|
76
95
|
require_paths:
|
77
96
|
- lib
|
@@ -88,17 +107,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
107
|
requirements:
|
89
108
|
- Install the linux_admin gem and set BEXT_ACTIVATE_VERSIONS to true to activate rpm/deb
|
90
109
|
installed gems
|
91
|
-
|
92
|
-
|
93
|
-
signing_key:
|
110
|
+
rubygems_version: 3.1.6
|
111
|
+
signing_key:
|
94
112
|
specification_version: 4
|
95
113
|
summary: Load system gems via Bundler DSL
|
96
114
|
test_files:
|
115
|
+
- spec/bundler_ext/bundler_ext_spec.rb
|
97
116
|
- spec/bundler_ext/gemfile_spec.rb
|
98
|
-
- spec/bundler_ext/system_spec.rb
|
99
|
-
- spec/bundler_ext/runtime_spec.rb
|
100
117
|
- spec/bundler_ext/integration_spec.rb
|
101
|
-
- spec/bundler_ext/
|
118
|
+
- spec/bundler_ext/runtime_spec.rb
|
119
|
+
- spec/bundler_ext/system_spec.rb
|
102
120
|
- spec/fixtures/Gemfile.in
|
103
121
|
- spec/spec_helper.rb
|
104
122
|
- ".rspec"
|
data/lib/bundler_ext/setup.rb
DELETED