fix(resolver): fix issue 9944

Signed-off-by: cndoit18 <cndoit18@outlook.com>
pull/9945/head
cndoit18 4 years ago
parent 433b90c4b6
commit 5ae709dec2
No known key found for this signature in database
GPG Key ID: A5E54CE7AC730381

@ -18,6 +18,7 @@ package resolver
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
@ -57,7 +58,15 @@ func (r *Resolver) Resolve(reqs []*chart.Dependency, repoNames map[string]string
locked := make([]*chart.Dependency, len(reqs)) locked := make([]*chart.Dependency, len(reqs))
missing := []string{} missing := []string{}
for i, d := range reqs { for i, d := range reqs {
constraint, err := semver.NewConstraint(d.Version) v := d.Version
if len(strings.TrimSpace(v)) == 0 {
if !strings.HasPrefix(d.Repository, "file://") {
return nil, fmt.Errorf("dependency %q must has a version", d.Name)
}
v = "*"
}
constraint, err := semver.NewConstraint(v)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "dependency %q has an invalid version/constraint format", d.Name) return nil, errors.Wrapf(err, "dependency %q has an invalid version/constraint format", d.Name)
} }

@ -135,6 +135,29 @@ func TestResolve(t *testing.T) {
}, },
err: true, err: true,
}, },
{
name: "optional dependencise version",
req: []*chart.Dependency{
{Name: "base", Repository: "file://base", Version: ""},
},
expect: &chart.Lock{
Dependencies: []*chart.Dependency{
{Name: "base", Repository: "file://base", Version: "0.1.0"},
},
},
},
{
name: "required dependency version",
req: []*chart.Dependency{
{Name: "alpine", Repository: "http://example.com", Version: ""},
},
expect: &chart.Lock{
Dependencies: []*chart.Dependency{
{Name: "alpine", Repository: "http://example.com", Version: "0.2.0"},
},
},
err: true,
},
} }
repoNames := map[string]string{"alpine": "kubernetes-charts", "redis": "kubernetes-charts"} repoNames := map[string]string{"alpine": "kubernetes-charts", "redis": "kubernetes-charts"}

Loading…
Cancel
Save