oj 3.16.7 → 3.16.8

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: 71fccfc65816b5412064b2295b66c038029cbea37dcae9475002753850d47740
4
- data.tar.gz: f559a6cbe6ebce9443564d679ade4e527da6784d35c7a71bf7a85c4e2c0b2f75
3
+ metadata.gz: dd892ffebade1cd09db195de3776e8243b6cff9da4cb75ab57bc80c7b41d7adc
4
+ data.tar.gz: ba7345e84005d76de67001c6d42dd7be457b8ca62c35fd3f03ea90779d818d3f
5
5
  SHA512:
6
- metadata.gz: 5cc33a15e43c946351d281b65f1f692a9ad8b4055c3848f8f540f9b7f1043a1f4f8844b67ff17ffe072193d4a1922a596f4b941ee3a93c2f4eb4b52fedf191ec
7
- data.tar.gz: 1314ce1b2d92fe30dd971832a294ee2052ac1434a3f026fa534573c55488a60de3f2ff0f81bb1577c0dc8941c84c75e5a18ac8d79d2f86c9b52c56fc225a4eca
6
+ metadata.gz: 6bd02aae21bc2ccb6855a86ee68f3810caa76df4db695fb1d400e7c200813e4ed8f8244c88545ca16f8bf8c39063d5f38ac6f76afafdf655939868a683b66cb3
7
+ data.tar.gz: 939ffdbf9336eda7e261c8acbab50a55b868be7c3574daaa9520deae51e5bcf615759265cd0ad54886f7faf49634c31db7ae7523e18edb3c0632f43fc199841f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.16.8 - 2024-12-14
4
+
5
+ - Fixed StreamWriter to write to non-file IO thanks to @jscheid.
6
+
3
7
  ## 3.16.7 - 2024-11-01
4
8
 
5
9
  - Changed string_writer_as_json to allow multiple arguments.
@@ -42,7 +42,8 @@ static void stream_writer_write(StreamWriter sw) {
42
42
 
43
43
  switch (sw->type) {
44
44
  case STRING_IO:
45
- case STREAM_IO: {
45
+ case STREAM_IO:
46
+ case FILE_IO: {
46
47
  volatile VALUE rs = rb_str_new(sw->sw.out.buf, size);
47
48
 
48
49
  // Oddly enough, when pushing ASCII characters with UTF-8 encoding or
@@ -53,11 +54,6 @@ static void stream_writer_write(StreamWriter sw) {
53
54
  rb_funcall(sw->stream, oj_write_id, 1, rs);
54
55
  break;
55
56
  }
56
- case FILE_IO:
57
- if (size != write(sw->fd, sw->sw.out.buf, size)) {
58
- rb_raise(rb_eIOError, "Write failed. [_%d_:%s]\n", errno, strerror(errno));
59
- }
60
- break;
61
57
  default: rb_raise(rb_eArgError, "expected an IO Object.");
62
58
  }
63
59
  stream_writer_reset_buf(sw);
data/lib/oj/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Oj
2
2
  # Current version of the module.
3
- VERSION = '3.16.7'
3
+ VERSION = '3.16.8'
4
4
  end
data/test/test_writer.rb CHANGED
@@ -4,6 +4,7 @@
4
4
  $LOAD_PATH << __dir__
5
5
 
6
6
  require 'helper'
7
+ require 'open3'
7
8
 
8
9
  class OjWriter < Minitest::Test
9
10
 
@@ -377,4 +378,19 @@ class OjWriter < Minitest::Test
377
378
  w.pop()
378
379
  assert_equal(%|{"nothing":null}\n|, output.string())
379
380
  end
381
+
382
+ def test_stream_writer_subprocess
383
+ skip if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
384
+
385
+ Open3.popen3("/bin/bash", "-c", "cat > /dev/null") do |stdin, _stdout, _stderr, _wait_thr|
386
+ w = Oj::StreamWriter.new(stdin, :indent => 0)
387
+ w.push_array()
388
+ chunk = "{\"foo\":\"#{"bar"*1000}\"}"
389
+ 1000.times do |_|
390
+ w.push_json(chunk)
391
+ end
392
+ w.pop()
393
+ stdin.close
394
+ end
395
+ end
380
396
  end # OjWriter
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oj
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.16.7
4
+ version: 3.16.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Ohler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-01 00:00:00.000000000 Z
11
+ date: 2024-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal