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
0
Merge Requests
0
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
Boxiang Sun
gitlab-ce
Commits
0778cad2
Commit
0778cad2
authored
Mar 13, 2017
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Do not use GITLAB_RELEASE env to define QA strategy
[ci skip]
parent
175a3dfd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
34 deletions
+36
-34
qa/Dockerfile
qa/Dockerfile
+0
-2
qa/qa/runtime/release.rb
qa/qa/runtime/release.rb
+10
-13
qa/spec/runtime/release_spec.rb
qa/spec/runtime/release_spec.rb
+26
-19
No files found.
qa/Dockerfile
View file @
0778cad2
FROM
ruby:2.3
FROM
ruby:2.3
LABEL
maintainer "Grzegorz Bizon <grzegorz@gitlab.com>"
LABEL
maintainer "Grzegorz Bizon <grzegorz@gitlab.com>"
ENV
GITLAB_RELEASE CE
RUN
sed
-i
"s/httpredir.debian.org/ftp.us.debian.org/"
/etc/apt/sources.list
&&
\
RUN
sed
-i
"s/httpredir.debian.org/ftp.us.debian.org/"
/etc/apt/sources.list
&&
\
apt-get update
&&
apt-get
install
-y
--force-yes
\
apt-get update
&&
apt-get
install
-y
--force-yes
\
libqt5webkit5-dev qt5-qmake qt5-default build-essential xvfb git
&&
\
libqt5webkit5-dev qt5-qmake qt5-default build-essential xvfb git
&&
\
...
...
qa/qa/runtime/release.rb
View file @
0778cad2
...
@@ -2,35 +2,32 @@ module QA
...
@@ -2,35 +2,32 @@ module QA
module
Runtime
module
Runtime
##
##
# Class that is responsible for plugging CE/EE extensions in, depending on
# Class that is responsible for plugging CE/EE extensions in, depending on
# environment variable GITLAB_RELEASE that should be present in the runtime
# existence of EE module.
# environment.
#
#
# We need that to reduce the probability of conflicts when merging
# We need that to reduce the probability of conflicts when merging
# CE to EE.
# CE to EE.
#
#
class
Release
class
Release
UnspecifiedReleaseError
=
Class
.
new
(
StandardError
)
def
initialize
(
variant
=
nil
)
@version
=
variant
||
version
def
initialize
(
version
=
ENV
[
'GITLAB_RELEASE'
])
@version
=
version
.
to_s
.
upcase
unless
%w[CE EE]
.
include?
(
@version
)
raise
UnspecifiedReleaseError
,
'GITLAB_RELEASE env not defined!'
end
begin
begin
require
"qa/
#{
version
.
downcase
}
/strategy"
require
"qa/
#{
@
version
.
downcase
}
/strategy"
rescue
LoadError
rescue
LoadError
# noop
# noop
end
end
end
end
def
version
File
.
directory?
(
"
#{
__dir__
}
/../ee"
)
?
:EE
:
:CE
end
def
has_strategy?
def
has_strategy?
QA
.
const_defined?
(
"
#{
@version
}
::Strategy"
)
QA
.
const_defined?
(
"
QA::
#{
@version
}
::Strategy"
)
end
end
def
strategy
def
strategy
QA
.
const_get
(
"
#{
@version
}
::Strategy"
)
QA
.
const_get
(
"
QA::
#{
@version
}
::Strategy"
)
end
end
def
self
.
method_missing
(
name
,
*
args
)
def
self
.
method_missing
(
name
,
*
args
)
...
...
qa/spec/runtime/release_spec.rb
View file @
0778cad2
describe
QA
::
Runtime
::
Release
do
describe
QA
::
Runtime
::
Release
do
context
'when release version has extension strategy'
do
context
'when release version has extension strategy'
do
subject
{
described_class
.
new
(
'
CE
'
)
}
subject
{
described_class
.
new
(
'
VER
'
)
}
let
(
:strategy
)
{
spy
(
'
CE
::Strategy'
)
}
let
(
:strategy
)
{
spy
(
'
VER
::Strategy'
)
}
before
do
before
do
stub_const
(
'QA::CE::Strategy'
,
strategy
)
stub_const
(
'QA::VER::Strategy'
,
strategy
)
stub_const
(
'QA::EE::Strategy'
,
strategy
)
end
end
describe
'#has_strategy?'
do
describe
'#has_strategy?'
do
...
@@ -16,11 +15,19 @@ describe QA::Runtime::Release do
...
@@ -16,11 +15,19 @@ describe QA::Runtime::Release do
describe
'#strategy'
do
describe
'#strategy'
do
it
'return the strategy constant'
do
it
'return the strategy constant'
do
expect
(
subject
.
strategy
).
to
eq
QA
::
CE
::
Strategy
expect
(
subject
.
strategy
).
to
eq
QA
::
VER
::
Strategy
end
end
end
end
describe
'delegated class methods'
do
describe
'delegated class methods'
do
before
do
allow_any_instance_of
(
described_class
)
.
to
receive
(
:has_strategy?
).
and_return
(
true
)
allow_any_instance_of
(
described_class
)
.
to
receive
(
:strategy
).
and_return
(
strategy
)
end
it
'delegates all calls to strategy class'
do
it
'delegates all calls to strategy class'
do
described_class
.
some_method
(
1
,
2
)
described_class
.
some_method
(
1
,
2
)
...
@@ -31,12 +38,7 @@ describe QA::Runtime::Release do
...
@@ -31,12 +38,7 @@ describe QA::Runtime::Release do
end
end
context
'when release version does not have extension strategy'
do
context
'when release version does not have extension strategy'
do
subject
{
described_class
.
new
(
'CE'
)
}
subject
{
described_class
.
new
(
'NOVER'
)
}
before
do
hide_const
(
'QA::CE::Strategy'
)
hide_const
(
'QA::EE::Strategy'
)
end
describe
'#has_strategy?'
do
describe
'#has_strategy?'
do
it
'returns false'
do
it
'returns false'
do
...
@@ -50,18 +52,23 @@ describe QA::Runtime::Release do
...
@@ -50,18 +52,23 @@ describe QA::Runtime::Release do
end
end
end
end
describe
'delegated class methods'
do
describe
'does not delegate class methods'
do
before
do
allow_any_instance_of
(
described_class
)
.
to
receive
(
:has_strategy?
).
and_return
(
false
)
end
it
'behaves like a null object and does nothing'
do
it
'behaves like a null object and does nothing'
do
expect
{
described_class
.
some_method
(
2
,
3
)
}.
not_to
raise_error
expect
{
described_class
.
some_method
(
2
,
3
)
}.
not_to
raise_error
end
end
end
end
context
'when release version is invalid or unspecified'
do
it
'returns nil'
do
describe
'#new'
do
expect
(
described_class
.
something
).
to
be_nil
it
'raises an exception'
do
end
expect
{
described_class
.
new
(
nil
)
}
.
to
raise_error
(
described_class
::
UnspecifiedReleaseError
)
it
'does not delegate to strategy object'
do
expect_any_instance_of
(
described_class
)
.
not_to
receive
(
:strategy
)
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