From a3cd0ec257212f456a95f1751700dbe906ee2157 Mon Sep 17 00:00:00 2001 From: jackgr Date: Wed, 30 Mar 2016 13:01:47 -0700 Subject: [PATCH] Fix chart directory relative path bug --- examples/charts/replicatedservice-3.tgz | Bin 2853 -> 0 bytes pkg/chart/chart.go | 22 +++++++++++++++++----- pkg/chart/chart_test.go | 9 +++++---- 3 files changed, 22 insertions(+), 9 deletions(-) delete mode 100644 examples/charts/replicatedservice-3.tgz diff --git a/examples/charts/replicatedservice-3.tgz b/examples/charts/replicatedservice-3.tgz deleted file mode 100644 index ebbcc18025ca3f2c54477a376ab43bc5109a2bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2853 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 DN;-N( diff --git a/pkg/chart/chart.go b/pkg/chart/chart.go index d36c15f1e..8367bd83a 100644 --- a/pkg/chart/chart.go +++ b/pkg/chart/chart.go @@ -220,20 +220,25 @@ func fname(name string) string { // If you are just reading the Chart.yaml file, it is substantially more // performant to use LoadChartfile. func LoadDir(chart string) (*Chart, error) { - if fi, err := os.Stat(chart); err != nil { + dir, err := filepath.Abs(chart) + if err != nil { + return nil, fmt.Errorf("%s is not a valid path", chart) + } + + if fi, err := os.Stat(dir); err != nil { return nil, err } else if !fi.IsDir() { - return nil, fmt.Errorf("Chart %s is not a directory.", chart) + return nil, fmt.Errorf("%s is not a directory", chart) } - cf, err := LoadChartfile(filepath.Join(chart, "Chart.yaml")) + cf, err := LoadChartfile(filepath.Join(dir, "Chart.yaml")) if err != nil { return nil, err } cl := &dirChart{ chartyaml: cf, - chartdir: chart, + chartdir: dir, } return &Chart{ @@ -293,9 +298,16 @@ func loadTar(r *tar.Reader) (*tarChart, error) { if err != nil { return nil, err } + + // ioutil.TempDir uses Getenv("TMPDIR"), so there are no guarantees + dir, err := filepath.Abs(td) + if err != nil { + return nil, fmt.Errorf("%s is not a valid path", td) + } + c := &tarChart{ chartyaml: &Chartfile{}, - tmpDir: td, + tmpDir: dir, } firstDir := "" diff --git a/pkg/chart/chart_test.go b/pkg/chart/chart_test.go index 6aea61033..e0da71ac6 100644 --- a/pkg/chart/chart_test.go +++ b/pkg/chart/chart_test.go @@ -141,18 +141,19 @@ func TestChart(t *testing.T) { t.Errorf("Unexpected chart file name: %s", c.Chartfile().Name) } + dir := c.Dir() d := c.DocsDir() - if d != filepath.Join(testdir, preDocs) { + if d != filepath.Join(dir, preDocs) { t.Errorf("Unexpectedly, docs are in %s", d) } d = c.TemplatesDir() - if d != filepath.Join(testdir, preTemplates) { + if d != filepath.Join(dir, preTemplates) { t.Errorf("Unexpectedly, templates are in %s", d) } d = c.HooksDir() - if d != filepath.Join(testdir, preHooks) { + if d != filepath.Join(dir, preHooks) { t.Errorf("Unexpectedly, hooks are in %s", d) } @@ -160,7 +161,7 @@ func TestChart(t *testing.T) { if err != nil { t.Errorf("No icon found in test chart: %s", err) } - if i != filepath.Join(testdir, preIcon) { + if i != filepath.Join(dir, preIcon) { t.Errorf("Unexpectedly, icon is in %s", i) } }