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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/ci/config/entry/cache_spec.rb')
-rw-r--r--spec/lib/gitlab/ci/config/entry/cache_spec.rb77
1 files changed, 71 insertions, 6 deletions
diff --git a/spec/lib/gitlab/ci/config/entry/cache_spec.rb b/spec/lib/gitlab/ci/config/entry/cache_spec.rb
index 9aab3664e1c..4fa0a57dc82 100644
--- a/spec/lib/gitlab/ci/config/entry/cache_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/cache_spec.rb
@@ -12,22 +12,53 @@ describe Gitlab::Ci::Config::Entry::Cache do
context 'when entry config value is correct' do
let(:policy) { nil }
+ let(:key) { 'some key' }
let(:config) do
- { key: 'some key',
+ { key: key,
untracked: true,
paths: ['some/path/'],
policy: policy }
end
describe '#value' do
- it 'returns hash value' do
- expect(entry.value).to eq(key: 'some key', untracked: true, paths: ['some/path/'], policy: 'pull-push')
+ shared_examples 'hash key value' do
+ it 'returns hash value' do
+ expect(entry.value).to eq(key: key, untracked: true, paths: ['some/path/'], policy: 'pull-push')
+ end
+ end
+
+ it_behaves_like 'hash key value'
+
+ context 'with files' do
+ let(:key) { { files: ['a-file', 'other-file'] } }
+
+ it_behaves_like 'hash key value'
+ end
+
+ context 'with files and prefix' do
+ let(:key) { { files: ['a-file', 'other-file'], prefix: 'prefix-value' } }
+
+ it_behaves_like 'hash key value'
+ end
+
+ context 'with prefix' do
+ let(:key) { { prefix: 'prefix-value' } }
+
+ it 'key is nil' do
+ expect(entry.value).to match(a_hash_including(key: nil))
+ end
end
end
describe '#valid?' do
it { is_expected.to be_valid }
+
+ context 'with files' do
+ let(:key) { { files: ['a-file', 'other-file'] } }
+
+ it { is_expected.to be_valid }
+ end
end
context 'policy is pull-push' do
@@ -87,10 +118,44 @@ describe Gitlab::Ci::Config::Entry::Cache do
end
context 'when descendants are invalid' do
- let(:config) { { key: 1 } }
+ context 'with invalid keys' do
+ let(:config) { { key: 1 } }
- it 'reports error with descendants' do
- is_expected.to include 'key config should be a string or symbol'
+ it 'reports error with descendants' do
+ is_expected.to include 'key should be a hash, a string or a symbol'
+ end
+ end
+
+ context 'with empty key' do
+ let(:config) { { key: {} } }
+
+ it 'reports error with descendants' do
+ is_expected.to include 'key config missing required keys: files'
+ end
+ end
+
+ context 'with invalid files' do
+ let(:config) { { key: { files: 'a-file' } } }
+
+ it 'reports error with descendants' do
+ is_expected.to include 'key:files config should be an array of strings'
+ end
+ end
+
+ context 'with prefix without files' do
+ let(:config) { { key: { prefix: 'a-prefix' } } }
+
+ it 'reports error with descendants' do
+ is_expected.to include 'key config missing required keys: files'
+ end
+ end
+
+ context 'when there is an unknown key present' do
+ let(:config) { { key: { unknown: 'a-file' } } }
+
+ it 'reports error with descendants' do
+ is_expected.to include 'key config contains unknown keys: unknown'
+ end
end
end