diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
commit | 7e9c479f7de77702622631cff2628a9c8dcbc627 (patch) | |
tree | c8f718a08e110ad7e1894510980d2155a6549197 /spec/lib/gitlab/ci/config_spec.rb | |
parent | e852b0ae16db4052c1c567d9efa4facc81146e88 (diff) | |
download | gitlab-ce-7e9c479f7de77702622631cff2628a9c8dcbc627.tar.gz |
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'spec/lib/gitlab/ci/config_spec.rb')
-rw-r--r-- | spec/lib/gitlab/ci/config_spec.rb | 78 |
1 files changed, 63 insertions, 15 deletions
diff --git a/spec/lib/gitlab/ci/config_spec.rb b/spec/lib/gitlab/ci/config_spec.rb index 41a45fe4ab7..b5a0f0e3fd7 100644 --- a/spec/lib/gitlab/ci/config_spec.rb +++ b/spec/lib/gitlab/ci/config_spec.rb @@ -246,6 +246,14 @@ RSpec.describe Gitlab::Ci::Config do let(:remote_location) { 'https://gitlab.com/gitlab-org/gitlab-foss/blob/1234/.gitlab-ci-1.yml' } let(:local_location) { 'spec/fixtures/gitlab/ci/external_files/.gitlab-ci-template-1.yml' } + let(:local_file_content) do + File.read(Rails.root.join(local_location)) + end + + let(:local_location_hash) do + YAML.safe_load(local_file_content).deep_symbolize_keys + end + let(:remote_file_content) do <<~HEREDOC variables: @@ -256,8 +264,8 @@ RSpec.describe Gitlab::Ci::Config do HEREDOC end - let(:local_file_content) do - File.read(Rails.root.join(local_location)) + let(:remote_file_hash) do + YAML.safe_load(remote_file_content).deep_symbolize_keys end let(:gitlab_ci_yml) do @@ -283,22 +291,11 @@ RSpec.describe Gitlab::Ci::Config do context "when gitlab_ci_yml has valid 'include' defined" do it 'returns a composed hash' do - before_script_values = [ - "apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs", "ruby -v", - "which ruby", - "bundle install --jobs $(nproc) \"${FLAGS[@]}\"" - ] - variables = { - POSTGRES_USER: "user", - POSTGRES_PASSWORD: "testing-password", - POSTGRES_ENABLED: "true", - POSTGRES_DB: "$CI_ENVIRONMENT_SLUG" - } composed_hash = { - before_script: before_script_values, + before_script: local_location_hash[:before_script], image: "ruby:2.7", rspec: { script: ["bundle exec rspec"] }, - variables: variables + variables: remote_file_hash[:variables] } expect(config.to_hash).to eq(composed_hash) @@ -575,5 +572,56 @@ RSpec.describe Gitlab::Ci::Config do ) end end + + context "when including multiple files from a project" do + let(:other_file_location) { 'my_builds.yml' } + + let(:other_file_content) do + <<~HEREDOC + build: + stage: build + script: echo hello + + rspec: + stage: test + script: bundle exec rspec + HEREDOC + end + + let(:gitlab_ci_yml) do + <<~HEREDOC + include: + - project: #{project.full_path} + file: + - #{local_location} + - #{other_file_location} + + image: ruby:2.7 + HEREDOC + end + + before do + project.add_developer(user) + + allow_next_instance_of(Repository) do |repository| + allow(repository).to receive(:blob_data_at).with(an_instance_of(String), local_location) + .and_return(local_file_content) + + allow(repository).to receive(:blob_data_at).with(an_instance_of(String), other_file_location) + .and_return(other_file_content) + end + end + + it 'returns a composed hash' do + composed_hash = { + before_script: local_location_hash[:before_script], + image: "ruby:2.7", + build: { stage: "build", script: "echo hello" }, + rspec: { stage: "test", script: "bundle exec rspec" } + } + + expect(config.to_hash).to eq(composed_hash) + end + end end end |