Welcome to mirror list, hosted at ThFree Co, Russian Federation.

yaml_spec.rb « config « ci « gitlab « lib « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4b34553f55e58660e165fd65d6775038324795d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::Ci::Config::Yaml, feature_category: :pipeline_authoring do
  describe '.load!' do
    it 'loads a single-doc YAML file' do
      yaml = <<~YAML
      image: 'image:1.0'
      texts:
        nested_key: 'value1'
        more_text:
          more_nested_key: 'value2'
      YAML

      config = described_class.load!(yaml)

      expect(config).to eq({
        image: 'image:1.0',
        texts: {
          nested_key: 'value1',
          more_text: {
            more_nested_key: 'value2'
          }
        }
      })
    end

    it 'loads the first document from a multi-doc YAML file' do
      yaml = <<~YAML
      spec:
        inputs:
          test_input:
      ---
      image: 'image:1.0'
      texts:
        nested_key: 'value1'
        more_text:
          more_nested_key: 'value2'
      YAML

      config = described_class.load!(yaml)

      expect(config).to eq({
        spec: {
          inputs: {
            test_input: nil
          }
        }
      })
    end

    context 'when ci_multi_doc_yaml is disabled' do
      before do
        stub_feature_flags(ci_multi_doc_yaml: false)
      end

      it 'loads a single-doc YAML file' do
        yaml = <<~YAML
        image: 'image:1.0'
        texts:
          nested_key: 'value1'
          more_text:
            more_nested_key: 'value2'
        YAML

        config = described_class.load!(yaml)

        expect(config).to eq({
          image: 'image:1.0',
          texts: {
            nested_key: 'value1',
            more_text: {
              more_nested_key: 'value2'
            }
          }
        })
      end

      it 'loads the first document from a multi-doc YAML file' do
        yaml = <<~YAML
        spec:
          inputs:
            test_input:
        ---
        image: 'image:1.0'
        texts:
          nested_key: 'value1'
          more_text:
            more_nested_key: 'value2'
        YAML

        config = described_class.load!(yaml)

        expect(config).to eq({
          spec: {
            inputs: {
              test_input: nil
            }
          }
        })
      end
    end
  end
end