grim/convey
Clone
Summary
Browse
Changes
Graph
Bump the version
v0.14.0-alpha4
2018-02-20, Gary Kramlich
89afa53fab1b
Bump the version
// Convey
// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package
bitbucket
import
(
"github.com/aphistic/sweet"
.
"github.com/onsi/gomega"
"bitbucket.org/rw_grim/convey/config"
"bitbucket.org/rw_grim/convey/docker"
"bitbucket.org/rw_grim/convey/plans"
"bitbucket.org/rw_grim/convey/stages"
"bitbucket.org/rw_grim/convey/tasks"
)
func
(
b
*
bitbucketSuite
)
TestLoaderSimple
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/simple.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Run
{
Image
:
"python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderComplexGlobalImage
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/complex-global-image.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Run
{
Image
:
"python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderComplexGlobalImageWithLogin
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/complex-global-image-with-login.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"login"
:
&
docker
.
Login
{
Username
:
"foo"
,
Password
:
"bar"
,
Server
:
"registry.docker.io"
,
},
"default-0"
:
&
docker
.
Run
{
Image
:
"registry.docker.io/python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
"logout"
:
&
docker
.
Logout
{
Server
:
"registry.docker.io"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Run
:
"on-success"
,
Concurrent
:
false
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"login"
,
"default-0"
,
"logout"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderComplexStepSimpleImage
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/complex-step-simple-image.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Run
{
Image
:
"python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderComplexStepImage
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/complex-step-image.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Run
{
Image
:
"python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderComplexStepImageWithLogin
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/complex-step-image-with-login.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0-login"
:
&
docker
.
Login
{
Username
:
"user"
,
Password
:
"pass"
,
Server
:
"registry.docker.io"
,
},
"default-0"
:
&
docker
.
Run
{
Image
:
"registry.docker.io/python:3"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"set -ex"
,
"find . -type f -iname \"*.pyc\" -exec rm -f {} \\; || true"
,
"find . -type d -iname __pycache__ -exec rm -rf {} \\; || true"
,
"pip install -r dev-requirements.txt"
,
"flake8"
,
"PYTHONPATH=$(pwd) py.test --color=auto --cov=pipelines --cov-report=term-missing tests"
,
},
Shell
:
"/bin/sh"
,
},
"default-0-logout"
:
&
docker
.
Logout
{
Server
:
"registry.docker.io"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0-login"
,
"default-0"
,
"default-0-logout"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderBranchNoImage
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/branch-no-image.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
err
=
cfg
.
Valid
()
Expect
(
err
).
To
(
Not
(
BeNil
()))
}
func
(
b
*
bitbucketSuite
)
TestLoaderBranchImage
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/branch-image.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"branch-develop-0"
:
&
docker
.
Run
{
Image
:
"library/alpine"
,
WorkDir
:
"/workspace"
,
Script
:
[]
string
{
"true"
,
},
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"branch-develop"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"branch-develop-0"
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderDockerMixed
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/docker-mixed.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Run
{
Image
:
"gliderlabs/alpine:edge"
,
Script
:
[]
string
{
"hostname"
},
WorkDir
:
"/workspace"
,
Shell
:
"/bin/sh"
,
},
"default-1"
:
&
docker
.
Login
{
Username
:
"$DOCKER_USERNAME"
,
Password
:
"$DOCKER_PASSWORD"
,
},
"default-2"
:
&
docker
.
Run
{
Image
:
"gliderlabs/alpine:edge"
,
Script
:
[]
string
{
"date +%s"
},
WorkDir
:
"/workspace"
,
Shell
:
"/bin/sh"
,
},
"default-3"
:
&
docker
.
Build
{
Files
:
[]
string
{
"."
},
Tag
:
"atlassian/my-app:$BITBUCKET_COMMIT"
,
},
"default-4"
:
&
docker
.
Push
{
Image
:
"atlassian/my-app:$BITBUCKET_COMMIT"
,
},
"default-5"
:
&
docker
.
Run
{
Image
:
"gliderlabs/alpine:edge"
,
Script
:
[]
string
{
"date +%s"
},
WorkDir
:
"/workspace"
,
Shell
:
"/bin/sh"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
,
"default-1"
,
"default-2"
,
"default-3"
,
"default-4"
,
"default-5"
,
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}
func
(
b
*
bitbucketSuite
)
TestLoaderDockerSimple
(
t
sweet
.
T
)
{
l
:=
Loader
{}
data
:=
t
.
Sweet
().
LoadFile
(
"data/docker-simple.yml"
)
cfg
,
err
:=
l
.
Load
(
""
,
""
,
data
,
[]
string
{},
true
)
Expect
(
err
).
To
(
BeNil
())
expected
:=
&
config
.
Config
{
Tasks
:
map
[
string
]
tasks
.
Task
{
"import"
:
&
docker
.
Import
{
Files
:
[]
string
{
"."
},
},
"default-0"
:
&
docker
.
Login
{
Username
:
"$DOCKER_USERNAME"
,
Password
:
"$DOCKER_PASSWORD"
,
},
"default-1"
:
&
docker
.
Build
{
Files
:
[]
string
{
"."
},
Tag
:
"atlassian/my-app:$BITBUCKET_COMMIT"
,
},
"default-2"
:
&
docker
.
Push
{
Image
:
"atlassian/my-app:$BITBUCKET_COMMIT"
,
},
},
Plans
:
map
[
string
]
plans
.
Plan
{
"default"
:
{
Stages
:
[]
stages
.
Stage
{
{
Name
:
"stage-0"
,
Enabled
:
true
,
Concurrent
:
false
,
Run
:
"on-success"
,
Environment
:
nil
,
Tasks
:
[]
string
{
"import"
,
"default-0"
,
"default-1"
,
"default-2"
,
},
},
},
},
},
}
Expect
(
cfg
).
To
(
Equal
(
expected
))
}