Merge pull request #115 from sstarcher/chart_detection

support relative path for is local check
This commit is contained in:
KUOKA Yusuke 2018-04-26 06:13:22 +09:00 committed by GitHub
commit 9b0d0d4cba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 12 deletions

View File

@ -398,15 +398,16 @@ func (state *HelmState) UpdateDeps(helm helmexec.Interface) []error {
// be constructed relative to the `base path`. // be constructed relative to the `base path`.
// - Everything else is assumed to be an absolute path or an actual <repository>/<chart> reference. // - Everything else is assumed to be an absolute path or an actual <repository>/<chart> reference.
func normalizeChart(basePath, chart string) string { func normalizeChart(basePath, chart string) string {
if !isLocalChart(chart) { regex, _ := regexp.Compile("^[.]?./")
if !regex.MatchString(chart) {
return chart return chart
} }
return filepath.Join(basePath, chart) return filepath.Join(basePath, chart)
} }
func isLocalChart(chart string) bool { func isLocalChart(chart string) bool {
regex, _ := regexp.Compile("^[.]?./") _, err := os.Stat(chart)
return regex.MatchString(chart) return err == nil
} }
func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseSpec) ([]string, error) { func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseSpec) ([]string, error) {

View File

@ -371,7 +371,7 @@ func Test_isLocalChart(t *testing.T) {
{ {
name: "local chart", name: "local chart",
args: args{ args: args{
chart: "./charts/nonstop", chart: "./",
}, },
want: true, want: true,
}, },
@ -392,14 +392,14 @@ func Test_isLocalChart(t *testing.T) {
{ {
name: "parent local path", name: "parent local path",
args: args{ args: args{
chart: "../../dotty", chart: "../examples",
}, },
want: true, want: true,
}, },
{ {
name: "parent-parent local path", name: "parent-parent local path",
args: args{ args: args{
chart: "../../dotty", chart: "../../",
}, },
want: true, want: true,
}, },
@ -561,13 +561,13 @@ func TestHelmState_UpdateDeps(t *testing.T) {
BaseChartPath: "/src", BaseChartPath: "/src",
Releases: []ReleaseSpec{ Releases: []ReleaseSpec{
{ {
Chart: "./local", Chart: "./..",
}, },
{ {
Chart: "../local", Chart: "../examples",
}, },
{ {
Chart: "../../local", Chart: "../../helmfile",
}, },
{ {
Chart: "published", Chart: "published",
@ -580,13 +580,14 @@ func TestHelmState_UpdateDeps(t *testing.T) {
}, },
}, },
} }
want := []string{"/src/local", "/local", "/local"}
want := []string{"/", "/examples", "/helmfile"}
helm := &mockHelmExec{} helm := &mockHelmExec{}
errs := state.UpdateDeps(helm) errs := state.UpdateDeps(helm)
if !reflect.DeepEqual(helm.charts, want) { if !reflect.DeepEqual(helm.charts, want) {
t.Errorf("HelmState.UpdateDeps() = %v, want %v", helm.charts, want) t.Errorf("HelmState.UpdateDeps() = %v, want %v", helm.charts, want)
} }
if len(errs) != 1 { if len(errs) != 0 {
t.Errorf("HelmState.UpdateDeps() - expected an error, but got: %v", len(errs)) t.Errorf("HelmState.UpdateDeps() - no errors, but got: %v", len(errs))
} }
} }