From d9b56bc13b94bdc69a14a2b4201e25e141a62ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Fri, 26 Oct 2018 22:02:09 +0200 Subject: Add parallel keyword to CI config --- spec/lib/gitlab/ci/config/entry/job_spec.rb | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb index 1169938b80c..718098c364e 100644 --- a/spec/lib/gitlab/ci/config/entry/job_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb @@ -1,5 +1,4 @@ -require 'fast_spec_helper' -require_dependency 'active_model' +require 'spec_helper' describe Gitlab::Ci::Config::Entry::Job do let(:entry) { described_class.new(config, name: :rspec) } @@ -138,6 +137,36 @@ describe Gitlab::Ci::Config::Entry::Job do end end + context 'when parallel value is not correct' do + context 'when it is not a numeric value' do + let(:config) { { parallel: true } } + + it 'returns error about invalid type' do + expect(entry).not_to be_valid + expect(entry.errors).to include 'job parallel is not a number' + end + end + + context 'when it is lower than one' do + let(:config) { { parallel: 0 } } + + it 'returns error about value too low' do + expect(entry).not_to be_valid + expect(entry.errors) + .to include 'job parallel must be greater than or equal to 1' + end + end + + context 'when it is not an integer' do + let(:config) { { parallel: 1.5 } } + + it 'returns error about wrong value' do + expect(entry).not_to be_valid + expect(entry.errors).to include 'job parallel must be an integer' + end + end + end + context 'when delayed job' do context 'when start_in is specified' do let(:config) { { script: 'echo', when: 'delayed', start_in: '1 day' } } -- cgit v1.2.3 From a12da215c96fc15fb27753f18ab2106c6714bbb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Sat, 27 Oct 2018 18:19:58 +0200 Subject: Add YamlProcessor specs --- spec/lib/gitlab/ci/yaml_processor_spec.rb | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index 85b23edce9f..544e421d571 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -136,6 +136,19 @@ module Gitlab end end end + + describe 'parallel entry' do + context 'when parallel is defined' do + let(:config) do + YAML.dump(rspec: { script: 'rspec', + parallel: 1 }) + end + + it 'has the attributes' do + expect(subject[:options][:parallel]).to eq 1 + end + end + end end describe '#stages_attributes' do @@ -645,6 +658,25 @@ module Gitlab end end + describe 'Parallel' do + context 'when job is parallelized' do + let(:parallel) { 5 } + + let(:config) do + YAML.dump(rspec: { script: 'rspec', + parallel: parallel }) + end + + it 'returns parallelized job' do + config_processor = Gitlab::Ci::YamlProcessor.new(config) + builds = config_processor.stage_builds_attributes("test") + + expect(builds.size).to eq(1) + expect(builds.first[:options][:parallel]).to eq(parallel) + end + end + end + describe 'cache' do context 'when cache definition has unknown keys' do it 'raises relevant validation error' do -- cgit v1.2.3 From 03bc722ea1797a6b2b09f2897215477f5b269632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Sat, 27 Oct 2018 18:52:47 +0200 Subject: Add Build seed specs --- spec/lib/gitlab/ci/pipeline/seed/build_spec.rb | 59 ++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 3 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb index fffa727c2ed..d75f385f368 100644 --- a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb @@ -13,6 +13,46 @@ describe Gitlab::Ci::Pipeline::Seed::Build do described_class.new(pipeline, attributes) end + describe '#parallel?' do + context 'when build is not parallelized' do + it 'should be false' do + expect(subject.parallel?).to eq(false) + end + end + + context 'when build is parallelized' do + before do + attributes[:options] = { parallel: 5 } + end + + it 'should be true' do + expect(subject.parallel?).to eq(true) + end + end + end + + describe '#parallelize_build' do + let(:total) { 5 } + + before do + attributes[:options] = { parallel: total } + end + + it 'returns duplicated builds' do + builds = subject.parallelize_build + + expect(builds.size).to eq(total) + end + + it 'returns builds with indexed names' do + builds = subject.parallelize_build + + base_name = builds.first.name.split(' ')[0] + names = builds.map(&:name) + expect(names).to all(match(%r{^#{base_name} \d+/\d+$})) + end + end + describe '#attributes' do it 'returns hash attributes of a build' do expect(subject.attributes).to be_a Hash @@ -22,9 +62,22 @@ describe Gitlab::Ci::Pipeline::Seed::Build do end describe '#to_resource' do - it 'returns a valid build resource' do - expect(subject.to_resource).to be_a(::Ci::Build) - expect(subject.to_resource).to be_valid + context 'when build is not parallelized' do + it 'returns a valid build resource' do + expect(subject.to_resource).to be_a(::Ci::Build) + expect(subject.to_resource).to be_valid + end + end + + context 'when build is parallelized' do + before do + attributes[:options] = { parallel: 5 } + end + + it 'returns a group of valid build resources' do + expect(subject.to_resource).to all(be_a(::Ci::Build)) + expect(subject.to_resource).to all(be_valid) + end end it 'memoizes a resource object' do -- cgit v1.2.3 From 9ba72fe09aaf3bf903494f09fe8896012e962c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Sat, 27 Oct 2018 19:06:46 +0200 Subject: Change minimum parallel value to 2 --- spec/lib/gitlab/ci/config/entry/job_spec.rb | 6 +++--- spec/lib/gitlab/ci/yaml_processor_spec.rb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb index 718098c364e..f1a2946acda 100644 --- a/spec/lib/gitlab/ci/config/entry/job_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb @@ -147,13 +147,13 @@ describe Gitlab::Ci::Config::Entry::Job do end end - context 'when it is lower than one' do - let(:config) { { parallel: 0 } } + context 'when it is lower than two' do + let(:config) { { parallel: 1 } } it 'returns error about value too low' do expect(entry).not_to be_valid expect(entry.errors) - .to include 'job parallel must be greater than or equal to 1' + .to include 'job parallel must be greater than or equal to 2' end end diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index 544e421d571..8289a6b000b 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -141,11 +141,11 @@ module Gitlab context 'when parallel is defined' do let(:config) do YAML.dump(rspec: { script: 'rspec', - parallel: 1 }) + parallel: 2 }) end it 'has the attributes' do - expect(subject[:options][:parallel]).to eq 1 + expect(subject[:options][:parallel]).to eq 2 end end end -- cgit v1.2.3 From 94923328fdf2904e5a31ad8b9c40adcf15428bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Tue, 30 Oct 2018 15:04:25 +0100 Subject: Revert Seed based parallelization implementation Revert "Add Build seed specs" This reverts commit 03bc722ea1797a6b2b09f2897215477f5b269632. Revert "Add build specs" This reverts commit c2d49565cf787c592c4f8bd9f24843babd2a6c9a. Revert "Refactor parallelization implementation" This reverts commit 72430483ded51e9a7d01ef70c3dce3dda174fac1. Revert "Implement POC for job parallelization" This reverts commit 44b740f99dfe6a4344c918fd4c94972aa6f9237e. --- spec/lib/gitlab/ci/pipeline/seed/build_spec.rb | 59 ++------------------------ 1 file changed, 3 insertions(+), 56 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb index d75f385f368..fffa727c2ed 100644 --- a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb @@ -13,46 +13,6 @@ describe Gitlab::Ci::Pipeline::Seed::Build do described_class.new(pipeline, attributes) end - describe '#parallel?' do - context 'when build is not parallelized' do - it 'should be false' do - expect(subject.parallel?).to eq(false) - end - end - - context 'when build is parallelized' do - before do - attributes[:options] = { parallel: 5 } - end - - it 'should be true' do - expect(subject.parallel?).to eq(true) - end - end - end - - describe '#parallelize_build' do - let(:total) { 5 } - - before do - attributes[:options] = { parallel: total } - end - - it 'returns duplicated builds' do - builds = subject.parallelize_build - - expect(builds.size).to eq(total) - end - - it 'returns builds with indexed names' do - builds = subject.parallelize_build - - base_name = builds.first.name.split(' ')[0] - names = builds.map(&:name) - expect(names).to all(match(%r{^#{base_name} \d+/\d+$})) - end - end - describe '#attributes' do it 'returns hash attributes of a build' do expect(subject.attributes).to be_a Hash @@ -62,22 +22,9 @@ describe Gitlab::Ci::Pipeline::Seed::Build do end describe '#to_resource' do - context 'when build is not parallelized' do - it 'returns a valid build resource' do - expect(subject.to_resource).to be_a(::Ci::Build) - expect(subject.to_resource).to be_valid - end - end - - context 'when build is parallelized' do - before do - attributes[:options] = { parallel: 5 } - end - - it 'returns a group of valid build resources' do - expect(subject.to_resource).to all(be_a(::Ci::Build)) - expect(subject.to_resource).to all(be_valid) - end + it 'returns a valid build resource' do + expect(subject.to_resource).to be_a(::Ci::Build) + expect(subject.to_resource).to be_valid end it 'memoizes a resource object' do -- cgit v1.2.3 From 56a08d233fe18892ae7a7c723662007e260a2c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Thu, 1 Nov 2018 01:05:42 +0100 Subject: Parallelize jobs in Gitlab::Ci::YamlProcessor --- spec/lib/gitlab/ci/yaml_processor_spec.rb | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index 8289a6b000b..4882087fcd3 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -136,19 +136,6 @@ module Gitlab end end end - - describe 'parallel entry' do - context 'when parallel is defined' do - let(:config) do - YAML.dump(rspec: { script: 'rspec', - parallel: 2 }) - end - - it 'has the attributes' do - expect(subject[:options][:parallel]).to eq 2 - end - end - end end describe '#stages_attributes' do @@ -667,12 +654,12 @@ module Gitlab parallel: parallel }) end - it 'returns parallelized job' do + it 'returns parallelized jobs' do config_processor = Gitlab::Ci::YamlProcessor.new(config) - builds = config_processor.stage_builds_attributes("test") + builds = config_processor.stage_builds_attributes('test') - expect(builds.size).to eq(1) - expect(builds.first[:options][:parallel]).to eq(parallel) + expect(builds.size).to eq(5) + expect(builds.map { |build| build[:options] }).to all(include(parallel: parallel)) end end end -- cgit v1.2.3 From 77715e47d633f3db3b6b58c1d67b4ddbe3668177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Thu, 1 Nov 2018 15:24:29 +0100 Subject: Add Normalizer specs --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/lib/gitlab/ci/config/normalizer_spec.rb (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb new file mode 100644 index 00000000000..5890d4f193c --- /dev/null +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -0,0 +1,36 @@ +require 'fast_spec_helper' + +describe Gitlab::Ci::Config::Normalizer do + let(:job_name) { :rspec } + let(:job_config) { { script: 'rspec', parallel: 5 } } + let(:config) { { job_name => job_config } } + + describe '.normalize_jobs' do + subject { described_class.normalize_jobs(config) } + + it 'does not have original job' do + is_expected.not_to include(job_name) + end + + it 'has parallelized jobs' do + job_names = described_class.send(:parallelize_job_names, job_name, 5).map(&:to_sym) + + is_expected.to include(*job_names) + end + + it 'parallelizes jobs with original config' do + original_config = config[job_name].except(:name) + configs = subject.values.map { |config| config.except(:name) } + + 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 + is_expected.to all(match(%r{#{job_name} \d+/\d+})) + end + end +end -- cgit v1.2.3 From 73e17446ef400a8f2a4e629c79749d7feb9866f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Thu, 1 Nov 2018 16:17:08 +0100 Subject: Move parallelized node index to job options --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 12 ++++++++---- spec/lib/gitlab/ci/yaml_processor_spec.rb | 10 +++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 5890d4f193c..f1096cd3931 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -2,7 +2,7 @@ require 'fast_spec_helper' describe Gitlab::Ci::Config::Normalizer do let(:job_name) { :rspec } - let(:job_config) { { script: 'rspec', parallel: 5 } } + let(:job_config) { { script: 'rspec', parallel: 5, name: 'rspec' } } let(:config) { { job_name => job_config } } describe '.normalize_jobs' do @@ -13,14 +13,18 @@ describe Gitlab::Ci::Config::Normalizer do end it 'has parallelized jobs' do - job_names = described_class.send(:parallelize_job_names, job_name, 5).map(&:to_sym) + job_names = described_class.send(:parallelize_job_names, job_name, 5).map { |job_name, index| job_name.to_sym } is_expected.to include(*job_names) end + it 'sets job instance in options' do + expect(subject.values).to all(include(:instance)) + end + it 'parallelizes jobs with original config' do original_config = config[job_name].except(:name) - configs = subject.values.map { |config| config.except(:name) } + configs = subject.values.map { |config| config.except(:name, :instance) } expect(configs).to all(eq(original_config)) end @@ -30,7 +34,7 @@ describe Gitlab::Ci::Config::Normalizer do subject { described_class.send(:parallelize_job_names, job_name, 5) } it 'returns parallelized names' do - is_expected.to all(match(%r{#{job_name} \d+/\d+})) + expect(subject.map(&:first)).to all(match(%r{#{job_name} \d+/\d+})) end end end diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index 4882087fcd3..dcfd54107a3 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -657,9 +657,17 @@ module Gitlab it 'returns parallelized jobs' do config_processor = Gitlab::Ci::YamlProcessor.new(config) builds = config_processor.stage_builds_attributes('test') + build_options = builds.map { |build| build[:options] } expect(builds.size).to eq(5) - expect(builds.map { |build| build[:options] }).to all(include(parallel: parallel)) + expect(build_options).to all(include(:instance, parallel: parallel)) + end + + it 'does not have the original job' do + config_processor = Gitlab::Ci::YamlProcessor.new(config) + builds = config_processor.stage_builds_attributes('test') + + expect(builds).not_to include(:rspec) end end end -- cgit v1.2.3 From 8a6a312db8148433fca78da0b5c9db8f966e16fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Fri, 2 Nov 2018 14:20:27 +0100 Subject: Make Rubocop and Danger happy --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index f1096cd3931..48b8217f77c 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'fast_spec_helper' describe Gitlab::Ci::Config::Normalizer do -- cgit v1.2.3 From 5fd8933d97b694fb8ae6a57acaae8fb4e7922e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Mon, 5 Nov 2018 14:36:52 +0100 Subject: Use instance based approach for Normalizer --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 48b8217f77c..84f8ea3e861 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::Ci::Config::Normalizer do let(:config) { { job_name => job_config } } describe '.normalize_jobs' do - subject { described_class.normalize_jobs(config) } + subject { described_class.new(config).normalize_jobs } it 'does not have original job' do is_expected.not_to include(job_name) -- cgit v1.2.3 From 4b2b154c4e5ddfc397bc59f3a38b8f09d44903e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Mon, 5 Nov 2018 15:53:37 +0100 Subject: Refactor Gitlab::Ci::Config::Normalizer Use Hash#each_with_object to manipulate job hashes. --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 84f8ea3e861..2c8396199d0 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::Ci::Config::Normalizer do let(:config) { { job_name => job_config } } describe '.normalize_jobs' do - subject { described_class.new(config).normalize_jobs } + subject { described_class.normalize_jobs(config) } it 'does not have original job' do is_expected.not_to include(job_name) @@ -30,6 +30,16 @@ describe Gitlab::Ci::Config::Normalizer do expect(configs).to all(eq(original_config)) end + + context 'when jobs depend on parallelized jobs' do + let(:config) { { job_name => job_config, other_job: { script: 'echo 1', dependencies: [job_name.to_s] } } } + + it 'parallelizes dependencies' do + job_names = described_class.send(:parallelize_job_names, job_name, 5).map(&:first) + + expect(subject[:other_job][:dependencies]).to include(*job_names) + end + end end describe '.parallelize_job_names' do -- cgit v1.2.3 From f48261a409f4f4d73118621330796ed92623f08e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Tue, 6 Nov 2018 18:23:45 +0100 Subject: Refactor Normalizer specs --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 2c8396199d0..2e3d3cc1b2b 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -15,7 +15,7 @@ describe Gitlab::Ci::Config::Normalizer do end it 'has parallelized jobs' do - job_names = described_class.send(:parallelize_job_names, job_name, 5).map { |job_name, index| job_name.to_sym } + job_names = [:"rspec 1/5", :"rspec 2/5", :"rspec 3/5", :"rspec 4/5", :"rspec 5/5"] is_expected.to include(*job_names) end @@ -35,18 +35,10 @@ describe Gitlab::Ci::Config::Normalizer do let(:config) { { job_name => job_config, other_job: { script: 'echo 1', dependencies: [job_name.to_s] } } } it 'parallelizes dependencies' do - job_names = described_class.send(:parallelize_job_names, job_name, 5).map(&:first) + job_names = ["rspec 1/5", "rspec 2/5", "rspec 3/5", "rspec 4/5", "rspec 5/5"] expect(subject[:other_job][:dependencies]).to include(*job_names) end end end - - describe '.parallelize_job_names' do - subject { described_class.send(:parallelize_job_names, job_name, 5) } - - it 'returns parallelized names' do - expect(subject.map(&:first)).to all(match(%r{#{job_name} \d+/\d+})) - end - end end -- cgit v1.2.3 From 4ba960c17d07e5863045c74fb554ebe71575d54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Tue, 6 Nov 2018 18:35:44 +0100 Subject: Use instance based approach for Normalizer --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 2e3d3cc1b2b..65718d1a432 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::Ci::Config::Normalizer do let(:config) { { job_name => job_config } } describe '.normalize_jobs' do - subject { described_class.normalize_jobs(config) } + subject { described_class.new(config).normalize_jobs } it 'does not have original job' do is_expected.not_to include(job_name) -- cgit v1.2.3 From 7366c319df12900e40dbed679feab146d1092d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= Date: Tue, 6 Nov 2018 18:56:06 +0100 Subject: Add additional specs for Normalizer --- spec/lib/gitlab/ci/config/normalizer_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 65718d1a432..7c558cacdd5 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -31,6 +31,16 @@ describe Gitlab::Ci::Config::Normalizer do expect(configs).to all(eq(original_config)) end + context 'when there is a job with a slash in it' do + let(:job_name) { :"rspec 35/2" } + + it 'properly parallelizes job names' do + job_names = [:"rspec 35/2 1/5", :"rspec 35/2 2/5", :"rspec 35/2 3/5", :"rspec 35/2 4/5", :"rspec 35/2 5/5"] + + is_expected.to include(*job_names) + end + end + context 'when jobs depend on parallelized jobs' do let(:config) { { job_name => job_config, other_job: { script: 'echo 1', dependencies: [job_name.to_s] } } } @@ -39,6 +49,10 @@ describe Gitlab::Ci::Config::Normalizer do expect(subject[:other_job][:dependencies]).to include(*job_names) end + + it 'does not include original job name in dependencies' do + expect(subject[:other_job][:dependencies]).not_to include(job_name) + end end end end -- cgit v1.2.3