Fix(cli): return non-zero exit code on `vela def render` error (#6818)

* fix  exit code on render error

Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com>

* minor changes

Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com>

* fix error catch logic

Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com>

---------

Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com>
This commit is contained in:
Rashid Alam 2025-09-03 03:30:58 +05:30 committed by GitHub
parent e533898192
commit 6fbeb6887f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 9 deletions

View File

@ -837,13 +837,20 @@ func NewDefinitionRenderCommand(c common.Args) *cobra.Command {
return errors.Wrapf(err, "failed to read directory %s", args[0])
}
}
var renderErrs []error
for i, inputFilename := range inputFilenames {
if err = render(inputFilename, outputFilenames[i]); err != nil {
if _, err = fmt.Fprintf(cmd.ErrOrStderr(), "failed to render %s, reason: %v", inputFilename, err); err != nil {
return errors.Wrapf(err, "failed to write err")
renderErr := render(inputFilename, outputFilenames[i])
if renderErr != nil {
wrappedRenderErr := errors.Wrapf(renderErr, "failed to render %s", inputFilename)
if _, writeErr := fmt.Fprintln(cmd.ErrOrStderr(), wrappedRenderErr); writeErr != nil {
renderErrs = append(renderErrs, errors.Wrapf(writeErr, "failed to write to stderr for %s", inputFilename))
}
renderErrs = append(renderErrs, wrappedRenderErr)
}
}
if len(renderErrs) > 0 {
return fmt.Errorf("rendering failed for %d file(s)", len(renderErrs))
}
return nil
},
}

View File

@ -543,7 +543,7 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
defer removeFile(traitFilename, t)
cmd.SetArgs([]string{traitFilename})
if err := cmd.Execute(); err != nil {
t.Fatalf("unexpeced error when executing redner command: %v", err)
t.Fatalf("unexpected error when executing render command on single file: %v", err)
}
// directory read/write test
_ = os.Setenv(HelmChartFormatEnvName, "system")
@ -558,16 +558,22 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
initCommand(cmd)
cmd.SetArgs([]string{dirname, "-o", outputDir, "--message", "Author: KubeVela"})
if err := cmd.Execute(); err != nil {
t.Fatalf("unexpeced error when executing render command: %v", err)
t.Fatalf("unexpected error when executing render command on valid directory: %v", err)
}
// directory read/print test
_ = os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)
_ = os.WriteFile(filepath.Join(dirname, "temp.cue"), []byte("hello"), 0600)
require.NoError(t, os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)) // ignored
badCueFile := filepath.Join(dirname, "temp.cue")
require.NoError(t, os.WriteFile(badCueFile, []byte("hello"), 0600))
cmd = NewDefinitionRenderCommand(c)
initCommand(cmd)
cmd.SetArgs([]string{dirname})
if err := cmd.Execute(); err != nil {
t.Fatalf("unexpeced error when executing render command: %v", err)
err = cmd.Execute()
if err == nil {
t.Fatalf("expected error when executing render command with invalid CUE file, got nil")
}
if !strings.Contains(err.Error(), "rendering failed for") {
t.Fatalf("unexpected error message: %v", err)
}
}