This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 7c8ce4589a GH-41770: [CI][GLib] Remove temporary files explicitly 
(#41807)
7c8ce4589a is described below

commit 7c8ce4589ae9e3c4a9c0cd54cff81a54ac003079
Author: Sutou Kouhei <[email protected]>
AuthorDate: Sat May 25 12:34:04 2024 +0900

    GH-41770: [CI][GLib] Remove temporary files explicitly (#41807)
    
    ### Rationale for this change
    
    If we remove temporary files by GC, "`unlink': Permission denied" warnings 
are happen on Windows.
    
    ### What changes are included in this PR?
    
    Use `Tempfile.create {...}` to remove temporary files explicitly.
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    No.
    * GitHub Issue: #41770
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 c_glib/test/parquet/test-arrow-file-reader.rb      | 27 ++++++----
 c_glib/test/parquet/test-arrow-file-writer.rb      | 27 ++++++----
 c_glib/test/parquet/test-boolean-statistics.rb     | 24 ++++++---
 c_glib/test/parquet/test-byte-array-statistics.rb  | 24 ++++++---
 c_glib/test/parquet/test-column-chunk-metadata.rb  | 61 +++++++++++++---------
 c_glib/test/parquet/test-double-statistics.rb      | 24 ++++++---
 c_glib/test/parquet/test-file-metadata.rb          | 61 +++++++++++++---------
 .../test-fixed-length-byte-array-statistics.rb     | 28 ++++++----
 c_glib/test/parquet/test-float-statistics.rb       | 24 ++++++---
 c_glib/test/parquet/test-int32-statistics.rb       | 24 ++++++---
 c_glib/test/parquet/test-int64-statistics.rb       | 26 +++++----
 c_glib/test/parquet/test-row-group-metadata.rb     | 61 +++++++++++++---------
 c_glib/test/parquet/test-statistics.rb             | 36 ++++++++-----
 13 files changed, 281 insertions(+), 166 deletions(-)

diff --git a/c_glib/test/parquet/test-arrow-file-reader.rb 
b/c_glib/test/parquet/test-arrow-file-reader.rb
index 45eb335965..eff5ad966a 100644
--- a/c_glib/test/parquet/test-arrow-file-reader.rb
+++ b/c_glib/test/parquet/test-arrow-file-reader.rb
@@ -20,16 +20,23 @@ class TestParquetArrowFileReader < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @a_array = build_string_array(["foo", "bar"])
-    @b_array = build_int32_array([123, 456])
-    @table = build_table("a" => @a_array,
-                         "b" => @b_array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1
-    writer.write_table(@table, chunk_size)
-    writer.close
-    @reader = Parquet::ArrowFileReader.new(@file.path)
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @a_array = build_string_array(["foo", "bar"])
+      @b_array = build_int32_array([123, 456])
+      @table = build_table("a" => @a_array,
+                           "b" => @b_array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1
+      writer.write_table(@table, chunk_size)
+      writer.close
+      @reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        yield
+      ensure
+        @reader.unref
+      end
+    end
   end
 
   def test_schema
diff --git a/c_glib/test/parquet/test-arrow-file-writer.rb 
b/c_glib/test/parquet/test-arrow-file-writer.rb
index 855527444d..f899e7273b 100644
--- a/c_glib/test/parquet/test-arrow-file-writer.rb
+++ b/c_glib/test/parquet/test-arrow-file-writer.rb
@@ -20,7 +20,10 @@ class TestParquetArrowFileWriter < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      yield
+    end
   end
 
   def test_write
@@ -33,14 +36,18 @@ class TestParquetArrowFileWriter < Test::Unit::TestCase
     writer.close
 
     reader = Parquet::ArrowFileReader.new(@file.path)
-    reader.use_threads = true
-    assert_equal([
-                   enabled_values.length / chunk_size,
-                   true,
-                 ],
-                 [
-                   reader.n_row_groups,
-                   table.equal_metadata(reader.read_table, false),
-                 ])
+    begin
+      reader.use_threads = true
+      assert_equal([
+                     enabled_values.length / chunk_size,
+                     true,
+                   ],
+                   [
+                     reader.n_row_groups,
+                     table.equal_metadata(reader.read_table, false),
+                   ])
+    ensure
+      reader.unref
+    end
   end
 end
diff --git a/c_glib/test/parquet/test-boolean-statistics.rb 
b/c_glib/test/parquet/test-boolean-statistics.rb
index 6131a22195..2443486413 100644
--- a/c_glib/test/parquet/test-boolean-statistics.rb
+++ b/c_glib/test/parquet/test-boolean-statistics.rb
@@ -20,14 +20,22 @@ class TestParquetBooleanStatistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("boolean" => build_boolean_array([nil, false, true]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("boolean" => build_boolean_array([nil, false, 
true]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-byte-array-statistics.rb 
b/c_glib/test/parquet/test-byte-array-statistics.rb
index 50ec409dbc..b9693a77ff 100644
--- a/c_glib/test/parquet/test-byte-array-statistics.rb
+++ b/c_glib/test/parquet/test-byte-array-statistics.rb
@@ -20,14 +20,22 @@ class TestParquetByteArrayStatistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("string" => build_string_array([nil, "abc", "xyz"]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("string" => build_string_array([nil, "abc", "xyz"]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-column-chunk-metadata.rb 
b/c_glib/test/parquet/test-column-chunk-metadata.rb
index a93fe85bbf..f0012f0124 100644
--- a/c_glib/test/parquet/test-column-chunk-metadata.rb
+++ b/c_glib/test/parquet/test-column-chunk-metadata.rb
@@ -20,35 +20,46 @@ class TestParquetColumnChunkMetadata < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @string_array = build_string_array([nil, "hello"])
-    fields = [
-      Arrow::Field.new("int8", Arrow::Int8DataType.new),
-      Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
-    ]
-    structs = [
-      {
-        "int8" => -29,
-        "boolean" => true,
-      },
-      nil,
-    ]
-    @struct_array = build_struct_array(fields, structs)
-    @table = build_table("string" => @string_array,
-                         "struct" => @struct_array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @metadata = reader.metadata.get_row_group(0).get_column_chunk(0)
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @string_array = build_string_array([nil, "hello"])
+      fields = [
+        Arrow::Field.new("int8", Arrow::Int8DataType.new),
+        Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
+      ]
+      structs = [
+        {
+          "int8" => -29,
+          "boolean" => true,
+        },
+        nil,
+      ]
+      @struct_array = build_struct_array(fields, structs)
+      @table = build_table("string" => @string_array,
+                           "struct" => @struct_array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @metadata = reader.metadata.get_row_group(0).get_column_chunk(0)
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#==") do
     reader = Parquet::ArrowFileReader.new(@file.path)
-    other_metadata = reader.metadata.get_row_group(0).get_column_chunk(0)
-    assert do
-      @metadata == other_metadata
+    begin
+      other_metadata = reader.metadata.get_row_group(0).get_column_chunk(0)
+      assert do
+        @metadata == other_metadata
+      end
+    ensure
+      reader.unref
     end
   end
 
diff --git a/c_glib/test/parquet/test-double-statistics.rb 
b/c_glib/test/parquet/test-double-statistics.rb
index a610fb24a9..6c7a958245 100644
--- a/c_glib/test/parquet/test-double-statistics.rb
+++ b/c_glib/test/parquet/test-double-statistics.rb
@@ -20,14 +20,22 @@ class TestParquetDoubleStatistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("double" => build_double_array([nil, -2.9, 2.9]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("double" => build_double_array([nil, -2.9, 2.9]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-file-metadata.rb 
b/c_glib/test/parquet/test-file-metadata.rb
index 2bca7e66e0..aec3f4ab82 100644
--- a/c_glib/test/parquet/test-file-metadata.rb
+++ b/c_glib/test/parquet/test-file-metadata.rb
@@ -20,35 +20,46 @@ class TestParquetFileMetadata < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @string_array = build_string_array([nil, "hello"])
-    fields = [
-      Arrow::Field.new("int8", Arrow::Int8DataType.new),
-      Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
-    ]
-    structs = [
-      {
-        "int8" => -29,
-        "boolean" => true,
-      },
-      nil,
-    ]
-    @struct_array = build_struct_array(fields, structs)
-    @table = build_table("string" => @string_array,
-                         "struct" => @struct_array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @metadata = reader.metadata
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @string_array = build_string_array([nil, "hello"])
+      fields = [
+        Arrow::Field.new("int8", Arrow::Int8DataType.new),
+        Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
+      ]
+      structs = [
+        {
+          "int8" => -29,
+          "boolean" => true,
+        },
+        nil,
+      ]
+      @struct_array = build_struct_array(fields, structs)
+      @table = build_table("string" => @string_array,
+                           "struct" => @struct_array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @metadata = reader.metadata
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#==") do
     reader = Parquet::ArrowFileReader.new(@file.path)
-    other_metadata = reader.metadata
-    assert do
-      @metadata == other_metadata
+    begin
+      other_metadata = reader.metadata
+      assert do
+        @metadata == other_metadata
+      end
+    ensure
+      reader.unref
     end
   end
 
diff --git a/c_glib/test/parquet/test-fixed-length-byte-array-statistics.rb 
b/c_glib/test/parquet/test-fixed-length-byte-array-statistics.rb
index 87a96d009c..c2f179627d 100644
--- a/c_glib/test/parquet/test-fixed-length-byte-array-statistics.rb
+++ b/c_glib/test/parquet/test-fixed-length-byte-array-statistics.rb
@@ -20,16 +20,24 @@ class TestParquetFixedLengthByteArrayStatistics < 
Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    data_type = Arrow::FixedSizeBinaryDataType.new(3)
-    array = build_fixed_size_binary_array(data_type, [nil, "abc", "xyz"])
-    @table = build_table("binary" => array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      data_type = Arrow::FixedSizeBinaryDataType.new(3)
+      array = build_fixed_size_binary_array(data_type, [nil, "abc", "xyz"])
+      @table = build_table("binary" => array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-float-statistics.rb 
b/c_glib/test/parquet/test-float-statistics.rb
index 2622a2bb36..7d1a233f53 100644
--- a/c_glib/test/parquet/test-float-statistics.rb
+++ b/c_glib/test/parquet/test-float-statistics.rb
@@ -20,14 +20,22 @@ class TestParquetFloatStatistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("float" => build_float_array([nil, -2.9, 2.9]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("float" => build_float_array([nil, -2.9, 2.9]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-int32-statistics.rb 
b/c_glib/test/parquet/test-int32-statistics.rb
index 041f07c742..8d41327f88 100644
--- a/c_glib/test/parquet/test-int32-statistics.rb
+++ b/c_glib/test/parquet/test-int32-statistics.rb
@@ -20,14 +20,22 @@ class TestParquetInt32Statistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("int32" => build_int32_array([nil, -2, 9]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("int32" => build_int32_array([nil, -2, 9]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-int64-statistics.rb 
b/c_glib/test/parquet/test-int64-statistics.rb
index 0a014573c1..81fce8a0bb 100644
--- a/c_glib/test/parquet/test-int64-statistics.rb
+++ b/c_glib/test/parquet/test-int64-statistics.rb
@@ -20,15 +20,23 @@ class TestParquetInt64Statistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    array = build_int64_array([nil, -(2 ** 32), 2 ** 32])
-    @table = build_table("int64" => array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      array = build_int64_array([nil, -(2 ** 32), 2 ** 32])
+      @table = build_table("int64" => array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#min") do
diff --git a/c_glib/test/parquet/test-row-group-metadata.rb 
b/c_glib/test/parquet/test-row-group-metadata.rb
index e68cb9d11e..f238dd3b57 100644
--- a/c_glib/test/parquet/test-row-group-metadata.rb
+++ b/c_glib/test/parquet/test-row-group-metadata.rb
@@ -20,35 +20,46 @@ class TestParquetRowGroupMetadata < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @string_array = build_string_array([nil, "hello"])
-    fields = [
-      Arrow::Field.new("int8", Arrow::Int8DataType.new),
-      Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
-    ]
-    structs = [
-      {
-        "int8" => -29,
-        "boolean" => true,
-      },
-      nil,
-    ]
-    @struct_array = build_struct_array(fields, structs)
-    @table = build_table("string" => @string_array,
-                         "struct" => @struct_array)
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @metadata = reader.metadata.get_row_group(0)
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @string_array = build_string_array([nil, "hello"])
+      fields = [
+        Arrow::Field.new("int8", Arrow::Int8DataType.new),
+        Arrow::Field.new("boolean", Arrow::BooleanDataType.new),
+      ]
+      structs = [
+        {
+          "int8" => -29,
+          "boolean" => true,
+        },
+        nil,
+      ]
+      @struct_array = build_struct_array(fields, structs)
+      @table = build_table("string" => @string_array,
+                           "struct" => @struct_array)
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @metadata = reader.metadata.get_row_group(0)
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#==") do
     reader = Parquet::ArrowFileReader.new(@file.path)
-    other_metadata = reader.metadata.get_row_group(0)
-    assert do
-      @metadata == other_metadata
+    begin
+      other_metadata = reader.metadata.get_row_group(0)
+      assert do
+        @metadata == other_metadata
+      end
+    ensure
+      reader.unref
     end
   end
 
diff --git a/c_glib/test/parquet/test-statistics.rb 
b/c_glib/test/parquet/test-statistics.rb
index 0367084c88..09a47ac255 100644
--- a/c_glib/test/parquet/test-statistics.rb
+++ b/c_glib/test/parquet/test-statistics.rb
@@ -20,22 +20,34 @@ class TestParquetStatistics < Test::Unit::TestCase
 
   def setup
     omit("Parquet is required") unless defined?(::Parquet)
-    @file = Tempfile.open(["data", ".parquet"])
-    @table = build_table("int32" => build_int32_array([nil, 2, 2, 9]))
-    writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
-    chunk_size = 1024
-    writer.write_table(@table, chunk_size)
-    writer.close
-    reader = Parquet::ArrowFileReader.new(@file.path)
-    @statistics = 
reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+    Tempfile.create(["data", ".parquet"]) do |file|
+      @file = file
+      @table = build_table("int32" => build_int32_array([nil, 2, 2, 9]))
+      writer = Parquet::ArrowFileWriter.new(@table.schema, @file.path)
+      chunk_size = 1024
+      writer.write_table(@table, chunk_size)
+      writer.close
+      reader = Parquet::ArrowFileReader.new(@file.path)
+      begin
+        @statistics =
+          reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+        yield
+      ensure
+        reader.unref
+      end
+    end
   end
 
   test("#==") do
     reader = Parquet::ArrowFileReader.new(@file.path)
-    other_statistics =
-      reader.metadata.get_row_group(0).get_column_chunk(0).statistics
-    assert do
-      @statistics == other_statistics
+    begin
+      other_statistics =
+        reader.metadata.get_row_group(0).get_column_chunk(0).statistics
+      assert do
+        @statistics == other_statistics
+      end
+    ensure
+      reader.unref
     end
   end
 

Reply via email to