Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
GitLab
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
projects.thm.de
GitLab
Commits
b5f6a5f9
Commit
b5f6a5f9
authored
Dec 08, 2017
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Chain::Command specs
parent
865341ac
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
190 additions
and
10 deletions
+190
-10
lib/gitlab/ci/pipeline/chain/command.rb
lib/gitlab/ci/pipeline/chain/command.rb
+1
-1
spec/lib/gitlab/ci/pipeline/chain/command_spec.rb
spec/lib/gitlab/ci/pipeline/chain/command_spec.rb
+185
-0
spec/lib/gitlab/ci/pipeline/chain/create_spec.rb
spec/lib/gitlab/ci/pipeline/chain/create_spec.rb
+1
-1
spec/services/ci/create_pipeline_service_spec.rb
spec/services/ci/create_pipeline_service_spec.rb
+3
-8
No files found.
lib/gitlab/ci/pipeline/chain/command.rb
View file @
b5f6a5f9
...
...
@@ -46,7 +46,7 @@ def origin_sha
end
def
before_sha
before_sha
||
checkout_sha
||
Gitlab
::
Git
::
BLANK_SHA
self
[
:before_sha
]
||
checkout_sha
||
Gitlab
::
Git
::
BLANK_SHA
end
def
protected_ref?
...
...
spec/lib/gitlab/ci/pipeline/chain/command_spec.rb
0 → 100644
View file @
b5f6a5f9
require
'spec_helper'
describe
Gitlab
::
Ci
::
Pipeline
::
Chain
::
Command
do
set
(
:project
)
{
create
(
:project
,
:repository
)
}
describe
'#initialize'
do
subject
do
described_class
.
new
(
origin_ref:
'master'
)
end
it
'properly initialises object from hash'
do
expect
(
subject
.
origin_ref
).
to
eq
(
'master'
)
end
end
context
'handling of origin_ref'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
origin_ref:
origin_ref
)
}
describe
'#branch_exists?'
do
subject
{
command
.
branch_exists?
}
context
'for existing branch'
do
let
(
:origin_ref
)
{
'master'
}
it
{
is_expected
.
to
eq
(
true
)
}
end
context
'for invalid branch'
do
let
(
:origin_ref
)
{
'something'
}
it
{
is_expected
.
to
eq
(
false
)
}
end
end
describe
'#tag_exists?'
do
subject
{
command
.
tag_exists?
}
context
'for existing ref'
do
let
(
:origin_ref
)
{
'v1.0.0'
}
it
{
is_expected
.
to
eq
(
true
)
}
end
context
'for invalid ref'
do
let
(
:origin_ref
)
{
'something'
}
it
{
is_expected
.
to
eq
(
false
)
}
end
end
describe
'#ref'
do
subject
{
command
.
ref
}
context
'for regular ref'
do
let
(
:origin_ref
)
{
'master'
}
it
{
is_expected
.
to
eq
(
'master'
)
}
end
context
'for branch ref'
do
let
(
:origin_ref
)
{
'refs/heads/master'
}
it
{
is_expected
.
to
eq
(
'master'
)
}
end
context
'for tag ref'
do
let
(
:origin_ref
)
{
'refs/tags/1.0.0'
}
it
{
is_expected
.
to
eq
(
'1.0.0'
)
}
end
context
'for other refs'
do
let
(
:origin_ref
)
{
'refs/merge-requests/11/head'
}
it
{
is_expected
.
to
eq
(
'refs/merge-requests/11/head'
)
}
end
end
end
describe
'#sha'
do
subject
{
command
.
sha
}
context
'when invalid checkout_sha is specified'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
checkout_sha:
'aaa'
)
}
it
'returns empty value'
do
is_expected
.
to
be_nil
end
end
context
'when a valid checkout_sha is specified'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
checkout_sha:
project
.
commit
.
id
)
}
it
'returns checkout_sha'
do
is_expected
.
to
eq
(
project
.
commit
.
id
)
end
end
context
'when a valid after_sha is specified'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
after_sha:
project
.
commit
.
id
)
}
it
'returns after_sha'
do
is_expected
.
to
eq
(
project
.
commit
.
id
)
end
end
context
'when a valid origin_ref is specified'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
origin_ref:
'HEAD'
)
}
it
'returns SHA for given ref'
do
is_expected
.
to
eq
(
project
.
commit
.
id
)
end
end
end
describe
'#origin_sha'
do
subject
{
command
.
origin_sha
}
context
'when using checkout_sha and after_sha'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
checkout_sha:
'aaa'
,
after_sha:
'bbb'
)
}
it
'uses checkout_sha'
do
is_expected
.
to
eq
(
'aaa'
)
end
end
context
'when using after_sha only'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
after_sha:
'bbb'
)
}
it
'uses after_sha'
do
is_expected
.
to
eq
(
'bbb'
)
end
end
end
describe
'#before_sha'
do
subject
{
command
.
before_sha
}
context
'when using checkout_sha and before_sha'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
checkout_sha:
'aaa'
,
before_sha:
'bbb'
)
}
it
'uses before_sha'
do
is_expected
.
to
eq
(
'bbb'
)
end
end
context
'when using checkout_sha only'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
checkout_sha:
'aaa'
)
}
it
'uses checkout_sha'
do
is_expected
.
to
eq
(
'aaa'
)
end
end
context
'when checkout_sha and before_sha are empty'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
)
}
it
'uses BLANK_SHA'
do
is_expected
.
to
eq
(
Gitlab
::
Git
::
BLANK_SHA
)
end
end
end
describe
'#protected_ref?'
do
let
(
:command
)
{
described_class
.
new
(
project:
project
,
origin_ref:
'my-branch'
)
}
subject
{
command
.
protected_ref?
}
context
'when a ref is protected'
do
before
do
expect_any_instance_of
(
Project
).
to
receive
(
:protected_for?
).
with
(
'my-branch'
).
and_return
(
true
)
end
it
{
is_expected
.
to
eq
(
true
)
}
end
context
'when a ref is unprotected'
do
before
do
expect_any_instance_of
(
Project
).
to
receive
(
:protected_for?
).
with
(
'my-branch'
).
and_return
(
false
)
end
it
{
is_expected
.
to
eq
(
false
)
}
end
end
end
spec/lib/gitlab/ci/pipeline/chain/create_spec.rb
View file @
b5f6a5f9
...
...
@@ -12,7 +12,7 @@
let
(
:command
)
do
Gitlab
::
Ci
::
Pipeline
::
Chain
::
Command
.
new
(
project:
project
,
current_user:
user
,
seeds_block:
nil
)
current_user:
user
,
seeds_block:
nil
)
end
let
(
:step
)
{
described_class
.
new
(
pipeline
,
command
)
}
...
...
spec/services/ci/create_pipeline_service_spec.rb
View file @
b5f6a5f9
...
...
@@ -519,21 +519,16 @@ def previous_commit_sha_from_ref(ref)
end
end
context
'when pipelie is running for a tag'
do
context
'when pipeli
n
e is running for a tag'
do
before
do
allow_any_instance_of
(
Repository
)
.
to
receive
(
:tag_exists?
).
and_return
(
false
)
allow_any_instance_of
(
Repository
)
.
to
receive
(
:tag_exists?
).
with
(
'refs/tags/mytag'
).
and_return
(
true
)
config
=
YAML
.
dump
(
test:
{
script:
'test'
,
only:
[
'branches'
]
},
deploy:
{
script:
'deploy'
,
only:
[
'tags'
]
})
deploy:
{
script:
'deploy'
,
only:
[
'tags'
]
})
stub_ci_pipeline_yaml_file
(
config
)
end
it
'creates a tagged pipeline'
do
pipeline
=
execute_service
(
ref:
'
mytag
'
)
pipeline
=
execute_service
(
ref:
'
v1.0.0
'
)
expect
(
pipeline
.
tag?
).
to
be
true
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment