diff --git a/state/state.go b/state/state.go index 5154f33b..31b6216c 100644 --- a/state/state.go +++ b/state/state.go @@ -398,15 +398,16 @@ func (state *HelmState) UpdateDeps(helm helmexec.Interface) []error { // be constructed relative to the `base path`. // - Everything else is assumed to be an absolute path or an actual / reference. func normalizeChart(basePath, chart string) string { - if !isLocalChart(chart) { + regex, _ := regexp.Compile("^[.]?./") + if !regex.MatchString(chart) { return chart } return filepath.Join(basePath, chart) } func isLocalChart(chart string) bool { - regex, _ := regexp.Compile("^[.]?./") - return regex.MatchString(chart) + _, err := os.Stat(chart) + return err == nil } func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseSpec) ([]string, error) { diff --git a/state/state_test.go b/state/state_test.go index 871f0287..ef293769 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -371,7 +371,7 @@ func Test_isLocalChart(t *testing.T) { { name: "local chart", args: args{ - chart: "./charts/nonstop", + chart: "./", }, want: true, }, @@ -392,14 +392,14 @@ func Test_isLocalChart(t *testing.T) { { name: "parent local path", args: args{ - chart: "../../dotty", + chart: "../examples", }, want: true, }, { name: "parent-parent local path", args: args{ - chart: "../../dotty", + chart: "../../", }, want: true, }, @@ -561,13 +561,13 @@ func TestHelmState_UpdateDeps(t *testing.T) { BaseChartPath: "/src", Releases: []ReleaseSpec{ { - Chart: "./local", + Chart: "./..", }, { - Chart: "../local", + Chart: "../examples", }, { - Chart: "../../local", + Chart: "../../helmfile", }, { Chart: "published", @@ -580,13 +580,14 @@ func TestHelmState_UpdateDeps(t *testing.T) { }, }, } - want := []string{"/src/local", "/local", "/local"} + + want := []string{"/", "/examples", "/helmfile"} helm := &mockHelmExec{} errs := state.UpdateDeps(helm) if !reflect.DeepEqual(helm.charts, want) { t.Errorf("HelmState.UpdateDeps() = %v, want %v", helm.charts, want) } - if len(errs) != 1 { - t.Errorf("HelmState.UpdateDeps() - expected an error, but got: %v", len(errs)) + if len(errs) != 0 { + t.Errorf("HelmState.UpdateDeps() - no errors, but got: %v", len(errs)) } }