fog-core 1.27.2 → 1.27.3

Sign up to get free protection for your applications and to get access to all the features.
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