sparsam 0.2.10 → 0.2.11

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
  SHA256:
3
- metadata.gz: c759ead3b6f09dd4e6b1e1754dc0443ea782e37fd717617d4069e5952605bc85
4
- data.tar.gz: 3734e8cfa8796efdcfe78a702a536672bf88e5e442fdedb1e59b60602b34daaa
3
+ metadata.gz: bb363b6de95b82d54b824db9a9e8c1d433e00a31771f730a7edd10a9bc10ef7b
4
+ data.tar.gz: ce9921ab0a2268cd211873cf9f764e1295e9ef777400ed52ad2d32cf36a7aebc
5
5
  SHA512:
6
- metadata.gz: 9eec207eba73e7fdb9a53edf2de172f34d640cfc15d484804204b929ecdc4caf223eb76a01be496487734ca1af54760fc1e7ad9cf4622e27183e4c4db24fa323
7
- data.tar.gz: 27a9faadcf29db90b72d14a1b775c10ac9004a31f98562f1906c771a8f923124f1290feef5df5e2e8aefc39912ccaedc2b783b8461573eab71b2afc9770d6f4a
6
+ metadata.gz: 360d36ab7da517b81f3ac9fcf2313134856d339da0a12b34684c39b2f9ba238c78912b86a8fdaeceb2652188ede9d561424799ba0149a9f2d50ef6ad9a2083c6
7
+ data.tar.gz: 7cc72e286b041cbd9e5241781455354ff4faf1c38f439cffaa1844b63d78d6fd0ea40b28101fc06997688d09afa29658398e0551aea95e82a8611d1eae8e27db
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Sparsam [![Build Status](https://travis-ci.org/airbnb/sparsam.svg?branch=master)](https://travis-ci.org/airbnb/sparsam) [![Coverage Status](https://coveralls.io/repos/github/airbnb/sparsam/badge.svg?branch=master)](https://coveralls.io/github/airbnb/sparsam?branch=master) [![Gem Version](https://badge.fury.io/rb/sparsam.svg)](https://badge.fury.io/rb/sparsam)
1
+ # Sparsam ![Build Status](https://github.com/airbnb/sparsam/actions/workflows/rspec_rubocop.yml/badge.svg?branch=main) [![Coverage Status](https://coveralls.io/repos/github/airbnb/sparsam/badge.svg?branch=master)](https://coveralls.io/github/airbnb/sparsam?branch=master) [![Gem Version](https://badge.fury.io/rb/sparsam.svg)](https://badge.fury.io/rb/sparsam)
2
2
  New Thrift bindings and generator for Ruby!
3
3
 
4
4
  ## Super basic Example
data/ext/extconf.rb CHANGED
@@ -14,27 +14,27 @@ brew = find_executable('brew')
14
14
  use_homebrew = enable_config('homebrew', brew)
15
15
 
16
16
  if use_homebrew
17
- $stderr.puts "Using #{brew} to locate thrift and boost packages"
18
- $stderr.puts '(disable Homebrew integration via --disable-homebrew)'
17
+ warn "Using #{brew} to locate thrift and boost packages"
18
+ warn '(disable Homebrew integration via --disable-homebrew)'
19
19
 
20
20
  thrift_package = with_config('homebrew-thrift-package', 'thrift@0.9')
21
- $stderr.puts "looking for Homebrew thrift package '#{thrift_package}'"
22
- $stderr.puts '(change Homebrew thrift package name via --with-homebrew-thrift-package=<package>)'
21
+ warn "looking for Homebrew thrift package '#{thrift_package}'"
22
+ warn '(change Homebrew thrift package name via --with-homebrew-thrift-package=<package>)'
23
23
 
24
24
  thrift_prefix = `#{brew} --prefix #{thrift_package}`.strip
25
25
 
26
26
  unless File.exists?(thrift_prefix)
27
- $stderr.puts "#{thrift_prefix} does not exist"
28
- $stderr.puts "To resolve, `brew install #{thrift_package}` or pass"
29
- $stderr.puts '--with-homebrew-thrift-package=<package> to this build to specify'
30
- $stderr.puts 'an alternative thrift package to build against. e.g.:'
31
- $stderr.puts
32
- $stderr.puts ' $ bundle config --global build.sparsam --with-homebrew-thrift-package=mythrift'
27
+ warn "#{thrift_prefix} does not exist"
28
+ warn "To resolve, `brew install #{thrift_package}` or pass"
29
+ warn '--with-homebrew-thrift-package=<package> to this build to specify'
30
+ warn 'an alternative thrift package to build against. e.g.:'
31
+ warn
32
+ warn ' $ bundle config --global build.sparsam --with-homebrew-thrift-package=mythrift'
33
33
 
34
34
  raise "Homebrew package #{thrift_package} not installed"
35
35
  end
36
36
 
37
- $stderr.puts "using Homebrew thrift at #{thrift_prefix}"
37
+ warn "using Homebrew thrift at #{thrift_prefix}"
38
38
  $CFLAGS << " -I#{thrift_prefix}/include"
39
39
  $CXXFLAGS << " -I#{thrift_prefix}/include"
40
40
  $CPPFLAGS << " -I#{thrift_prefix}/include"
@@ -42,18 +42,18 @@ if use_homebrew
42
42
 
43
43
  # Also add boost to the includes search path if it is installed.
44
44
  boost_package = with_config('homebrew-boost-package', 'boost')
45
- $stderr.puts "looking for Homebrew boost package '#{boost_package}'"
46
- $stderr.puts '(change Homebrew boost package name via --with-homebrew-boost-package=<package>)'
45
+ warn "looking for Homebrew boost package '#{boost_package}'"
46
+ warn '(change Homebrew boost package name via --with-homebrew-boost-package=<package>)'
47
47
 
48
48
  boost_prefix = `#{brew} --prefix #{boost_package}`.strip
49
49
 
50
50
  if File.exists?(boost_prefix)
51
- $stderr.puts("using Homebrew boost at #{boost_prefix}")
51
+ warn("using Homebrew boost at #{boost_prefix}")
52
52
  $CFLAGS << " -I#{boost_prefix}/include"
53
53
  $CXXFLAGS << " -I#{boost_prefix}/include"
54
54
  $CPPFLAGS << " -I#{boost_prefix}/include"
55
55
  else
56
- $stderr.puts 'Homebrew boost not found; assuming boost is in default search paths'
56
+ warn 'Homebrew boost not found; assuming boost is in default search paths'
57
57
  end
58
58
  end
59
59
 
@@ -65,12 +65,16 @@ module Sparsam
65
65
  end
66
66
  end
67
67
 
68
+ # rubocop:disable Airbnb/OptArgParameters
68
69
  def serialize(prot = Sparsam::CompactProtocol)
70
+ # rubocop:enable Airbnb/OptArgParameters
69
71
  s = Sparsam::Serializer.new(prot, "")
70
72
  s.serialize(self.class, self)
71
73
  end
72
74
 
75
+ # rubocop:disable Airbnb/OptArgParameters
73
76
  def validate(mode = Sparsam::NORMAL)
77
+ # rubocop:enable Airbnb/OptArgParameters
74
78
  Sparsam.validate(self.class, self, mode)
75
79
  end
76
80
 
@@ -1,6 +1,8 @@
1
1
  module Sparsam
2
2
  module Deserializer
3
+ # rubocop:disable Airbnb/OptArgParameters
3
4
  def self.deserialize(klass, serialized_string, prot = Sparsam::CompactProtocol)
5
+ # rubocop:enable Airbnb/OptArgParameters
4
6
  s = Sparsam::Serializer.new(prot, serialized_string)
5
7
  if klass <= Sparsam::Union
6
8
  s.deserializeUnion(klass)
@@ -7,33 +7,37 @@ module Sparsam
7
7
  end
8
8
  end
9
9
 
10
- class MissingMandatory < Exception
10
+ class MissingMandatory < ::Sparsam::Exception
11
11
  attr_reader :struct_name, :field_name
12
12
 
13
+ # rubocop:disable Airbnb/OptArgParameters
13
14
  def initialize(msg, struct_name = nil, field_name = nil)
15
+ # rubocop:enable Airbnb/OptArgParameters
14
16
  @struct_name = struct_name
15
17
  @field_name = field_name
16
18
  super(msg)
17
19
  end
18
20
  end
19
21
 
20
- class TypeMismatch < Exception
22
+ class TypeMismatch < ::Sparsam::Exception
21
23
  attr_reader :struct_name, :field_name
22
24
 
25
+ # rubocop:disable Airbnb/OptArgParameters
23
26
  def initialize(msg, struct_name = nil, field_name = nil)
27
+ # rubocop:enable Airbnb/OptArgParameters
24
28
  @struct_name = struct_name
25
29
  @field_name = field_name
26
30
  super(msg)
27
31
  end
28
32
  end
29
33
 
30
- class UnionException < Exception
34
+ class UnionException < ::Sparsam::Exception
31
35
  def initialize(msg)
32
36
  super
33
37
  end
34
38
  end
35
39
 
36
- class UnknownTypeException < Exception
40
+ class UnknownTypeException < ::Sparsam::Exception
37
41
  def initialize(msg)
38
42
  super
39
43
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
+
2
3
  require 'sparsam/base_type'
3
4
  require 'sparsam/base_struct'
4
5
 
data/lib/sparsam/types.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
+
2
3
  require 'set'
3
4
 
4
5
  module Sparsam
data/lib/sparsam/union.rb CHANGED
@@ -1,11 +1,14 @@
1
1
  # -*- coding: UTF-8 -*-
2
+
2
3
  require 'sparsam/base_type'
3
4
 
4
5
  module Sparsam
5
6
  class Union
6
7
  include ::Sparsam::BaseType
7
8
 
9
+ # rubocop:disable Airbnb/OptArgParameters
8
10
  def initialize(name = nil, value = nil)
11
+ # rubocop:enable Airbnb/OptArgParameters
9
12
  if name
10
13
  if name.is_a? Hash
11
14
  if name.size > 1
data/lib/sparsam.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
+
2
3
  require 'sparsam_native'
3
4
 
4
5
  require 'sparsam/types'
data/spec/sparsam_spec.rb CHANGED
@@ -72,10 +72,10 @@ describe 'Sparsam' do
72
72
  data.un_field.id_i32.should == 1000
73
73
  data.us_s.size.should == 3
74
74
  ids = Set.new([1, 2, 3])
75
- data.us_s.each { |val|
75
+ data.us_s.each do |val|
76
76
  ids.delete(val.id_i32)
77
77
  val.id_s.should == "id_s default"
78
- }
78
+ end
79
79
  ids.size.should == 0
80
80
  end
81
81
 
@@ -97,67 +97,67 @@ describe 'Sparsam' do
97
97
  it "will throw exceptions when strict validation received a non-conforming type" do
98
98
  data = EasilyInvalid.new
99
99
  data.tail = SS.new
100
- expect {
100
+ expect do
101
101
  Sparsam.validate(NotSS, data, Sparsam::STRICT)
102
- }.to raise_error(Sparsam::TypeMismatch)
102
+ end.to raise_error(Sparsam::TypeMismatch)
103
103
 
104
- expect {
104
+ expect do
105
105
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
106
- }.to raise_error(Sparsam::TypeMismatch)
106
+ end.to raise_error(Sparsam::TypeMismatch)
107
107
 
108
108
  data = EasilyInvalid.new
109
109
  data.s_self = Set.new([EasilyInvalid.new, SS.new])
110
- expect {
110
+ expect do
111
111
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
112
- }.to raise_error(Sparsam::TypeMismatch)
112
+ end.to raise_error(Sparsam::TypeMismatch)
113
113
 
114
114
  data = EasilyInvalid.new
115
115
  data.l_self = [EasilyInvalid.new, SS.new]
116
- expect {
116
+ expect do
117
117
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
118
- }.to raise_error(Sparsam::TypeMismatch)
118
+ end.to raise_error(Sparsam::TypeMismatch)
119
119
 
120
120
  data = EasilyInvalid.new
121
121
  data.mappy1 = { SS.new => 123 }
122
- expect {
122
+ expect do
123
123
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
124
- }.to raise_error(Sparsam::TypeMismatch)
124
+ end.to raise_error(Sparsam::TypeMismatch)
125
125
 
126
126
  data = EasilyInvalid.new
127
127
  data.mappy2 = { 123 => SS.new }
128
- expect {
128
+ expect do
129
129
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
130
- }.to raise_error(Sparsam::TypeMismatch)
130
+ end.to raise_error(Sparsam::TypeMismatch)
131
131
 
132
132
  data = EasilyInvalid.new
133
133
  data.mappy3 = { SS.new => SS.new }
134
- expect {
134
+ expect do
135
135
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
136
- }.to raise_error(Sparsam::TypeMismatch)
136
+ end.to raise_error(Sparsam::TypeMismatch)
137
137
 
138
138
  data = EasilyInvalid.new
139
139
  data.mappy3 = { EasilyInvalid.new => SS.new }
140
- expect {
140
+ expect do
141
141
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
142
- }.to raise_error(Sparsam::TypeMismatch)
142
+ end.to raise_error(Sparsam::TypeMismatch)
143
143
 
144
144
  data = EasilyInvalid.new
145
145
  data.mappy3 = { SS.new => EasilyInvalid.new }
146
- expect {
146
+ expect do
147
147
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
148
- }.to raise_error(Sparsam::TypeMismatch)
148
+ end.to raise_error(Sparsam::TypeMismatch)
149
149
 
150
150
  data = EasilyInvalid.new
151
151
  data.mappy3 = { EasilyInvalid.new => EasilyInvalid.new, SS.new => EasilyInvalid.new }
152
- expect {
152
+ expect do
153
153
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
154
- }.to raise_error(Sparsam::TypeMismatch)
154
+ end.to raise_error(Sparsam::TypeMismatch)
155
155
 
156
156
  data = EasilyInvalid.new
157
157
  data.id_i32 = "I'm pretty sure this is not an I32 LOL"
158
- expect {
158
+ expect do
159
159
  Sparsam.validate(EasilyInvalid, data, Sparsam::STRICT)
160
- }.to raise_error(Sparsam::TypeMismatch)
160
+ end.to raise_error(Sparsam::TypeMismatch)
161
161
  end
162
162
 
163
163
  it "includes additional data in TypeMismatch errors" do
@@ -182,24 +182,24 @@ describe 'Sparsam' do
182
182
 
183
183
  data = EasilyInvalid.new
184
184
  data.sure = [{ Set.new([1]) => { 1 => Set.new([[{ EasilyInvalid.new => 123 }]]) } }]
185
- expect {
185
+ expect do
186
186
  Sparsam.validate(EasilyInvalid, data, Sparsam::RECURSIVE)
187
- }.to raise_error(Sparsam::TypeMismatch)
187
+ end.to raise_error(Sparsam::TypeMismatch)
188
188
  end
189
189
 
190
190
  it "will throw exceptions when recursive validation is passed wrong data" do
191
191
  data = EasilyInvalid.new
192
192
  data.required_stuff = MiniRequired.new
193
- expect {
193
+ expect do
194
194
  Sparsam.validate(EasilyInvalid, data, Sparsam::RECURSIVE)
195
- }.to raise_error(Sparsam::MissingMandatory)
195
+ end.to raise_error(Sparsam::MissingMandatory)
196
196
 
197
197
  data = EasilyInvalid.new
198
198
  data.tail = EasilyInvalid.new
199
199
  data.tail.s_self = Set.new([SS.new])
200
- expect {
200
+ expect do
201
201
  Sparsam.validate(EasilyInvalid, data, Sparsam::RECURSIVE)
202
- }.to raise_error(Sparsam::TypeMismatch)
202
+ end.to raise_error(Sparsam::TypeMismatch)
203
203
  end
204
204
 
205
205
  it "will throw exceptions when passed data that doesn't match type" do
@@ -266,9 +266,9 @@ describe 'Sparsam' do
266
266
  end
267
267
 
268
268
  it "will throw errors when given junk data" do
269
- expect {
269
+ expect do
270
270
  Sparsam::Deserializer.deserialize(SS, "wolololololol")
271
- }.to raise_error(Sparsam::Exception)
271
+ end.to raise_error(Sparsam::Exception)
272
272
  end
273
273
 
274
274
  it "will throw errors when deserializing data with incorrect types" do
@@ -277,9 +277,9 @@ describe 'Sparsam' do
277
277
  data = NotSS.new
278
278
  data.id_s = "I am not an INT"
279
279
  bad_type = data.serialize
280
- expect {
280
+ expect do
281
281
  Sparsam::Deserializer.deserialize(SS, bad_type)
282
- }.to raise_error(Sparsam::TypeMismatch)
282
+ end.to raise_error(Sparsam::TypeMismatch)
283
283
  end
284
284
 
285
285
  it "can deserialize objects with fields it doesn't know about" do
@@ -297,17 +297,17 @@ describe 'Sparsam' do
297
297
  end
298
298
 
299
299
  it 'only allows one field to be set in a union' do
300
- expect {
300
+ expect do
301
301
  UN.new({ :id_i32 => 1000, :id_s => "woops" })
302
- }.to raise_error(Sparsam::UnionException)
302
+ end.to raise_error(Sparsam::UnionException)
303
303
 
304
304
  d = UN.new({ :id_i32 => 1000 })
305
305
  d.id_s = "woops"
306
306
  d.id_s
307
307
 
308
- expect {
308
+ expect do
309
309
  d.id_i32
310
- }.to raise_error(Sparsam::UnionException)
310
+ end.to raise_error(Sparsam::UnionException)
311
311
 
312
312
  d.instance_variables.should eq([:@setfield, :@id_s])
313
313
  end
@@ -354,10 +354,10 @@ describe 'Sparsam' do
354
354
  data.un_field.id_i32.should == 1000
355
355
  data.us_s.size.should == 3
356
356
  ids = Set.new([1, 2, 3])
357
- data.us_s.each { |val|
357
+ data.us_s.each do |val|
358
358
  ids.delete(val.id_i32)
359
359
  val.id_s.should == "id_s default"
360
- }
360
+ end
361
361
  ids.size.should == 0
362
362
  end
363
363
 
@@ -372,9 +372,9 @@ describe 'Sparsam' do
372
372
 
373
373
  it "doesn't segfault on malformed data" do
374
374
  really_bad = "\x0f\x00\x05\x0b\x00\x00\x00\x01\x00\x00\x00\x03\x00"
375
- expect {
375
+ expect do
376
376
  Sparsam::Deserializer.deserialize(SS, really_bad, Sparsam::BinaryProtocol)
377
- }.to raise_error(Sparsam::Exception)
377
+ end.to raise_error(Sparsam::Exception)
378
378
  end
379
379
 
380
380
  it "handles all sorts of type issues without crashing" do
@@ -434,18 +434,18 @@ describe 'Sparsam' do
434
434
 
435
435
  # Validation doesn't do range checking, though serialization does
436
436
  unless val_type.to_s =~ /bigint/
437
- expect {
437
+ expect do
438
438
  Sparsam.validate(s.class, s, Sparsam::STRICT)
439
- }.to(
439
+ end.to(
440
440
  raise_error(Sparsam::TypeMismatch),
441
441
  "assigning #{field} : #{type} a value of " \
442
442
  "#{val.inspect} : #{val_type} did not raise TypeMismatch"
443
443
  )
444
444
  end
445
445
 
446
- expect {
446
+ expect do
447
447
  s.serialize
448
- }.to(
448
+ end.to(
449
449
  raise_error(Sparsam::TypeMismatch),
450
450
  "assigning #{field} : #{type} a value of " \
451
451
  "#{val.inspect} : #{val_type} did not raise TypeMismatch"
@@ -471,16 +471,16 @@ describe 'Sparsam' do
471
471
  [max_val, ~max_val].each do |val|
472
472
  s.send(:"#{field}=", val)
473
473
 
474
- expect {
474
+ expect do
475
475
  s.serialize
476
- }.not_to raise_error, "#{field} of #{size} bits unable to hold #{val}"
476
+ end.not_to raise_error, "#{field} of #{size} bits unable to hold #{val}"
477
477
  end
478
478
 
479
479
  [max_val + 1, ~(max_val + 1)].each do |val|
480
480
  s.send(:"#{field}=", val)
481
- expect {
481
+ expect do
482
482
  s.serialize
483
- }.to(
483
+ end.to(
484
484
  raise_error(RangeError),
485
485
  "#{field} of #{size} bits apparently able to hold value #{val} in defiance of nature"
486
486
  )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparsam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airbnb Thrift Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-19 00:00:00.000000000 Z
11
+ date: 2023-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '11.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: rubocop-airbnb
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.41.2
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 0.41.2
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop-rspec
70
+ name: rubocop-rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.5.0
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.5.0
82
+ version: '0'
83
83
  description: Ruby bindings for the Apache Thrift RPC system
84
84
  email:
85
85
  - foundation.performance-eng@airbnb.com