Files
gitlab-ce/spec/scripts/minify_simplecov_resultsets_spec.rb
2025-01-17 21:45:06 +00:00

59 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require 'fast_spec_helper'
require_relative '../../scripts/minify-simplecov-resultsets'
RSpec.describe MinifySimplecovResultsets, feature_category: :tooling do
let(:root_dir) { described_class::ROOT_DIR }
let(:resultset_path) { root_dir.join('coverage', 'rspec-job-1', '.resultset.json') }
subject(:minifier) { described_class.new }
before do
allow(Dir).to receive(:glob).with(root_dir.join('coverage', '*', '.resultset.json')) { [resultset_path.to_s] }
allow(File).to receive(:write)
stub_file_read(resultset_path, content: original_content)
allow(minifier).to receive(:puts)
end
describe '#minify' do
let(:original_content) do
<<~JSON
{
"rspec-job-1": {
"coverage": {
"file1.rb": [1, 2, 3, null],
"file2.rb": [4, 5, 6, null]
},
"timestamp": 1234567890
}
}
JSON
end
let(:minified_content) { original_content.gsub(/[\s\n]+/, '') }
it 'minifies the resultset JSON file' do
expect(File).to receive(:write).with(resultset_path, minified_content)
minifier.minify
expect(minified_content.size).to be < original_content.size
end
it 'outputs the minification result' do
expect(minifier).to receive(:puts).with("Minified coverage/rspec-job-1/.resultset.json: 0KB -> 0KB (-33%)")
minifier.minify
end
it 'retains the same semantic value' do
# rubocop:disable Gitlab/Json -- We also use JSON in scripts
expect(JSON.parse(original_content)).to eq(JSON.parse(minified_content))
# rubocop:enable Gitlab/Json
end
it 'processes all resultset files in the coverage directory' do
minifier.minify
expect(Dir).to have_received(:glob).with(root_dir.join('coverage', '*', '.resultset.json'))
end
end
end