bson 4.8.1 → 4.8.2

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
  SHA256:
3
- metadata.gz: ef5a31f0820c55727982451d554e05971480a6df19a3a959eea4731326193614
4
- data.tar.gz: 8928dec44431fa67fba6f5b95a469ee5e8c8d17d12880ac5c35aa556acff697a
3
+ metadata.gz: e38ba3f134f5442df04b99f97b72d5804958bd0e67a0671120c68b8e478a6bbc
4
+ data.tar.gz: aea2543db1c169057f384ee24b3823c7ecee63c50db026666e5a0ac3b657de02
5
5
  SHA512:
6
- metadata.gz: 48e4afe1f4da2dd9161e326f05c9c3dcf0f287845eb46fb3eebfe08e761df0e73d36bf0745867fca70ace7345d8a243826da9a0f89f9b3c4a28e903b74817949
7
- data.tar.gz: b40043516efec6952d2f83ffa84183ed4e7e23a545ed9b51e12729d65f6a944131468ea4278dccf4cdde5e6ec9f859bc9cad04aeae167f9a143ebe62731df9e3
6
+ metadata.gz: 4cb39ca20cec492ae47a8ec79135dac10bc9abbd3efcbd75463af6659a37450048160a7ee72015ed5c0c1f15252b3ce2d760d1a9ecaa36135b5335e3792ec211
7
+ data.tar.gz: 981cb9b77564419678f14382ba5e63c8c55ad4ae8d500953a7b64bbc031614c1b235d76140e62573f806a0e37a680eaafd7e0699e57a41e810d028f8c74fee56
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/bson/array.rb CHANGED
@@ -122,7 +122,13 @@ module BSON
122
122
  buffer.get_int32 # throw away the length
123
123
  while (type = buffer.get_byte) != NULL_BYTE
124
124
  buffer.get_cstring
125
- array << BSON::Registry.get(type).from_bson(buffer, **options)
125
+ cls = BSON::Registry.get(type)
126
+ value = if options.empty?
127
+ cls.from_bson(buffer)
128
+ else
129
+ cls.from_bson(buffer, **options)
130
+ end
131
+ array << value
126
132
  end
127
133
  array
128
134
  end
@@ -120,7 +120,13 @@ module BSON
120
120
  # @since 2.0.0
121
121
  def self.from_bson(buffer, **options)
122
122
  buffer.get_int32 # Throw away the total length.
123
- new(buffer.get_string, ::Hash.from_bson(buffer, **options))
123
+ javascript = buffer.get_string
124
+ scope = if options.empty?
125
+ ::Hash.from_bson(buffer)
126
+ else
127
+ ::Hash.from_bson(buffer, **options)
128
+ end
129
+ new(javascript, scope)
124
130
  end
125
131
 
126
132
  # Register this type when the module is loaded.
@@ -95,7 +95,13 @@ module BSON
95
95
  #
96
96
  # @see http://bsonspec.org/#/specification
97
97
  def self.from_bson(buffer, **options)
98
- new(buffer.get_string, ObjectId.from_bson(buffer, **options))
98
+ ref = buffer.get_string
99
+ id = if options.empty?
100
+ ObjectId.from_bson(buffer)
101
+ else
102
+ ObjectId.from_bson(buffer, **options)
103
+ end
104
+ new(ref, id)
99
105
  end
100
106
 
101
107
  # Register this type when the module is loaded.
data/lib/bson/ext_json.rb CHANGED
@@ -251,13 +251,13 @@ module BSON
251
251
  when '$date'
252
252
  case value
253
253
  when String
254
- ::Time.parse(value)
254
+ ::Time.parse(value).utc
255
255
  when Hash
256
256
  unless value.keys.sort == %w($numberLong)
257
257
  raise Error::ExtJSONParseError, "Invalid value for $date: #{value}"
258
258
  end
259
259
  sec, msec = value.values.first.to_i.divmod(1000)
260
- ::Time.at(sec, msec*1000)
260
+ ::Time.at(sec, msec*1000).utc
261
261
  else
262
262
  raise Error::ExtJSONParseError, "Invalid value for $date: #{value}"
263
263
  end
data/lib/bson/version.rb CHANGED
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module BSON
16
- VERSION = "4.8.1".freeze
16
+ VERSION = "4.8.2".freeze
17
17
  end
@@ -50,14 +50,46 @@ describe "BSON::ExtJSON.parse" do
50
50
  end
51
51
  end
52
52
 
53
- context 'when input is a timestamp' do
53
+ context 'when input is a BSON timestamp' do
54
54
  let(:input) { {'$timestamp' => {'t' => 12345, 'i' => 42}} }
55
55
 
56
- it 'returns a timestamp object' do
56
+ it 'returns a BSON::Timestamp instance' do
57
57
  parsed.should == BSON::Timestamp.new(12345, 42)
58
58
  end
59
59
  end
60
60
 
61
+ context 'when input is an ISO time' do
62
+ let(:input) { {'$date' => '1970-01-01T00:00:04Z'} }
63
+
64
+ it 'returns a Time instance ' do
65
+ parsed.should be_a(Time)
66
+ end
67
+
68
+ it 'returns a Time instance with correct value' do
69
+ parsed.should == Time.at(4)
70
+ end
71
+
72
+ it 'returns a Time instance in UTC' do
73
+ parsed.zone.should == 'UTC'
74
+ end
75
+ end
76
+
77
+ context 'when input is a Unix timestamp' do
78
+ let(:input) { {'$date' => {'$numberLong' => '4000'}} }
79
+
80
+ it 'returns a Time instance ' do
81
+ parsed.should be_a(Time)
82
+ end
83
+
84
+ it 'returns a Time instance with correct value' do
85
+ parsed.should == Time.at(4)
86
+ end
87
+
88
+ it 'returns a Time instance in UTC' do
89
+ parsed.zone.should == 'UTC'
90
+ end
91
+ end
92
+
61
93
  context 'when input is an int32' do
62
94
  let(:input) do
63
95
  {'$numberInt' => '42'}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bson
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.1
4
+ version: 4.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Brock
@@ -33,7 +33,7 @@ cert_chain:
33
33
  gpvfPNWMwyBDlHaNS3GfO6cRRxBOvEG05GUCsvtTY4Bpe8yjE64wg1ymb47LMOnv
34
34
  Qb1lGORmf/opg45mluKUYl7pQNZHD0d3
35
35
  -----END CERTIFICATE-----
36
- date: 2020-03-03 00:00:00.000000000 Z
36
+ date: 2020-03-04 00:00:00.000000000 Z
37
37
  dependencies: []
38
38
  description: A fully featured BSON specification implementation in Ruby
39
39
  email:
@@ -235,118 +235,118 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
235
  - !ruby/object:Gem::Version
236
236
  version: 1.3.6
237
237
  requirements: []
238
- rubygems_version: 3.0.1
238
+ rubygems_version: 3.1.2
239
239
  signing_key:
240
240
  specification_version: 4
241
241
  summary: Ruby implementation of the BSON specification
242
242
  test_files:
243
- - spec/bson/min_key_spec.rb
243
+ - spec/bson/date_spec.rb
244
+ - spec/bson/config_spec.rb
245
+ - spec/bson/int64_spec.rb
244
246
  - spec/bson/undefined_spec.rb
245
- - spec/bson/regexp_spec.rb
246
- - spec/bson/decimal128_spec.rb
247
247
  - spec/bson/code_spec.rb
248
- - spec/bson/time_spec.rb
249
248
  - spec/bson/object_spec.rb
250
- - spec/bson/integer_spec.rb
249
+ - spec/bson/date_time_spec.rb
250
+ - spec/bson/raw_spec.rb
251
+ - spec/bson/min_key_spec.rb
252
+ - spec/bson/time_with_zone_spec.rb
253
+ - spec/bson/time_spec.rb
254
+ - spec/bson/hash_spec.rb
255
+ - spec/bson/ext_json_parse_spec.rb
256
+ - spec/bson/timestamp_spec.rb
257
+ - spec/bson/int32_spec.rb
258
+ - spec/bson/byte_buffer_spec.rb
259
+ - spec/bson/registry_spec.rb
260
+ - spec/bson/symbol_raw_spec.rb
261
+ - spec/bson/regexp_spec.rb
262
+ - spec/bson/byte_buffer_write_spec.rb
263
+ - spec/bson/symbol_spec.rb
251
264
  - spec/bson/string_spec.rb
252
- - spec/bson/byte_buffer_read_spec.rb
253
- - spec/bson/config_spec.rb
254
- - spec/bson/json_spec.rb
255
265
  - spec/bson/boolean_spec.rb
256
- - spec/bson/hash_spec.rb
257
266
  - spec/bson/open_struct_spec.rb
258
- - spec/bson/nil_class_spec.rb
267
+ - spec/bson/decimal128_spec.rb
268
+ - spec/bson/json_spec.rb
259
269
  - spec/bson/array_spec.rb
260
270
  - spec/bson/false_class_spec.rb
261
- - spec/bson/symbol_raw_spec.rb
262
- - spec/bson/binary_uuid_spec.rb
263
- - spec/bson/ext_json_parse_spec.rb
264
271
  - spec/bson/true_class_spec.rb
265
- - spec/bson/date_spec.rb
266
- - spec/bson/byte_buffer_write_spec.rb
267
- - spec/bson/int64_spec.rb
268
- - spec/bson/timestamp_spec.rb
269
- - spec/bson/max_key_spec.rb
270
- - spec/bson/raw_spec.rb
271
- - spec/bson/byte_buffer_spec.rb
272
- - spec/bson/document_spec.rb
273
- - spec/bson/code_with_scope_spec.rb
274
- - spec/bson/float_spec.rb
275
- - spec/bson/time_with_zone_spec.rb
276
272
  - spec/bson/binary_spec.rb
277
- - spec/bson/registry_spec.rb
278
- - spec/bson/symbol_spec.rb
279
- - spec/bson/date_time_spec.rb
273
+ - spec/bson/binary_uuid_spec.rb
280
274
  - spec/bson/object_id_spec.rb
281
- - spec/bson/int32_spec.rb
275
+ - spec/bson/code_with_scope_spec.rb
276
+ - spec/bson/nil_class_spec.rb
277
+ - spec/bson/integer_spec.rb
278
+ - spec/bson/document_spec.rb
279
+ - spec/bson/max_key_spec.rb
280
+ - spec/bson/byte_buffer_read_spec.rb
281
+ - spec/bson/float_spec.rb
282
282
  - spec/support/utils.rb
283
283
  - spec/support/shared_examples.rb
284
284
  - spec/support/spec_config.rb
285
- - spec/bson_spec.rb
286
- - spec/spec_tests/corpus_spec.rb
287
- - spec/spec_tests/corpus_legacy_spec.rb
288
- - spec/spec_tests/data/decimal128/decimal128-6.json
285
+ - spec/spec_helper.rb
286
+ - spec/spec_tests/data/decimal128/decimal128-4.json
287
+ - spec/spec_tests/data/decimal128/decimal128-2.json
288
+ - spec/spec_tests/data/decimal128/decimal128-5.json
289
289
  - spec/spec_tests/data/decimal128/decimal128-3.json
290
+ - spec/spec_tests/data/decimal128/decimal128-6.json
290
291
  - spec/spec_tests/data/decimal128/decimal128-1.json
291
- - spec/spec_tests/data/decimal128/decimal128-4.json
292
292
  - spec/spec_tests/data/decimal128/decimal128-7.json
293
- - spec/spec_tests/data/decimal128/decimal128-5.json
294
- - spec/spec_tests/data/decimal128/decimal128-2.json
295
- - spec/spec_tests/data/corpus_legacy/code_w_scope.json
296
- - spec/spec_tests/data/corpus_legacy/undefined.json
297
- - spec/spec_tests/data/corpus_legacy/code.json
298
- - spec/spec_tests/data/corpus_legacy/oid.json
299
- - spec/spec_tests/data/corpus_legacy/timestamp.json
300
- - spec/spec_tests/data/corpus_legacy/string.json
301
- - spec/spec_tests/data/corpus_legacy/binary.json
302
- - spec/spec_tests/data/corpus_legacy/null.json
303
- - spec/spec_tests/data/corpus_legacy/int32.json
304
- - spec/spec_tests/data/corpus_legacy/maxkey.json
305
- - spec/spec_tests/data/corpus_legacy/array.json
306
- - spec/spec_tests/data/corpus_legacy/regex.json
307
- - spec/spec_tests/data/corpus_legacy/minkey.json
308
- - spec/spec_tests/data/corpus_legacy/top.json
309
- - spec/spec_tests/data/corpus_legacy/failures/symbol.json
310
- - spec/spec_tests/data/corpus_legacy/failures/int64.json
311
- - spec/spec_tests/data/corpus_legacy/failures/dbpointer.json
312
- - spec/spec_tests/data/corpus_legacy/failures/datetime.json
313
- - spec/spec_tests/data/corpus_legacy/boolean.json
314
- - spec/spec_tests/data/corpus_legacy/double.json
315
- - spec/spec_tests/data/corpus_legacy/document.json
316
- - spec/spec_tests/data/corpus/code_w_scope.json
317
- - spec/spec_tests/data/corpus/undefined.json
318
- - spec/spec_tests/data/corpus/code.json
319
- - spec/spec_tests/data/corpus/decimal128-6.json
320
- - spec/spec_tests/data/corpus/oid.json
321
- - spec/spec_tests/data/corpus/timestamp.json
322
- - spec/spec_tests/data/corpus/decimal128-3.json
293
+ - spec/spec_tests/data/corpus/multi-type.json
323
294
  - spec/spec_tests/data/corpus/string.json
295
+ - spec/spec_tests/data/corpus/decimal128-4.json
296
+ - spec/spec_tests/data/corpus/README.md
324
297
  - spec/spec_tests/data/corpus/binary.json
298
+ - spec/spec_tests/data/corpus/decimal128-2.json
299
+ - spec/spec_tests/data/corpus/dbpointer.json
300
+ - spec/spec_tests/data/corpus/dbref.json
325
301
  - spec/spec_tests/data/corpus/null.json
326
302
  - spec/spec_tests/data/corpus/int32.json
327
- - spec/spec_tests/data/corpus/multi-type.json
328
- - spec/spec_tests/data/corpus/decimal128-1.json
329
- - spec/spec_tests/data/corpus/decimal128-4.json
330
- - spec/spec_tests/data/corpus/README.md
331
303
  - spec/spec_tests/data/corpus/maxkey.json
332
- - spec/spec_tests/data/corpus/array.json
304
+ - spec/spec_tests/data/corpus/timestamp.json
305
+ - spec/spec_tests/data/corpus/multi-type-deprecated.json
306
+ - spec/spec_tests/data/corpus/code.json
307
+ - spec/spec_tests/data/corpus/document.json
308
+ - spec/spec_tests/data/corpus/double.json
309
+ - spec/spec_tests/data/corpus/decimal128-5.json
333
310
  - spec/spec_tests/data/corpus/regex.json
334
- - spec/spec_tests/data/corpus/dbref.json
335
311
  - spec/spec_tests/data/corpus/symbol.json
336
- - spec/spec_tests/data/corpus/minkey.json
337
- - spec/spec_tests/data/corpus/decimal128-7.json
312
+ - spec/spec_tests/data/corpus/decimal128-3.json
313
+ - spec/spec_tests/data/corpus/decimal128-6.json
314
+ - spec/spec_tests/data/corpus/oid.json
338
315
  - spec/spec_tests/data/corpus/top.json
339
- - spec/spec_tests/data/corpus/decimal128-5.json
316
+ - spec/spec_tests/data/corpus/decimal128-1.json
340
317
  - spec/spec_tests/data/corpus/boolean.json
341
- - spec/spec_tests/data/corpus/int64.json
342
- - spec/spec_tests/data/corpus/decimal128-2.json
343
- - spec/spec_tests/data/corpus/dbpointer.json
344
- - spec/spec_tests/data/corpus/double.json
345
- - spec/spec_tests/data/corpus/multi-type-deprecated.json
346
- - spec/spec_tests/data/corpus/document.json
318
+ - spec/spec_tests/data/corpus/decimal128-7.json
319
+ - spec/spec_tests/data/corpus/array.json
320
+ - spec/spec_tests/data/corpus/code_w_scope.json
321
+ - spec/spec_tests/data/corpus/undefined.json
322
+ - spec/spec_tests/data/corpus/minkey.json
347
323
  - spec/spec_tests/data/corpus/datetime.json
324
+ - spec/spec_tests/data/corpus/int64.json
325
+ - spec/spec_tests/data/corpus_legacy/string.json
326
+ - spec/spec_tests/data/corpus_legacy/binary.json
327
+ - spec/spec_tests/data/corpus_legacy/null.json
328
+ - spec/spec_tests/data/corpus_legacy/int32.json
329
+ - spec/spec_tests/data/corpus_legacy/maxkey.json
330
+ - spec/spec_tests/data/corpus_legacy/timestamp.json
331
+ - spec/spec_tests/data/corpus_legacy/failures/dbpointer.json
332
+ - spec/spec_tests/data/corpus_legacy/failures/symbol.json
333
+ - spec/spec_tests/data/corpus_legacy/failures/datetime.json
334
+ - spec/spec_tests/data/corpus_legacy/failures/int64.json
335
+ - spec/spec_tests/data/corpus_legacy/code.json
336
+ - spec/spec_tests/data/corpus_legacy/document.json
337
+ - spec/spec_tests/data/corpus_legacy/double.json
338
+ - spec/spec_tests/data/corpus_legacy/regex.json
339
+ - spec/spec_tests/data/corpus_legacy/oid.json
340
+ - spec/spec_tests/data/corpus_legacy/top.json
341
+ - spec/spec_tests/data/corpus_legacy/boolean.json
342
+ - spec/spec_tests/data/corpus_legacy/array.json
343
+ - spec/spec_tests/data/corpus_legacy/code_w_scope.json
344
+ - spec/spec_tests/data/corpus_legacy/undefined.json
345
+ - spec/spec_tests/data/corpus_legacy/minkey.json
348
346
  - spec/spec_tests/common_driver_spec.rb
349
- - spec/spec_helper.rb
350
- - spec/runners/corpus_legacy.rb
351
- - spec/runners/common_driver.rb
347
+ - spec/spec_tests/corpus_spec.rb
348
+ - spec/spec_tests/corpus_legacy_spec.rb
349
+ - spec/bson_spec.rb
352
350
  - spec/runners/corpus.rb
351
+ - spec/runners/common_driver.rb
352
+ - spec/runners/corpus_legacy.rb
metadata.gz.sig CHANGED
Binary file