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