Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Ijaz Ahmad
ksonnet
Commits
abe8e31d
Commit
abe8e31d
authored
Aug 20, 2018
by
Oren Shomron
Browse files
Validate environment prior to fetching in pkg install
Closes #702 Signed-off-by:
Oren Shomron
<
shomron@gmail.com
>
parent
70935911
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
8 deletions
+74
-8
pkg/actions/pkg_install.go
pkg/actions/pkg_install.go
+31
-8
pkg/actions/pkg_install_test.go
pkg/actions/pkg_install_test.go
+43
-0
No files found.
pkg/actions/pkg_install.go
View file @
abe8e31d
...
...
@@ -19,12 +19,15 @@ import (
"github.com/ksonnet/ksonnet/pkg/app"
"github.com/ksonnet/ksonnet/pkg/pkg"
"github.com/ksonnet/ksonnet/pkg/registry"
"github.com/pkg/errors"
)
type
libCacher
func
(
app
.
App
,
registry
.
InstalledChecker
,
pkg
.
Descriptor
,
string
,
bool
)
(
*
app
.
LibraryConfig
,
error
)
type
libUpdater
func
(
name
string
,
env
string
,
spec
*
app
.
LibraryConfig
)
(
*
app
.
LibraryConfig
,
error
)
type
envChecker
func
(
name
string
)
(
bool
,
error
)
// RunPkgInstall runs `pkg install`
func
RunPkgInstall
(
m
map
[
string
]
interface
{})
error
{
pi
,
err
:=
NewPkgInstall
(
m
)
...
...
@@ -37,14 +40,15 @@ func RunPkgInstall(m map[string]interface{}) error {
// PkgInstall installs packages.
type
PkgInstall
struct
{
app
app
.
App
libName
string
customName
string
envName
string
force
bool
checker
registry
.
InstalledChecker
libCacherFn
libCacher
libUpdateFn
libUpdater
app
app
.
App
libName
string
customName
string
envName
string
force
bool
checker
registry
.
InstalledChecker
libCacherFn
libCacher
libUpdateFn
libUpdater
envCheckerFn
envChecker
}
// NewPkgInstall creates an instance of PkgInstall.
...
...
@@ -70,6 +74,14 @@ func NewPkgInstall(m map[string]interface{}) (*PkgInstall, error) {
return
registry
.
CacheDependency
(
a
,
checker
,
d
,
customName
,
force
,
httpClient
)
},
libUpdateFn
:
a
.
UpdateLib
,
envCheckerFn
:
func
(
name
string
)
(
bool
,
error
)
{
env
,
err
:=
a
.
Environment
(
name
)
if
err
!=
nil
{
return
false
,
err
}
exists
:=
(
env
!=
nil
)
return
exists
,
nil
},
}
if
ol
.
err
!=
nil
{
...
...
@@ -86,6 +98,17 @@ func (pi *PkgInstall) Run() error {
return
err
}
// Environment validation
if
pi
.
envName
!=
""
{
ok
,
err
:=
pi
.
envCheckerFn
(
pi
.
envName
)
if
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"checking environment"
)
}
if
!
ok
{
return
errors
.
Errorf
(
"invalid environment: %s"
,
pi
.
envName
)
}
}
libCfg
,
err
:=
pi
.
libCacherFn
(
pi
.
app
,
pi
.
checker
,
d
,
customName
,
pi
.
force
)
if
err
!=
nil
{
return
err
...
...
pkg/actions/pkg_install_test.go
View file @
abe8e31d
...
...
@@ -22,6 +22,7 @@ import (
amocks
"github.com/ksonnet/ksonnet/pkg/app/mocks"
"github.com/ksonnet/ksonnet/pkg/pkg"
"github.com/ksonnet/ksonnet/pkg/registry"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
...
...
@@ -97,3 +98,45 @@ func TestPkgInstall_requires_app(t *testing.T) {
_
,
err
:=
NewPkgInstall
(
in
)
require
.
Error
(
t
,
err
)
}
func
TestPkgInstall_invalid_env
(
t
*
testing
.
T
)
{
withApp
(
t
,
func
(
appMock
*
amocks
.
App
)
{
libName
:=
"incubator/apache"
customName
:=
"customName"
in
:=
map
[
string
]
interface
{}{
OptionApp
:
appMock
,
OptionPkgName
:
libName
,
OptionName
:
customName
,
OptionEnvName
:
"invalid-env"
,
OptionForce
:
false
,
OptionTLSSkipVerify
:
false
,
}
a
,
err
:=
NewPkgInstall
(
in
)
require
.
NoError
(
t
,
err
)
var
cacherCalled
bool
fakeCacher
:=
func
(
a
app
.
App
,
checker
registry
.
InstalledChecker
,
d
pkg
.
Descriptor
,
cn
string
,
force
bool
)
(
*
app
.
LibraryConfig
,
error
)
{
cacherCalled
=
true
return
nil
,
errors
.
New
(
"not implemented"
)
}
var
updaterCalled
bool
fakeUpdater
:=
func
(
name
string
,
env
string
,
spec
*
app
.
LibraryConfig
)
(
*
app
.
LibraryConfig
,
error
)
{
updaterCalled
=
true
return
nil
,
errors
.
New
(
"not implemented"
)
}
a
.
libCacherFn
=
fakeCacher
a
.
libUpdateFn
=
fakeUpdater
a
.
envCheckerFn
=
func
(
string
)
(
bool
,
error
)
{
return
false
,
nil
}
err
=
a
.
Run
()
require
.
Error
(
t
,
err
)
assert
.
False
(
t
,
cacherCalled
,
"dependency cacher called unexpectedly"
)
assert
.
False
(
t
,
updaterCalled
,
"library reference updater called unexpectedly"
)
})
}
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