diff --git a/pkg/action/show.go b/pkg/action/show.go index 8cf231593..8dc2e8bb5 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -137,6 +137,10 @@ func (s *Show) Run(chartpath string) (string, error) { } if s.OutputFormat == ShowCRDs || s.OutputFormat == ShowAll { + if err := chartutil.ProcessDependencies(s.chart, s.chart.Values); err != nil { + return "", errors.Wrap(err, "error processing chart dependencies") + } + crds := s.chart.CRDObjects() if len(crds) > 0 { if s.OutputFormat == ShowAll && !bytes.HasPrefix(crds[0].File.Data, []byte("---")) { diff --git a/pkg/action/show_test.go b/pkg/action/show_test.go index 8b617ea85..fe3172cff 100644 --- a/pkg/action/show_test.go +++ b/pkg/action/show_test.go @@ -122,6 +122,48 @@ bar } } +func TestShowCRDsDisabledSubchart(t *testing.T) { + client := NewShow(ShowCRDs) + client.chart = &chart.Chart{ + Metadata: &chart.Metadata{Name: "alpine", Dependencies: []*chart.Dependency{ + {Name: "enabledSubchart", Condition: "enabledSubchart.enabled"}, + {Name: "disabledSubchart", Condition: "disabledSubchart.enabled"}, + }}, + Values: map[string]interface{}{ + "enabledSubchart": map[string]interface{}{ + "enabled": true, + }, + "disabledSubchart": map[string]interface{}{ + "enabled": false, + }, + }, + } + client.chart.SetDependencies(&chart.Chart{ + Metadata: &chart.Metadata{Name: "enabledSubchart"}, + Files: []*chart.File{ + {Name: "crds/bar.yaml", Data: []byte("---\nbar\n")}, + }, + }, &chart.Chart{ + Metadata: &chart.Metadata{Name: "disabledSubchart"}, + Files: []*chart.File{ + {Name: "crds/baz.yaml", Data: []byte("---\nbaz\n")}, + }, + }) + + output, err := client.Run("") + if err != nil { + t.Fatal(err) + } + + expect := `--- +bar + +` + if output != expect { + t.Errorf("Expected\n%q\nGot\n%q\n", expect, output) + } +} + func TestShowNoReadme(t *testing.T) { client := NewShow(ShowAll) client.chart = &chart.Chart{