From 6efd5fd13d1274b1e788d13a824fcfae92d02e6a Mon Sep 17 00:00:00 2001
From: Pedro Pombeiro <noreply@pedro.pombei.ro>
Date: Thu, 28 Sep 2023 09:17:01 +0000
Subject: [PATCH] Ensure file object is closed in CsvBuilder::Gzip

Use Tempfile.create instead of Tempfile.open
---
 .../ci/collect_queueing_history_service_spec.rb       |  4 ++--
 gems/csv_builder/lib/csv_builder/gzip.rb              | 11 +++++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/ee/spec/services/ci/collect_queueing_history_service_spec.rb b/ee/spec/services/ci/collect_queueing_history_service_spec.rb
index 438c1a7510b5f..0fb4c5f80f9b0 100644
--- a/ee/spec/services/ci/collect_queueing_history_service_spec.rb
+++ b/ee/spec/services/ci/collect_queueing_history_service_spec.rb
@@ -41,14 +41,14 @@
 
     it 'returns error' do
       expect(result.error?).to eq(true)
-      expect(result.errors).to eq(['Feature not enabled'])
+      expect(result.errors).to contain_exactly('Feature clickhouse_ci_analytics not enabled')
     end
   end
 
   shared_examples "returns Not allowed error" do
     it 'returns error' do
       expect(result.error?).to eq(true)
-      expect(result.errors).to eq(['Not allowed'])
+      expect(result.errors).to contain_exactly('Not allowed')
     end
   end
 
diff --git a/gems/csv_builder/lib/csv_builder/gzip.rb b/gems/csv_builder/lib/csv_builder/gzip.rb
index f97c066705a08..83a83970acdea 100644
--- a/gems/csv_builder/lib/csv_builder/gzip.rb
+++ b/gems/csv_builder/lib/csv_builder/gzip.rb
@@ -12,12 +12,15 @@ class Gzip < CsvBuilder::Builder
     # >   puts rows
     # > end
     def render
-      Tempfile.open(['csv_builder_gzip', '.csv.gz']) do |tempfile|
-        csv = CSV.new(Zlib::GzipWriter.open(tempfile.path))
+      Tempfile.create(['csv_builder_gzip', '.csv.gz']) do |tempfile|
+        Zlib::GzipWriter.open(tempfile.path) do |gz|
+          csv = CSV.new(gz)
 
-        write_csv csv, until_condition: -> {} # truncation must be handled outside of the CsvBuilder
+          write_csv csv, until_condition: -> {} # truncation must be handled outside of the CsvBuilder
+
+          csv.close
+        end
 
-        csv.close
         yield tempfile, @rows_written
       end
     end
-- 
GitLab