mirror of
https://github.com/ko-build/ko.git
synced 2025-11-06 09:19:12 +02:00
Implement "strict mode"
When ko is invoked in this mode, import paths must have the `ko://` prefix. If a human marks an import path with `ko://` and ko can't resolve the resulting import path, it fails. In "loose mode", such an import path would be silently ignored and passed on to the resolved YAML, often resulting in invalid image names (e.g., `image: github.com/foo/bar`) In loose mode, `ko://` prefixes are always ignored for backward-compatibility.
This commit is contained in:
@@ -39,7 +39,8 @@ func TestGoBuildIsSupportedRef(t *testing.T) {
|
||||
|
||||
// Supported import paths.
|
||||
for _, importpath := range []string{
|
||||
filepath.FromSlash("github.com/google/ko/cmd/ko"), // ko can build itself.
|
||||
filepath.FromSlash("github.com/google/ko/cmd/ko"), // ko can build itself.
|
||||
filepath.FromSlash("ko://github.com/google/ko/cmd/ko"), // ko:// prefix is ignored in loose mode.
|
||||
} {
|
||||
t.Run(importpath, func(t *testing.T) {
|
||||
if !ng.IsSupportedReference(importpath) {
|
||||
@@ -61,19 +62,52 @@ func TestGoBuildIsSupportedRef(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGoBuildIsSupportedReference_Strict(t *testing.T) {
|
||||
base, err := random.Image(1024, 3)
|
||||
if err != nil {
|
||||
t.Fatalf("random.Image() = %v", err)
|
||||
}
|
||||
ng, err := NewGo(WithBaseImages(func(string) (v1.Image, error) { return base, nil }), WithStrict())
|
||||
if err != nil {
|
||||
t.Fatalf("NewGo() = %v", err)
|
||||
}
|
||||
|
||||
// Supported import paths.
|
||||
for _, importpath := range []string{
|
||||
filepath.FromSlash("ko://github.com/google/ko/cmd/ko"), // ko can build itself.
|
||||
} {
|
||||
t.Run(importpath, func(t *testing.T) {
|
||||
if !ng.IsSupportedReference(importpath) {
|
||||
t.Errorf("IsSupportedReference(%q) = false, want true", importpath)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Unsupported import paths.
|
||||
for _, importpath := range []string{
|
||||
filepath.FromSlash("github.com/google/ko/cmd/ko"), // In strict mode, without ko://, it's not supported.
|
||||
filepath.FromSlash("github.com/google/ko/pkg/build"), // not a command.
|
||||
filepath.FromSlash("github.com/google/ko/pkg/nonexistent"), // does not exist.
|
||||
} {
|
||||
t.Run(importpath, func(t *testing.T) {
|
||||
if ng.IsSupportedReference(importpath) {
|
||||
t.Errorf("IsSupportedReference(%v) = true, want false", importpath)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGoBuildIsSupportedRefWithModules(t *testing.T) {
|
||||
base, err := random.Image(1024, 3)
|
||||
if err != nil {
|
||||
t.Fatalf("random.Image() = %v", err)
|
||||
}
|
||||
|
||||
mod := &modInfo{
|
||||
Path: filepath.FromSlash("github.com/google/ko/cmd/ko/test"),
|
||||
Dir: ".",
|
||||
}
|
||||
|
||||
ng, err := NewGo(WithBaseImages(func(string) (v1.Image, error) { return base, nil }),
|
||||
withModuleInfo(mod))
|
||||
ng, err := NewGo(WithBaseImages(func(string) (v1.Image, error) { return base, nil }), withModuleInfo(mod))
|
||||
if err != nil {
|
||||
t.Fatalf("NewGo() = %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user