fog-core 1.27.2 → 1.27.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb0c85564583ea60af61b0763f78fee6089c8230
4
- data.tar.gz: 8f4cf853cd883f2906163109271902bf9f658544
3
+ metadata.gz: 05926065513096bbd243c048472185d94fff85dc
4
+ data.tar.gz: 07586ba0a3850cb661496316589f8e691bd38972
5
5
  SHA512:
6
- metadata.gz: 4517193ec6b81e6962b98f1c1c0f5882f4f7611ebf131941c6efbe3f6792bb69cd69d4595bfcf26765d9b67360d3efc59063bc3b8e6a7f0c695e13028dbc89d0
7
- data.tar.gz: c13706aa2a55be66ded1df68e013621757a06d02ef0cb9ee0b11100478274c266a7e376b55c2f1b8066cf319dbd7a7857f09ef917dd2e409f4214b0cfe98ea31
6
+ metadata.gz: b3c1803c12f6e915226ec157457d769ede0c28debdd5ce9651a253f662d6b651df268ff8748a3070e6836fa3cd84badfb805fd4b9aea0fc3a3ad0065f51544d2
7
+ data.tar.gz: 29295752f87c18ae39bed3385f9976ff3140106d6446d339c370c3015bad8f4b13dec7cdb0d1a7b76cde270459d68be2e3a09d60e7d744dbcb0b0a2b9327799d
@@ -1,3 +1,10 @@
1
+ 1.27.3 12/01/2012
2
+ ==========================================================
3
+
4
+ rubocop fixes for fog collection
5
+ simpler ruby version checking/skipping
6
+ fix requires_one
7
+
1
8
  1.27.2 18/12/2014
2
9
  ==========================================================
3
10
 
@@ -66,3 +66,6 @@ require "fog/storage"
66
66
  require "fog/support"
67
67
  require "fog/volume"
68
68
  require "fog/vpn"
69
+
70
+ # Utility
71
+ require 'fog/formatador'
@@ -155,7 +155,8 @@ module Fog
155
155
  end
156
156
 
157
157
  def requires_one(*args)
158
- return unless missing_attributes(args).length == args.length
158
+ missing = missing_attributes(args)
159
+ return unless missing.length == args.length
159
160
  raise(ArgumentError, "#{missing[0...-1].join(", ")} or #{missing[-1]} are required for this operation")
160
161
  end
161
162
 
@@ -1,10 +1,12 @@
1
1
  require "fog/core/deprecated_connection_accessors"
2
2
 
3
3
  module Fog
4
+ # Fog::Collection
4
5
  class Collection < Array
5
6
  extend Fog::Attributes::ClassMethods
6
7
  include Fog::Attributes::InstanceMethods
7
8
  include Fog::Core::DeprecatedConnectionAccessors
9
+
8
10
 
9
11
  attr_reader :service
10
12
 
@@ -41,8 +43,7 @@ module Fog
41
43
  end
42
44
 
43
45
  def clear
44
- @loaded = true
45
- super
46
+ @loaded = true && super
46
47
  end
47
48
 
48
49
  def create(attributes = {})
@@ -52,8 +53,7 @@ module Fog
52
53
  end
53
54
 
54
55
  def destroy(identity)
55
- object = new(:identity => identity)
56
- object.destroy
56
+ new(:identity => identity).destroy
57
57
  end
58
58
 
59
59
  # Creates a new Fog::Collection based around the passed service
@@ -70,34 +70,11 @@ module Fog
70
70
  end
71
71
 
72
72
  def inspect
73
- Thread.current[:formatador] ||= Formatador.new
74
- data = "#{Thread.current[:formatador].indentation}<#{self.class.name}\n"
75
- Thread.current[:formatador].indent do
76
- unless self.class.attributes.empty?
77
- data << "#{Thread.current[:formatador].indentation}"
78
- data << self.class.attributes.map { |attribute| "#{attribute}=#{send(attribute).inspect}" }.join(",\n#{Thread.current[:formatador].indentation}")
79
- data << "\n"
80
- end
81
- data << "#{Thread.current[:formatador].indentation}["
82
- unless self.empty?
83
- data << "\n"
84
- Thread.current[:formatador].indent do
85
- data << map(&:inspect).join(", \n")
86
- data << "\n"
87
- end
88
- data << Thread.current[:formatador].indentation
89
- end
90
- data << "]\n"
91
- end
92
- data << "#{Thread.current[:formatador].indentation}>"
93
- data
73
+ Fog::Formatador.new(self)
94
74
  end
95
75
 
96
76
  def load(objects)
97
- clear
98
- objects.each do |object|
99
- self << new(object)
100
- end
77
+ clear && objects.each { |object| self << new(object) }
101
78
  self
102
79
  end
103
80
 
@@ -118,8 +95,7 @@ module Fog
118
95
  end
119
96
 
120
97
  def reload
121
- clear
122
- lazy_load
98
+ clear && lazy_load
123
99
  self
124
100
  end
125
101
 
@@ -137,18 +113,20 @@ module Fog
137
113
  all
138
114
  end
139
115
  end
140
-
141
- # Base class for collection classes whose 'all' method returns only a single page of results and passes the
142
- # 'Marker' option along as self.filters[:marker]
116
+ # Base class for collection classes whose 'all' method returns only a single
117
+ # page of results and passes the 'Marker' option along as
118
+ # self.filters[:marker]
143
119
  class PagedCollection < Collection
144
120
  def each(collection_filters = filters)
145
121
  if block_given?
146
- begin
122
+ Kernel.loop do
123
+ break unless filters[:marker]
147
124
  page = all(collection_filters)
148
- # We need to explicitly use the base 'each' method here on the page, otherwise we get infinite recursion
125
+ # We need to explicitly use the base 'each' method here on the page,
126
+ # otherwise we get infinite recursion
149
127
  base_each = Fog::Collection.instance_method(:each)
150
128
  base_each.bind(page).call { |item| yield item }
151
- end while self.filters[:marker]
129
+ end
152
130
  end
153
131
  self
154
132
  end
@@ -31,9 +31,9 @@ module Fog
31
31
  channel = @channels[key]
32
32
  if channel
33
33
  message = if channel.tty?
34
- value.gsub(Formatador::PARSE_REGEX) { "\e[#{Formatador::STYLES[$1.to_sym]}m" }.gsub(Formatador::INDENT_REGEX, "")
34
+ value.gsub(::Formatador::PARSE_REGEX) { "\e[#{::Formatador::STYLES[$1.to_sym]}m" }.gsub(::Formatador::INDENT_REGEX, "")
35
35
  else
36
- value.gsub(Formatador::PARSE_REGEX, "").gsub(Formatador::INDENT_REGEX, "")
36
+ value.gsub(::Formatador::PARSE_REGEX, "").gsub(::Formatador::INDENT_REGEX, "")
37
37
  end
38
38
  channel.write(message)
39
39
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Core
3
- VERSION = "1.27.2"
3
+ VERSION = "1.27.3"
4
4
  end
5
5
  end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ # Fog::Formatador
3
+ class Formatador
4
+ attr_accessor :object, :string, :formatador
5
+
6
+ def initialize(obj)
7
+ @object = obj
8
+ @formatador ||= ::Formatador.new
9
+ end
10
+
11
+ def to_s
12
+ return string unless string.nil?
13
+ init_string
14
+ indent { string << object_string }
15
+ (string << "#{indentation}>").dup
16
+ end
17
+
18
+ private
19
+
20
+ def indent(&block)
21
+ formatador.indent(&block)
22
+ end
23
+
24
+ def indentation
25
+ formatador.indentation
26
+ end
27
+
28
+ def init_string
29
+ @string = "#{indentation}<#{object.class.name}\n"
30
+ end
31
+
32
+ def object_string
33
+ "#{attribute_string}#{nested_objects_string}"
34
+ end
35
+
36
+ def attribute_string
37
+ if object.attributes.empty?
38
+ "#{indentation}#{object_attributes}\n"
39
+ else
40
+ ""
41
+ end
42
+ end
43
+
44
+ def nested_objects_string
45
+ if object.empty?
46
+ nested = "#{indentation}[\n"
47
+ indent { nested << indentation + inspect_object }
48
+ nested << "#{indentation}\n#{indentation}]\n"
49
+ nested
50
+ else
51
+ ""
52
+ end
53
+ end
54
+
55
+ def object_attributes
56
+ attrs = object.class.attributes.map do |attr|
57
+ "#{attr}=#{object.send(attr).inspect}"
58
+ end
59
+ attrs.join(",\n#{indentation}")
60
+ end
61
+
62
+ def inspect_object
63
+ object.map { |o| indentation + o.inspect }.join(", \n#{indentation}")
64
+ end
65
+ end
66
+ end
@@ -59,6 +59,14 @@ class FogAttributeTestModel < Fog::Model
59
59
  def service
60
60
  Service.new
61
61
  end
62
+
63
+ def requires_one_test
64
+ requires_one :key, :time
65
+ end
66
+
67
+ def requires_test
68
+ requires :string, :integer
69
+ end
62
70
  end
63
71
 
64
72
  describe "Fog::Attributes" do
@@ -334,6 +342,37 @@ describe "Fog::Attributes" do
334
342
  end
335
343
  end
336
344
 
345
+ describe "#requires_one" do
346
+ it "should require at least one attribute is supplied" do
347
+ FogAttributeTestModel.new(:key => :key, :time => Time.now).requires_one_test
348
+ FogAttributeTestModel.new(:time => Time.now).requires_one_test
349
+ FogAttributeTestModel.new(:key => :key).requires_one_test
350
+ FogAttributeTestModel.new(:key => :key, :integer => 1).requires_one_test
351
+
352
+ assert_raises ArgumentError do
353
+ FogAttributeTestModel.new(:integer => 1).requires_one_test
354
+ end
355
+ end
356
+ end
357
+
358
+ describe "#requires" do
359
+ it "should require all attributes are supplied" do
360
+ FogAttributeTestModel.new(:string => "string", :integer => 1).requires_test
361
+
362
+ assert_raises ArgumentError do
363
+ FogAttributeTestModel.new(:integer => 1).requires_test
364
+ end
365
+
366
+ assert_raises ArgumentError do
367
+ FogAttributeTestModel.new(:string => "string").requires_test
368
+ end
369
+
370
+ assert_raises ArgumentError do
371
+ FogAttributeTestModel.new(:key => :key).requires_test
372
+ end
373
+ end
374
+ end
375
+
337
376
  describe ".has_many_identities" do
338
377
  it "should return an instance of Fog::Association" do
339
378
  model.many_identities = ["456"]
@@ -0,0 +1,57 @@
1
+ require "spec_helper"
2
+
3
+ class TestCase < Fog::Collection
4
+ def all
5
+ end
6
+ def map(*_args)
7
+ %w(foo bar)
8
+ end
9
+
10
+ def self.attributes
11
+ %w(this that)
12
+ end
13
+
14
+ def this
15
+ %w(this that)
16
+ end
17
+
18
+ def that
19
+ %w(that this)
20
+ end
21
+ end
22
+
23
+ test_case_str = <<-EOL
24
+ <TestCase
25
+ this=["this", "that"],
26
+ that=["that", "this"]
27
+ [
28
+ foo,
29
+ bar
30
+ ]
31
+ >
32
+ EOL
33
+
34
+ test_case_str.chomp!
35
+
36
+ describe Fog::Formatador do
37
+
38
+ def setup
39
+ @formatador = Fog::Formatador.new(TestCase.new)
40
+ end
41
+
42
+ it "raises for missing required arguments" do
43
+ assert_raises(ArgumentError) { Fog::Formatador.new }
44
+ end
45
+
46
+ it "should instansiate" do
47
+ @formatador.must_be_instance_of Fog::Formatador
48
+ end
49
+
50
+ it "should respond to_s" do
51
+ @formatador.must_respond_to :to_s
52
+ end
53
+
54
+ it "should give a string representation of object with proper indentation" do
55
+ "#{@formatador}".must_equal test_case_str
56
+ end
57
+ end
@@ -1,5 +1,3 @@
1
- require "rubygems"
2
-
3
1
  require "minitest/autorun"
4
2
  require "minitest/spec"
5
3
  require "minitest/stub_const"
@@ -94,15 +94,15 @@ describe "Fog::Storage" do
94
94
  end
95
95
 
96
96
  describe ".get_body_size" do
97
- current_version = Gem::Version.new(RUBY_VERSION)
98
-
99
- # Ruby 1.8 doesn't support string encodings, so we can't test that
100
- if current_version >= Gem::Version.new("1.9.0")
101
- it "doesn't alter the encoding of the string passed to it" do
97
+ it "doesn't alter the encoding of the string passed to it" do
98
+ # Ruby 1.8 doesn't support string encodings, so we can't test that
99
+ if RUBY_VERSION >= "1.9.3"
102
100
  body = "foo".encode("UTF-8")
103
101
  Fog::Storage.get_body_size(body)
104
102
 
105
103
  assert_equal("UTF-8", body.encoding.to_s)
104
+ else
105
+ skip
106
106
  end
107
107
  end
108
108
  end
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: 1.27.2
4
+ version: 1.27.3
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: 2014-12-18 00:00:00.000000000 Z
12
+ date: 2015-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -272,6 +272,7 @@ files:
272
272
  - lib/fog/core/wait_for_defaults.rb
273
273
  - lib/fog/core/whitelist_keys.rb
274
274
  - lib/fog/dns.rb
275
+ - lib/fog/formatador.rb
275
276
  - lib/fog/identity.rb
276
277
  - lib/fog/image.rb
277
278
  - lib/fog/metering.rb
@@ -304,6 +305,7 @@ files:
304
305
  - spec/fake_app/models/model.rb
305
306
  - spec/fake_app/requests/request.rb
306
307
  - spec/fog_attribute_spec.rb
308
+ - spec/formatador_spec.rb
307
309
  - spec/identity_spec.rb
308
310
  - spec/mocking_spec.rb
309
311
  - spec/service_spec.rb
@@ -351,6 +353,7 @@ test_files:
351
353
  - spec/fake_app/models/model.rb
352
354
  - spec/fake_app/requests/request.rb
353
355
  - spec/fog_attribute_spec.rb
356
+ - spec/formatador_spec.rb
354
357
  - spec/identity_spec.rb
355
358
  - spec/mocking_spec.rb
356
359
  - spec/service_spec.rb