fog-core 2.4.0 → 2.5.0
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 +4 -4
- data/.github/FUNDING.yml +2 -0
- data/.github/dependabot.yml +2 -4
- data/.github/workflows/ci.yml +32 -0
- data/.rubocop.yml +1 -1
- data/README.md +2 -1
- data/SECURITY.md +6 -0
- data/changelog.md +12 -0
- data/fog-core.gemspec +1 -1
- data/lib/fog/compute.rb +1 -1
- data/lib/fog/core/mock.rb +1 -1
- data/lib/fog/core/provider.rb +1 -1
- data/lib/fog/core/service.rb +1 -1
- data/lib/fog/core/version.rb +1 -1
- data/lib/fog/core.rb +0 -1
- data/lib/fog/formatador.rb +3 -3
- data/lib/fog/storage.rb +0 -1
- data/lib/tasks/test_task.rb +2 -3
- metadata +5 -31
- data/.github/workflows/ruby.yml +0 -18
- data/.github/workflows/stale.yml +0 -9
- data/spec/compute/models/server_spec.rb +0 -229
- data/spec/compute_spec.rb +0 -95
- data/spec/connection_spec.rb +0 -107
- data/spec/core/cache_spec.rb +0 -227
- data/spec/core/collection_spec.rb +0 -24
- data/spec/core/model_spec.rb +0 -69
- data/spec/core/stringify_keys_spec.rb +0 -38
- data/spec/core/whitelist_keys_spec.rb +0 -36
- data/spec/credentials_spec.rb +0 -88
- data/spec/current_machine_spec.rb +0 -36
- data/spec/fake_app/fake_service.rb +0 -18
- data/spec/fake_app/models/collection.rb +0 -5
- data/spec/fake_app/models/model.rb +0 -2
- data/spec/fake_app/requests/request.rb +0 -11
- data/spec/fog_attribute_spec.rb +0 -569
- data/spec/formatador_spec.rb +0 -154
- data/spec/identity_spec.rb +0 -95
- data/spec/mocking_spec.rb +0 -84
- data/spec/service_spec.rb +0 -201
- data/spec/spec_helper.rb +0 -14
- data/spec/storage_spec.rb +0 -112
- data/spec/test_helpers/formats_helper_spec.rb +0 -121
- data/spec/test_helpers/schema_validator_spec.rb +0 -101
- data/spec/timeout_spec.rb +0 -20
- data/spec/utils_spec.rb +0 -29
- data/spec/uuid_spec.rb +0 -11
- data/spec/wait_for_spec.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b81d32f406966d1e603bd7da20eb75a74bc8761f7187177a03d863b20585c7b
|
4
|
+
data.tar.gz: df024a0491295236bbde204c8d2b17c776c185d6c6ec8276fe4244b442a2329b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fba41ef8c39b0832c6371df52e9827a77094cf66976d97043f0a6d5bff38b337033eef7d7dcbdb330633c156d7ab58d67b1b15c9995d7a113f16169b7a4944a
|
7
|
+
data.tar.gz: e6770dccfca56f1ff303340d1160453bcb3b87b0b330a52e74361c8b0cf7410ceed5c663cdf56bb94a35134bec3229128abcc29f51b7526592b6c933f687c6b9
|
data/.github/FUNDING.yml
ADDED
data/.github/dependabot.yml
CHANGED
@@ -3,10 +3,8 @@ updates:
|
|
3
3
|
- package-ecosystem: "bundler"
|
4
4
|
directory: "/"
|
5
5
|
schedule:
|
6
|
-
interval: "
|
7
|
-
allow:
|
8
|
-
- dependency-type: "all" # update both gemspec and lock
|
6
|
+
interval: "weekly"
|
9
7
|
- package-ecosystem: "github-actions"
|
10
8
|
directory: "/"
|
11
9
|
schedule:
|
12
|
-
interval: "
|
10
|
+
interval: "weekly"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
schedule:
|
9
|
+
- cron: '0 0 * * 1' # At 00:00 on Monday.
|
10
|
+
|
11
|
+
permissions:
|
12
|
+
contents: read
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
test:
|
16
|
+
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
|
19
|
+
strategy:
|
20
|
+
matrix:
|
21
|
+
ruby-version: ['3.0', '3.1', '3.2', '3.3', 'head']
|
22
|
+
continue-on-error: ${{ matrix.ruby-version == 'head' }}
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v4
|
26
|
+
- name: Set up Ruby
|
27
|
+
uses: ruby/setup-ruby@v1
|
28
|
+
with:
|
29
|
+
ruby-version: ${{ matrix.ruby-version }}
|
30
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
31
|
+
- name: Run tests
|
32
|
+
run: bundle exec rake RUBYOPT="--enable-frozen-string-literal"
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
Shared classes and tests for fog providers and services.
|
4
4
|
|
5
|
-
[](https://github.com/fog/fog-core/actions/workflows/ci.yml)
|
6
|
+
[](https://rubygems.org/gems/fog-core)
|
6
7
|
|
7
8
|
## Ruby version
|
8
9
|
|
data/SECURITY.md
ADDED
data/changelog.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
2.5.0 08/02/2024
|
2
|
+
==========================================================
|
3
|
+
|
4
|
+
- drop spec files from gem package
|
5
|
+
- fix 3.4+ ruby issues (string literals and base64)
|
6
|
+
- bump rubocop target
|
7
|
+
- remove stale actions
|
8
|
+
- fixes to ci
|
9
|
+
- add security policy
|
10
|
+
- add gem version badge
|
11
|
+
- add funding info
|
12
|
+
|
1
13
|
2.4.0 01/03/2024
|
2
14
|
==========================================================
|
3
15
|
|
data/fog-core.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.homepage = "https://github.com/fog/fog-core"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
|
-
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR).reject {|f| f.start_with? ('spec/') }
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
data/lib/fog/compute.rb
CHANGED
data/lib/fog/core/mock.rb
CHANGED
data/lib/fog/core/provider.rb
CHANGED
data/lib/fog/core/service.rb
CHANGED
data/lib/fog/core/version.rb
CHANGED
data/lib/fog/core.rb
CHANGED
data/lib/fog/formatador.rb
CHANGED
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.format(object, opts = { include_nested: true })
|
13
|
-
string = init_string(object)
|
13
|
+
string = +init_string(object)
|
14
14
|
indent { string << object_string(object, opts) }
|
15
15
|
string << "#{indentation}>"
|
16
16
|
end
|
@@ -48,7 +48,7 @@ module Fog
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.object_string(object, opts)
|
51
|
-
string = attribute_string(object).to_s
|
51
|
+
string = +attribute_string(object).to_s
|
52
52
|
string << nested_objects_string(object).to_s if opts[:include_nested]
|
53
53
|
string
|
54
54
|
end
|
@@ -68,7 +68,7 @@ module Fog
|
|
68
68
|
return nested if object.respond_to?(:empty) and object.empty?
|
69
69
|
return nested unless object.is_a?(Enumerable)
|
70
70
|
|
71
|
-
nested = "#{indentation}[\n"
|
71
|
+
nested = +"#{indentation}[\n"
|
72
72
|
indent { nested << indentation + inspect_object(object) }
|
73
73
|
nested << "#{indentation}\n#{indentation}]\n"
|
74
74
|
end
|
data/lib/fog/storage.rb
CHANGED
data/lib/tasks/test_task.rb
CHANGED
@@ -22,10 +22,9 @@ module Fog
|
|
22
22
|
def tests(mocked)
|
23
23
|
Fog::Formatador.display_line
|
24
24
|
start = Time.now.to_i
|
25
|
-
threads = []
|
26
25
|
Thread.main[:results] = []
|
27
|
-
Fog.providers.
|
28
|
-
|
26
|
+
threads = Fog.providers.map do |key, value|
|
27
|
+
Thread.new do
|
29
28
|
Thread.main[:results] << {
|
30
29
|
provider: value,
|
31
30
|
success: sh("export FOG_MOCK=#{mocked} && bundle exec shindont +#{key}")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Light
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
@@ -221,9 +221,9 @@ executables: []
|
|
221
221
|
extensions: []
|
222
222
|
extra_rdoc_files: []
|
223
223
|
files:
|
224
|
+
- ".github/FUNDING.yml"
|
224
225
|
- ".github/dependabot.yml"
|
225
|
-
- ".github/workflows/
|
226
|
-
- ".github/workflows/stale.yml"
|
226
|
+
- ".github/workflows/ci.yml"
|
227
227
|
- ".gitignore"
|
228
228
|
- ".rubocop.yml"
|
229
229
|
- ".rubocop_todo.yml"
|
@@ -233,6 +233,7 @@ files:
|
|
233
233
|
- LICENSE.md
|
234
234
|
- README.md
|
235
235
|
- Rakefile
|
236
|
+
- SECURITY.md
|
236
237
|
- changelog.md
|
237
238
|
- fog-core.gemspec
|
238
239
|
- lib/fog/account.rb
|
@@ -312,33 +313,6 @@ files:
|
|
312
313
|
- lib/fog/volume.rb
|
313
314
|
- lib/fog/vpn.rb
|
314
315
|
- lib/tasks/test_task.rb
|
315
|
-
- spec/compute/models/server_spec.rb
|
316
|
-
- spec/compute_spec.rb
|
317
|
-
- spec/connection_spec.rb
|
318
|
-
- spec/core/cache_spec.rb
|
319
|
-
- spec/core/collection_spec.rb
|
320
|
-
- spec/core/model_spec.rb
|
321
|
-
- spec/core/stringify_keys_spec.rb
|
322
|
-
- spec/core/whitelist_keys_spec.rb
|
323
|
-
- spec/credentials_spec.rb
|
324
|
-
- spec/current_machine_spec.rb
|
325
|
-
- spec/fake_app/fake_service.rb
|
326
|
-
- spec/fake_app/models/collection.rb
|
327
|
-
- spec/fake_app/models/model.rb
|
328
|
-
- spec/fake_app/requests/request.rb
|
329
|
-
- spec/fog_attribute_spec.rb
|
330
|
-
- spec/formatador_spec.rb
|
331
|
-
- spec/identity_spec.rb
|
332
|
-
- spec/mocking_spec.rb
|
333
|
-
- spec/service_spec.rb
|
334
|
-
- spec/spec_helper.rb
|
335
|
-
- spec/storage_spec.rb
|
336
|
-
- spec/test_helpers/formats_helper_spec.rb
|
337
|
-
- spec/test_helpers/schema_validator_spec.rb
|
338
|
-
- spec/timeout_spec.rb
|
339
|
-
- spec/utils_spec.rb
|
340
|
-
- spec/uuid_spec.rb
|
341
|
-
- spec/wait_for_spec.rb
|
342
316
|
homepage: https://github.com/fog/fog-core
|
343
317
|
licenses:
|
344
318
|
- MIT
|
data/.github/workflows/ruby.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# This workflow uses actions that are not certified by GitHub.
|
2
|
-
# They are provided by a third-party and are governed by
|
3
|
-
# separate terms of service, privacy policy, and support
|
4
|
-
# documentation.
|
5
|
-
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
-
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
-
|
8
|
-
name: Ruby
|
9
|
-
|
10
|
-
on:
|
11
|
-
push:
|
12
|
-
branches: [ master ]
|
13
|
-
pull_request:
|
14
|
-
branches: [ master ]
|
15
|
-
|
16
|
-
jobs:
|
17
|
-
test:
|
18
|
-
uses: fog/.github/.github/workflows/ruby.yml@v1.3.0
|
data/.github/workflows/stale.yml
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "fog/compute/models/server"
|
3
|
-
|
4
|
-
describe Fog::Compute::Server do
|
5
|
-
before do
|
6
|
-
@server = Fog::Compute::Server.new
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "#sshable?" do
|
10
|
-
describe "when the server is not ready" do
|
11
|
-
it "is false" do
|
12
|
-
@server.stub(:ready?, false) do
|
13
|
-
refute @server.sshable?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "when the server is ready" do
|
19
|
-
describe "when the ssh_ip_address is nil" do
|
20
|
-
it "is false" do
|
21
|
-
@server.stub(:ready?, true) do
|
22
|
-
@server.stub(:ssh_ip_address, nil) do
|
23
|
-
refute @server.sshable?
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "when the ssh_ip_address exists" do
|
30
|
-
# Define these constants which would be imported by net-ssh once loaded
|
31
|
-
module Net
|
32
|
-
module SSH
|
33
|
-
class AuthenticationFailed < RuntimeError
|
34
|
-
end
|
35
|
-
|
36
|
-
class Disconnect < RuntimeError
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "and ssh times out" do
|
42
|
-
it "is false" do
|
43
|
-
@server.stub(:ready?, true) do
|
44
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
45
|
-
raises_timeout = lambda { |_time| raise Timeout::Error.new }
|
46
|
-
Timeout.stub(:timeout, raises_timeout) do
|
47
|
-
refute @server.sshable?
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "and it raises Net::SSH::AuthenticationFailed" do
|
55
|
-
it "is false" do
|
56
|
-
@server.stub(:ready?, true) do
|
57
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
58
|
-
raise_error = lambda { |_cmd, _options={}| raise Net::SSH::AuthenticationFailed.new }
|
59
|
-
@server.stub(:ssh, raise_error) do
|
60
|
-
refute @server.sshable?
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
it "resets SSH timeout" do
|
67
|
-
@server.instance_variable_set(:@sshable_timeout, 8)
|
68
|
-
@server.stub(:ready?, true) do
|
69
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
70
|
-
raise_error = lambda { |_cmd, _options={}| raise Net::SSH::AuthenticationFailed.new }
|
71
|
-
@server.stub(:ssh, raise_error) do
|
72
|
-
@server.sshable?
|
73
|
-
assert_nil @server.instance_variable_get(:@sshable_timeout), nil
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "and it raises Net::SSH::Disconnect" do
|
81
|
-
it "is false" do
|
82
|
-
@server.stub(:ready?, true) do
|
83
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
84
|
-
raise_error = lambda { |_cmd, _options={}| raise Net::SSH::Disconnect.new }
|
85
|
-
@server.stub(:ssh, raise_error) do
|
86
|
-
refute @server.sshable?
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
it "resets SSH timeout" do
|
93
|
-
@server.instance_variable_set(:@sshable_timeout, 8)
|
94
|
-
@server.stub(:ready?, true) do
|
95
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
96
|
-
raise_error = lambda { |_cmd, _options={}| raise Net::SSH::Disconnect.new }
|
97
|
-
@server.stub(:ssh, raise_error) do
|
98
|
-
@server.sshable?
|
99
|
-
assert_nil @server.instance_variable_get(:@sshable_timeout), nil
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe "and it raises SystemCallError" do
|
107
|
-
it "is false" do
|
108
|
-
@server.stub(:ready?, true) do
|
109
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
110
|
-
raise_error = lambda { |_cmd, _options={}| raise SystemCallError.new("message, 0") }
|
111
|
-
@server.stub(:ssh, raise_error) do
|
112
|
-
refute @server.sshable?
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
it "does not increase SSH timeout" do
|
119
|
-
@server.stub(:ready?, true) do
|
120
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
121
|
-
raise_error = lambda { |_cmd, _options={}| raise SystemCallError.new("message, 0") }
|
122
|
-
@server.stub(:ssh, raise_error) do
|
123
|
-
@server.sshable?
|
124
|
-
assert_equal @server.instance_variable_get(:@sshable_timeout), 8
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe "and ssh completes within the designated timeout" do
|
132
|
-
it "is true" do
|
133
|
-
@server.stub(:ready?, true) do
|
134
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
135
|
-
@server.stub(:ssh, "datum") do
|
136
|
-
assert @server.sshable?
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
describe "when called successively" do
|
144
|
-
describe "and ssh times out" do
|
145
|
-
it "increases the timeout factor by 1.5" do
|
146
|
-
@server.stub(:ready?, true) do
|
147
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
148
|
-
raises_timeout = lambda do |time|
|
149
|
-
assert(time == 8)
|
150
|
-
raise Timeout::Error.new
|
151
|
-
end
|
152
|
-
Timeout.stub(:timeout, raises_timeout) do
|
153
|
-
refute @server.sshable?
|
154
|
-
end
|
155
|
-
|
156
|
-
raises_timeout = lambda do |time|
|
157
|
-
assert_equal(12, time)
|
158
|
-
raise Timeout::Error.new
|
159
|
-
end
|
160
|
-
Timeout.stub(:timeout, raises_timeout) do
|
161
|
-
refute @server.sshable?
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
it "does not increase timeout beyond 60s" do
|
168
|
-
@server.stub(:ready?, true) do
|
169
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
170
|
-
raises_timeout = lambda { |_time| raise Timeout::Error.new }
|
171
|
-
Timeout.stub(:timeout, raises_timeout) do
|
172
|
-
5.times { refute @server.sshable? }
|
173
|
-
end
|
174
|
-
|
175
|
-
raises_timeout = lambda do |time|
|
176
|
-
assert_equal(60, time)
|
177
|
-
raise Timeout::Error.new
|
178
|
-
end
|
179
|
-
Timeout.stub(:timeout, raises_timeout) do
|
180
|
-
refute @server.sshable?
|
181
|
-
end
|
182
|
-
|
183
|
-
raises_timeout = lambda do |time|
|
184
|
-
assert_equal(60, time)
|
185
|
-
raise Timeout::Error.new
|
186
|
-
end
|
187
|
-
Timeout.stub(:timeout, raises_timeout) do
|
188
|
-
refute @server.sshable?
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
describe "when ssh eventually succeeds" do
|
195
|
-
it "resets the timeout to the initial value" do
|
196
|
-
@server.stub(:ready?, true) do
|
197
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
198
|
-
raises_timeout = lambda do |time|
|
199
|
-
assert(time == 8)
|
200
|
-
raise Timeout::Error.new
|
201
|
-
end
|
202
|
-
Timeout.stub(:timeout, raises_timeout) do
|
203
|
-
refute @server.sshable?
|
204
|
-
end
|
205
|
-
|
206
|
-
@server.stub(:ssh, "datum") do
|
207
|
-
assert @server.sshable?
|
208
|
-
end
|
209
|
-
|
210
|
-
raises_timeout = lambda do |time|
|
211
|
-
assert_equal(8, time)
|
212
|
-
raise Timeout::Error.new
|
213
|
-
end
|
214
|
-
Timeout.stub(:timeout, raises_timeout) do
|
215
|
-
refute @server.sshable?
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
end
|
229
|
-
end
|
data/spec/compute_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Compute
|
5
|
-
def self.require(*_args); end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Fog::Compute" do
|
10
|
-
describe "#new" do
|
11
|
-
module Fog
|
12
|
-
module TheRightWay
|
13
|
-
class Compute
|
14
|
-
def initialize(_args); end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module Fog
|
20
|
-
module TheRightWay
|
21
|
-
extend Provider
|
22
|
-
service(:compute, "Compute")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "instantiates an instance of Fog::Compute::<Provider> from the :provider keyword arg" do
|
27
|
-
compute = Fog::Compute.new(provider: :therightway)
|
28
|
-
assert_instance_of(Fog::TheRightWay::Compute, compute)
|
29
|
-
end
|
30
|
-
|
31
|
-
module Fog
|
32
|
-
module Compute
|
33
|
-
class TheWrongWay
|
34
|
-
def initialize(_args); end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
module Fog
|
40
|
-
module TheWrongWay
|
41
|
-
extend Provider
|
42
|
-
service(:compute, "Compute")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "instantiates an instance of Fog::<Provider>::Compute from the :provider keyword arg" do
|
47
|
-
compute = Fog::Compute.new(provider: :thewrongway)
|
48
|
-
assert_instance_of(Fog::Compute::TheWrongWay, compute)
|
49
|
-
end
|
50
|
-
|
51
|
-
module Fog
|
52
|
-
module BothWays
|
53
|
-
class Compute
|
54
|
-
attr_reader :args
|
55
|
-
def initialize(args)
|
56
|
-
@args = args
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
module Fog
|
63
|
-
module Compute
|
64
|
-
class BothWays
|
65
|
-
def initialize(_args); end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
module Fog
|
71
|
-
module BothWays
|
72
|
-
extend Provider
|
73
|
-
service(:compute, "Compute")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "when both Fog::Compute::<Provider> and Fog::<Provider>::Compute exist" do
|
78
|
-
it "prefers Fog::<Provider>::Compute" do
|
79
|
-
compute = Fog::Compute.new(provider: :bothways)
|
80
|
-
assert_instance_of(Fog::BothWays::Compute, compute)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
it "passes the supplied keyword args less :provider to Fog::Compute::<Provider>#new" do
|
85
|
-
compute = Fog::Compute.new(provider: :bothways, extra: :stuff)
|
86
|
-
assert_equal({ extra: :stuff }, compute.args)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "raises ArgumentError when given a :provider where a Fog::Compute::Provider that does not exist" do
|
90
|
-
assert_raises(ArgumentError) do
|
91
|
-
Fog::Compute.new(provider: :wat)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|