@ -35,7 +35,7 @@ func TestUpdateCmd(t *testing.T) {
var out bytes . Buffer
// Instead of using the HTTP updater, we provide our own for this test.
// The TestUpdateCharts test verifies the HTTP behavior independently.
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool ) error {
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool , showValidationErrors bool ) error {
for _ , re := range repos {
fmt . Fprintln ( out , re . Config . Name )
}
@ -45,7 +45,7 @@ func TestUpdateCmd(t *testing.T) {
update : updater ,
repoFile : "testdata/repositories.yaml" ,
}
if err := o . run ( & out ); err != nil {
if err := o . run ( & out , [ ] string { } ); err != nil {
t . Fatal ( err )
}
@ -60,7 +60,7 @@ func TestUpdateCmdMultiple(t *testing.T) {
var out bytes . Buffer
// Instead of using the HTTP updater, we provide our own for this test.
// The TestUpdateCharts test verifies the HTTP behavior independently.
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool ) error {
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool , showValidationErrors bool ) error {
for _ , re := range repos {
fmt . Fprintln ( out , re . Config . Name )
}
@ -71,7 +71,7 @@ func TestUpdateCmdMultiple(t *testing.T) {
repoFile : "testdata/repositories.yaml" ,
names : [ ] string { "firstexample" , "charts" } ,
}
if err := o . run ( & out ); err != nil {
if err := o . run ( & out , [ ] string { } ); err != nil {
t . Fatal ( err )
}
@ -86,7 +86,7 @@ func TestUpdateCmdInvalid(t *testing.T) {
var out bytes . Buffer
// Instead of using the HTTP updater, we provide our own for this test.
// The TestUpdateCharts test verifies the HTTP behavior independently.
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool ) error {
updater := func ( repos [ ] * repo . ChartRepository , out io . Writer , failOnRepoUpdateFail bool , showValidationErrors bool ) error {
for _ , re := range repos {
fmt . Fprintln ( out , re . Config . Name )
}
@ -97,7 +97,7 @@ func TestUpdateCmdInvalid(t *testing.T) {
repoFile : "testdata/repositories.yaml" ,
names : [ ] string { "firstexample" , "invalid" } ,
}
if err := o . run ( & out ); err == nil {
if err := o . run ( & out , [ ] string { } ); err == nil {
t . Fatal ( "expected error but did not get one" )
}
}
@ -120,7 +120,7 @@ func TestUpdateCustomCacheCmd(t *testing.T) {
repoCache : cachePath ,
}
b := ioutil . Discard
if err := o . run ( b ); err != nil {
if err := o . run ( b , [ ] string { } ); err != nil {
t . Fatal ( err )
}
if _ , err := os . Stat ( filepath . Join ( cachePath , "test-index.yaml" ) ) ; err != nil {
@ -147,7 +147,7 @@ func TestUpdateCharts(t *testing.T) {
}
b := bytes . NewBuffer ( nil )
updateCharts ( [ ] * repo . ChartRepository { r } , b , false )
updateCharts ( [ ] * repo . ChartRepository { r } , b , false , false )
got := b . String ( )
if strings . Contains ( got , "Unable to get an update" ) {
@ -183,7 +183,7 @@ func TestUpdateChartsFail(t *testing.T) {
}
b := bytes . NewBuffer ( nil )
if err := updateCharts ( [ ] * repo . ChartRepository { r } , b , false ); err != nil {
if err := updateCharts ( [ ] * repo . ChartRepository { r } , b , false , false ); err != nil {
t . Error ( "Repo update should not return error if update of repository fails" )
}
@ -216,7 +216,50 @@ func TestUpdateChartsFailWithError(t *testing.T) {
}
b := bytes . NewBuffer ( nil )
err = updateCharts ( [ ] * repo . ChartRepository { r } , b , true )
err = updateCharts ( [ ] * repo . ChartRepository { r } , b , true , false )
if err == nil {
t . Error ( "Repo update should return error because update of repository fails and 'fail-on-repo-update-fail' flag set" )
return
}
var expectedErr = "Failed to update the following repositories"
var receivedErr = err . Error ( )
if ! strings . Contains ( receivedErr , expectedErr ) {
t . Errorf ( "Expected error (%s) but got (%s) instead" , expectedErr , receivedErr )
}
if ! strings . Contains ( receivedErr , invalidURL ) {
t . Errorf ( "Expected invalid URL (%s) in error message but got (%s) instead" , invalidURL , receivedErr )
}
got := b . String ( )
if ! strings . Contains ( got , "Unable to get an update" ) {
t . Errorf ( "Repo should have failed update but instead got: %q" , got )
}
if strings . Contains ( got , "Update Complete." ) {
t . Error ( "Update was not successful and should return error message because 'fail-on-repo-update-fail' flag set" )
}
}
func TestUpdateChartsShowValidationErrors ( t * testing . T ) {
defer resetEnv ( ) ( )
defer ensure . HelmHome ( t ) ( )
ts , err := repotest . NewTempServerWithCleanup ( t , "testdata/testserver/*.*" )
if err != nil {
t . Fatal ( err )
}
defer ts . Stop ( )
var invalidURL = ts . URL ( ) + "55"
r , err := repo . NewChartRepository ( & repo . Entry {
Name : "charts" ,
URL : invalidURL ,
} , getter . All ( settings ) )
if err != nil {
t . Error ( err )
}
b := bytes . NewBuffer ( nil )
err = updateCharts ( [ ] * repo . ChartRepository { r } , b , true , true )
if err == nil {
t . Error ( "Repo update should return error because update of repository fails and 'fail-on-repo-update-fail' flag set" )
return