mirror of
https://github.com/kubevela/kubevela.git
synced 2026-02-14 10:00:06 +00:00
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:
@@ -837,13 +837,20 @@ func NewDefinitionRenderCommand(c common.Args) *cobra.Command {
|
|||||||
return errors.Wrapf(err, "failed to read directory %s", args[0])
|
return errors.Wrapf(err, "failed to read directory %s", args[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var renderErrs []error
|
||||||
for i, inputFilename := range inputFilenames {
|
for i, inputFilename := range inputFilenames {
|
||||||
if err = render(inputFilename, outputFilenames[i]); err != nil {
|
renderErr := render(inputFilename, outputFilenames[i])
|
||||||
if _, err = fmt.Fprintf(cmd.ErrOrStderr(), "failed to render %s, reason: %v", inputFilename, err); err != nil {
|
if renderErr != nil {
|
||||||
return errors.Wrapf(err, "failed to write err")
|
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
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -543,7 +543,7 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
|
|||||||
defer removeFile(traitFilename, t)
|
defer removeFile(traitFilename, t)
|
||||||
cmd.SetArgs([]string{traitFilename})
|
cmd.SetArgs([]string{traitFilename})
|
||||||
if err := cmd.Execute(); err != nil {
|
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
|
// directory read/write test
|
||||||
_ = os.Setenv(HelmChartFormatEnvName, "system")
|
_ = os.Setenv(HelmChartFormatEnvName, "system")
|
||||||
@@ -558,16 +558,22 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
|
|||||||
initCommand(cmd)
|
initCommand(cmd)
|
||||||
cmd.SetArgs([]string{dirname, "-o", outputDir, "--message", "Author: KubeVela"})
|
cmd.SetArgs([]string{dirname, "-o", outputDir, "--message", "Author: KubeVela"})
|
||||||
if err := cmd.Execute(); err != nil {
|
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
|
// directory read/print test
|
||||||
_ = os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)
|
require.NoError(t, os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)) // ignored
|
||||||
_ = os.WriteFile(filepath.Join(dirname, "temp.cue"), []byte("hello"), 0600)
|
badCueFile := filepath.Join(dirname, "temp.cue")
|
||||||
|
require.NoError(t, os.WriteFile(badCueFile, []byte("hello"), 0600))
|
||||||
|
|
||||||
cmd = NewDefinitionRenderCommand(c)
|
cmd = NewDefinitionRenderCommand(c)
|
||||||
initCommand(cmd)
|
initCommand(cmd)
|
||||||
cmd.SetArgs([]string{dirname})
|
cmd.SetArgs([]string{dirname})
|
||||||
if err := cmd.Execute(); err != nil {
|
err = cmd.Execute()
|
||||||
t.Fatalf("unexpeced error when executing render command: %v", err)
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user