Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9f99883c
Commit
9f99883c
authored
Jul 16, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
8b8d1153
3fcf951c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
184 additions
and
62 deletions
+184
-62
spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
+184
-62
No files found.
spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
View file @
9f99883c
# frozen_string_literal: true
require
'spec_helper'
require
'spec_helper'
describe
Gitlab
::
Ci
::
Pipeline
::
Seed
::
Build
do
describe
Gitlab
::
Ci
::
Pipeline
::
Seed
::
Build
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:pipeline
)
{
create
(
:ci_empty_pipeline
,
project:
project
)
}
let
(
:pipeline
)
{
create
(
:ci_empty_pipeline
,
project:
project
)
}
let
(
:attributes
)
{
{
name:
'rspec'
,
ref:
'master'
}
}
let
(
:attributes
)
do
let
(
:seed_build
)
{
described_class
.
new
(
pipeline
,
attributes
)
}
{
name:
'rspec'
,
ref:
'master'
}
end
subject
do
described_class
.
new
(
pipeline
,
attributes
)
end
describe
'#attributes'
do
describe
'#attributes'
do
it
'returns hash attributes of a build'
do
subject
{
seed_build
.
attributes
}
expect
(
subject
.
attributes
).
to
be_a
Hash
expect
(
subject
.
attributes
)
it
{
is_expected
.
to
be_a
(
Hash
)
}
.
to
include
(
:name
,
:project
,
:ref
)
it
{
is_expected
.
to
include
(
:name
,
:project
,
:ref
)
}
end
end
end
describe
'#bridge?'
do
describe
'#bridge?'
do
subject
{
seed_build
.
bridge?
}
context
'when job is a bridge'
do
context
'when job is a bridge'
do
let
(
:attributes
)
do
let
(
:attributes
)
do
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
'my/project'
}
}
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
'my/project'
}
}
end
end
it
{
is_expected
.
to
be_
bridge
}
it
{
is_expected
.
to
be_
truthy
}
end
end
context
'when trigger definition is empty'
do
context
'when trigger definition is empty'
do
...
@@ -34,20 +32,20 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -34,20 +32,20 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
''
}
}
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
''
}
}
end
end
it
{
is_expected
.
not_to
be_bridge
}
it
{
is_expected
.
to
be_falsey
}
end
end
context
'when job is not a bridge'
do
context
'when job is not a bridge'
do
it
{
is_expected
.
not_to
be_bridge
}
it
{
is_expected
.
to
be_falsey
}
end
end
end
end
describe
'#to_resource'
do
describe
'#to_resource'
do
subject
{
seed_build
.
to_resource
}
context
'when job is not a bridge'
do
context
'when job is not a bridge'
do
it
'returns a valid build resource'
do
it
{
is_expected
.
to
be_a
(
::
Ci
::
Build
)
}
expect
(
subject
.
to_resource
).
to
be_a
(
::
Ci
::
Build
)
it
{
is_expected
.
to
be_valid
}
expect
(
subject
.
to_resource
).
to
be_valid
end
end
end
context
'when job is a bridge'
do
context
'when job is a bridge'
do
...
@@ -55,71 +53,117 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -55,71 +53,117 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
'my/project'
}
}
{
name:
'rspec'
,
ref:
'master'
,
options:
{
trigger:
'my/project'
}
}
end
end
it
'returns a valid bridge resource'
do
it
{
is_expected
.
to
be_a
(
::
Ci
::
Bridge
)
}
expect
(
subject
.
to_resource
).
to
be_a
(
::
Ci
::
Bridge
)
it
{
is_expected
.
to
be_valid
}
expect
(
subject
.
to_resource
).
to
be_valid
end
end
end
it
'memoizes a resource object'
do
it
'memoizes a resource object'
do
build
=
subject
.
to_resource
expect
(
subject
.
object_id
).
to
eq
seed_build
.
to_resource
.
object_id
expect
(
build
.
object_id
).
to
eq
subject
.
to_resource
.
object_id
end
end
it
'can not be persisted without explicit assignment'
do
it
'can not be persisted without explicit assignment'
do
build
=
subject
.
to_resource
pipeline
.
save!
pipeline
.
save!
expect
(
build
).
not_to
be_persisted
expect
(
subject
).
not_to
be_persisted
end
end
end
end
describe
'applying only/except policies'
do
describe
'applying job inclusion policies'
do
subject
{
seed_build
}
context
'when no branch policy is specified'
do
context
'when no branch policy is specified'
do
let
(
:attributes
)
{
{
name:
'rspec'
}
}
let
(
:attributes
)
do
{
name:
'rspec'
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'when branch policy does not match'
do
context
'when branch policy does not match'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
'deploy'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
'deploy'
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
'deploy'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
[
'deploy'
]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'with both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[deploy]
},
except:
{
refs:
%w[deploy]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
end
end
context
'when branch regexp policy does not match'
do
context
'when branch regexp policy does not match'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
'/^deploy$/'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[/^deploy$/]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
'/^deploy$/'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
%w[/^deploy$/]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'with both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[/^deploy$/]
},
except:
{
refs:
%w[/^deploy$/]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
end
end
context
'when branch policy matches'
do
context
'when branch policy matches'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
%w[deploy master]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[deploy master]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
%w[deploy master]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
%w[deploy master]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
context
'when using both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[deploy master]
},
except:
{
refs:
%w[deploy master]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
...
@@ -127,13 +171,29 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -127,13 +171,29 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
context
'when keyword policy matches'
do
context
'when keyword policy matches'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
'branches'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[branches]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
'branches'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
%w[branches]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
context
'when using both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[branches]
},
except:
{
refs:
%w[branches]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
...
@@ -141,50 +201,78 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -141,50 +201,78 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
context
'when keyword policy does not match'
do
context
'when keyword policy does not match'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
'tags'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[tags]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
'tags'
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
%w[tags]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'when using both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[tags]
},
except:
{
refs:
%w[tags]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
end
end
context
'with source-keyword policy'
do
context
'with source-keyword policy'
do
using
RSpec
::
Parameterized
using
RSpec
::
Parameterized
let
(
:pipeline
)
{
build
(
:ci_empty_pipeline
,
ref:
'deploy'
,
tag:
false
,
source:
source
)
}
let
(
:pipeline
)
do
build
(
:ci_empty_pipeline
,
ref:
'deploy'
,
tag:
false
,
source:
source
)
end
context
'matches'
do
context
'matches'
do
where
(
:keyword
,
:source
)
do
where
(
:keyword
,
:source
)
do
[
[
%w
(pushes push)
,
%w
[pushes push]
,
%w
(web web)
,
%w
[web web]
,
%w
(triggers trigger)
,
%w
[triggers trigger]
,
%w
(schedules schedule)
,
%w
[schedules schedule]
,
%w
(api api)
,
%w
[api api]
,
%w
(external external)
%w
[external external]
]
]
end
end
with_them
do
with_them
do
context
'using an only policy'
do
context
'using an only policy'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'using an except policy'
do
context
'using an except policy'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'using both only and except policies'
do
context
'using both only and except policies'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
},
except:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
},
except:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
...
@@ -193,29 +281,39 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -193,29 +281,39 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
context
'non-matches'
do
context
'non-matches'
do
where
(
:keyword
,
:source
)
do
where
(
:keyword
,
:source
)
do
%w
(web trigger schedule api external)
.
map
{
|
source
|
[
'pushes'
,
source
]
}
+
%w
[web trigger schedule api external]
.
map
{
|
source
|
[
'pushes'
,
source
]
}
+
%w
(push trigger schedule api external)
.
map
{
|
source
|
[
'web'
,
source
]
}
+
%w
[push trigger schedule api external]
.
map
{
|
source
|
[
'web'
,
source
]
}
+
%w
(push web schedule api external)
.
map
{
|
source
|
[
'triggers'
,
source
]
}
+
%w
[push web schedule api external]
.
map
{
|
source
|
[
'triggers'
,
source
]
}
+
%w
(push web trigger api external)
.
map
{
|
source
|
[
'schedules'
,
source
]
}
+
%w
[push web trigger api external]
.
map
{
|
source
|
[
'schedules'
,
source
]
}
+
%w
(push web trigger schedule external)
.
map
{
|
source
|
[
'api'
,
source
]
}
+
%w
[push web trigger schedule external]
.
map
{
|
source
|
[
'api'
,
source
]
}
+
%w
(push web trigger schedule api)
.
map
{
|
source
|
[
'external'
,
source
]
}
%w
[push web trigger schedule api]
.
map
{
|
source
|
[
'external'
,
source
]
}
end
end
with_them
do
with_them
do
context
'using an only policy'
do
context
'using an only policy'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'using an except policy'
do
context
'using an except policy'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
except:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'using both only and except policies'
do
context
'using both only and except policies'
do
let
(
:attributes
)
{
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
},
except:
{
refs:
[
keyword
]
}
}
}
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
keyword
]
},
except:
{
refs:
[
keyword
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
...
@@ -239,12 +337,24 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -239,12 +337,24 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
end
end
context
'when using both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
"branches@
#{
pipeline
.
project_full_path
}
"
]
},
except:
{
refs:
[
"branches@
#{
pipeline
.
project_full_path
}
"
]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
end
end
context
'when repository path does not matches'
do
context
'when repository path does not matches'
do
context
'when using only'
do
context
'when using only'
do
let
(
:attributes
)
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
[
'branches@fork'
]
}
}
{
name:
'rspec'
,
only:
{
refs:
%w[branches@fork
]
}
}
end
end
it
{
is_expected
.
not_to
be_included
}
it
{
is_expected
.
not_to
be_included
}
...
@@ -252,11 +362,23 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
...
@@ -252,11 +362,23 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
context
'when using except'
do
context
'when using except'
do
let
(
:attributes
)
do
let
(
:attributes
)
do
{
name:
'rspec'
,
except:
{
refs:
[
'branches@fork'
]
}
}
{
name:
'rspec'
,
except:
{
refs:
%w[branches@fork
]
}
}
end
end
it
{
is_expected
.
to
be_included
}
it
{
is_expected
.
to
be_included
}
end
end
context
'when using both only and except policies'
do
let
(
:attributes
)
do
{
name:
'rspec'
,
only:
{
refs:
%w[branches@fork]
},
except:
{
refs:
%w[branches@fork]
}
}
end
it
{
is_expected
.
not_to
be_included
}
end
end
end
end
end
end
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