2018-11-02 09:20:27 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-11-01 10:24:29 -04:00
|
|
|
require 'fast_spec_helper'
|
|
|
|
|
|
|
|
describe Gitlab::Ci::Config::Normalizer do
|
|
|
|
let(:job_name) { :rspec }
|
2018-11-01 11:17:08 -04:00
|
|
|
let(:job_config) { { script: 'rspec', parallel: 5, name: 'rspec' } }
|
2018-11-01 10:24:29 -04:00
|
|
|
let(:config) { { job_name => job_config } }
|
|
|
|
|
|
|
|
describe '.normalize_jobs' do
|
2018-11-05 08:36:52 -05:00
|
|
|
subject { described_class.new(config).normalize_jobs }
|
2018-11-01 10:24:29 -04:00
|
|
|
|
|
|
|
it 'does not have original job' do
|
|
|
|
is_expected.not_to include(job_name)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'has parallelized jobs' do
|
2018-11-01 11:17:08 -04:00
|
|
|
job_names = described_class.send(:parallelize_job_names, job_name, 5).map { |job_name, index| job_name.to_sym }
|
2018-11-01 10:24:29 -04:00
|
|
|
|
|
|
|
is_expected.to include(*job_names)
|
|
|
|
end
|
|
|
|
|
2018-11-01 11:17:08 -04:00
|
|
|
it 'sets job instance in options' do
|
|
|
|
expect(subject.values).to all(include(:instance))
|
|
|
|
end
|
|
|
|
|
2018-11-01 10:24:29 -04:00
|
|
|
it 'parallelizes jobs with original config' do
|
|
|
|
original_config = config[job_name].except(:name)
|
2018-11-01 11:17:08 -04:00
|
|
|
configs = subject.values.map { |config| config.except(:name, :instance) }
|
2018-11-01 10:24:29 -04:00
|
|
|
|
|
|
|
expect(configs).to all(eq(original_config))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '.parallelize_job_names' do
|
|
|
|
subject { described_class.send(:parallelize_job_names, job_name, 5) }
|
|
|
|
|
|
|
|
it 'returns parallelized names' do
|
2018-11-01 11:17:08 -04:00
|
|
|
expect(subject.map(&:first)).to all(match(%r{#{job_name} \d+/\d+}))
|
2018-11-01 10:24:29 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|