ruby-protocol-buffers 1.2.3.beta1 → 1.2.3.beta2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.3.beta1
1
+ 1.2.3.beta2
@@ -290,22 +290,18 @@ module ProtocolBuffers
290
290
  end
291
291
 
292
292
  class StringField < BytesField
293
- # TODO: UTF-8 validation
294
- # Make sure to handle this weird case: strings are mutable, so a UTF-8
295
- # valid string could be assigned to a repeated field and then modified in
296
- # place later on to not be valid UTF-8 anymore.
297
- #
298
- # Maybe we just punt on this except in Ruby 1.9 where we can rely on the
299
- # language ensuring the string is always UTF-8?
293
+ HAS_ENCODING = (''.respond_to?(:valid_encoding?) && ''.respond_to?(:force_encoding))
294
+
295
+ def check_value(value)
296
+ if HAS_ENCODING
297
+ value.valid_encoding? || raise(ArgumentError, "string value is not valid utf-8")
298
+ end
299
+ end
300
300
 
301
301
  def deserialize(value)
302
- # To get bytes, the value was being read as ASCII. Ruby 1.9 stores an encoding
303
- # with its strings, and they were getting returned with Encoding ASCII-8BIT.
304
- # Protobuffers are supposed to only return UTF-8 strings. This attempts to
305
- # force the encoding to UTF-8 if on Ruby 1.9 (force_encoding is defined on String).
306
302
  read_value = value.read.to_s
307
- if read_value.respond_to?("force_encoding")
308
- read_value.force_encoding("UTF-8")
303
+ if HAS_ENCODING
304
+ read_value.force_encoding("utf-8")
309
305
  end
310
306
  read_value
311
307
  end
@@ -209,7 +209,7 @@ module ProtocolBuffers
209
209
  # module Foo
210
210
  # VALUE_A = 1
211
211
  # VALUE_B = 5
212
- # VALUE_C 1234
212
+ # VALUE_C = 1234
213
213
  # end
214
214
  #
215
215
  # An exception will be thrown if an enum field is assigned a value not in the
@@ -387,7 +387,12 @@ module ProtocolBuffers
387
387
  ret = ProtocolBuffers.bin_sio
388
388
  ret << "#<#{self.class.name}"
389
389
  fields.each do |tag, field|
390
- ret << " #{field.name}=#{field.inspect_value(self.__send__(field.name))}"
390
+ if value_for_tag?(tag)
391
+ value = field.inspect_value(self.__send__(field.name))
392
+ else
393
+ value = "<unset>"
394
+ end
395
+ ret << " #{field.name}=#{value}"
391
396
  end
392
397
  ret << ">"
393
398
  return ret.string
data/spec/fields_spec.rb CHANGED
@@ -37,12 +37,24 @@ describe ProtocolBuffers, "fields" do
37
37
  end
38
38
 
39
39
  it "verifies UTF-8 for string fields" do
40
- pending("do UTF-8 validation") do
40
+ if RUBY_VERSION < "1.9"
41
+ pending "UTF-8 validation only happens in ruby 1.9+"
42
+ else
43
+ good = proc { StringIO.new("hello") }
44
+ bad = proc { StringIO.new("\xff\xff") }
45
+
41
46
  s1 = mkfield(:StringField)
42
- proc { s1.check_valid("hello") }.should_not raise_error()
43
- proc { s1.check_valid("\xff\xff") }.should raise_error(ArgumentError)
47
+ s1.deserialize(good[]).should == "hello"
48
+ s1.deserialize(good[]).encoding.should == Encoding.find('utf-8')
49
+ proc { s1.check_valid(s1.deserialize(good[])) }.should_not raise_error()
50
+ s1.deserialize(bad[]).encoding.should == Encoding.find('utf-8')
51
+ proc { s1.check_valid(s1.deserialize(bad[])) }.should raise_error(ArgumentError)
52
+
44
53
  b1 = mkfield(:BytesField)
45
- proc { b1.check_valid("\xff\xff") }.should_not raise_error()
54
+ b1.deserialize(good[]).should == "hello"
55
+ b1.deserialize(good[]).encoding.should == Encoding.find("us-ascii")
56
+ b1.deserialize(bad[]).encoding.should == Encoding.find("binary")
57
+ proc { b1.check_valid(b1.deserialize(bad[])) }.should_not raise_error()
46
58
  end
47
59
  end
48
60
 
@@ -3,3 +3,8 @@ package simple;
3
3
  message Test1 {
4
4
  optional string test_field = 1;
5
5
  };
6
+
7
+ message Foo {}
8
+ message Bar {
9
+ optional Foo foo = 1;
10
+ };
data/spec/runtime_spec.rb CHANGED
@@ -65,6 +65,15 @@ describe ProtocolBuffers, "runtime" do
65
65
  a1.has_sub2?.should == true
66
66
  end
67
67
 
68
+ describe "#inspect" do
69
+ it "should leave out un-set fields" do
70
+ b1 = Simple::Bar.new
71
+ b1.inspect.should == "#<Simple::Bar foo=<unset>>"
72
+ b1.foo = Simple::Foo.new
73
+ b1.inspect.should == "#<Simple::Bar foo=#<Simple::Foo>>"
74
+ end
75
+ end
76
+
68
77
  it "detects changes to a sub-message and flags it as set if it wasn't" do
69
78
  a1 = Featureful::A.new
70
79
  a1.has_sub2?.should == false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-protocol-buffers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3.beta1
4
+ version: 1.2.3.beta2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-04-25 00:00:00.000000000Z
14
+ date: 2012-12-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70124285265220 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,15 @@ dependencies:
23
23
  version: '2.5'
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70124285265220
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: '2.5'
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: autotest-standalone
29
- requirement: &70124285264800 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
30
35
  none: false
31
36
  requirements:
32
37
  - - ! '>='
@@ -34,10 +39,15 @@ dependencies:
34
39
  version: '0'
35
40
  type: :development
36
41
  prerelease: false
37
- version_requirements: *70124285264800
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: autotest-growl
40
- requirement: &70124285264340 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
41
51
  none: false
42
52
  requirements:
43
53
  - - ! '>='
@@ -45,10 +55,15 @@ dependencies:
45
55
  version: '0'
46
56
  type: :development
47
57
  prerelease: false
48
- version_requirements: *70124285264340
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
49
64
  - !ruby/object:Gem::Dependency
50
65
  name: rcov
51
- requirement: &70124285263920 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
52
67
  none: false
53
68
  requirements:
54
69
  - - ! '>='
@@ -56,10 +71,15 @@ dependencies:
56
71
  version: '0'
57
72
  type: :development
58
73
  prerelease: false
59
- version_requirements: *70124285263920
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: yard
62
- requirement: &70124285263480 !ruby/object:Gem::Requirement
82
+ requirement: !ruby/object:Gem::Requirement
63
83
  none: false
64
84
  requirements:
65
85
  - - ! '>='
@@ -67,7 +87,12 @@ dependencies:
67
87
  version: '0'
68
88
  type: :development
69
89
  prerelease: false
70
- version_requirements: *70124285263480
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
71
96
  description:
72
97
  email:
73
98
  - brian@codekitchen.net
@@ -146,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
171
  version: 1.3.1
147
172
  requirements: []
148
173
  rubyforge_project:
149
- rubygems_version: 1.8.10
174
+ rubygems_version: 1.8.23
150
175
  signing_key:
151
176
  specification_version: 3
152
177
  summary: Ruby compiler and runtime for the google protocol buffers library.
@@ -166,3 +191,4 @@ test_files:
166
191
  - spec/spec.opts
167
192
  - spec/spec_helper.rb
168
193
  - spec/unicode_string_spec.rb
194
+ has_rdoc: