From d5e030c86ee7a0eeb8053e54acc8fc0e5910cb76 Mon Sep 17 00:00:00 2001 From: haoshengzhen Date: Fri, 19 Jun 2026 10:10:24 +0800 Subject: [PATCH 1/2] fix: reject unsupported net-info output formats Signed-off-by: haoshengzhen --- pkg/cmd/p2p.go | 15 ++++++++++----- pkg/cmd/p2p_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/pkg/cmd/p2p.go b/pkg/cmd/p2p.go index 578112211e..4963e077e6 100644 --- a/pkg/cmd/p2p.go +++ b/pkg/cmd/p2p.go @@ -40,6 +40,16 @@ var NetInfoCmd = &cobra.Command{ return fmt.Errorf("RPC address not found in node configuration") } + outputFormat, err := cmd.Flags().GetString(flagOutput) + if err != nil { + return err + } + switch outputFormat { + case "text", "json": + default: + return fmt.Errorf("unsupported output format %q (supported: text, json)", outputFormat) + } + // Create HTTP client httpClient := http.Client{ Transport: http.DefaultTransport, @@ -75,11 +85,6 @@ var NetInfoCmd = &cobra.Command{ return fmt.Errorf("GetPeerInfo RPC: %w", err) } - outputFormat, err := cmd.Flags().GetString(flagOutput) - if err != nil { - return err - } - if outputFormat == "json" { return formatJson(cmd.OutOrStdout(), netInfo, peerResp) } diff --git a/pkg/cmd/p2p_test.go b/pkg/cmd/p2p_test.go index a36895a0f9..baf344b1ae 100644 --- a/pkg/cmd/p2p_test.go +++ b/pkg/cmd/p2p_test.go @@ -199,3 +199,33 @@ func TestNetInfoCmd_NoPeers(t *testing.T) { mockP2P.AssertExpectations(t) } + +func TestNetInfoCmd_InvalidOutputFormat(t *testing.T) { + require := require.New(t) + + tempDir, err := os.MkdirTemp("", "evolve-test-home-invalid-output-*") + require.NoError(err) + defer os.RemoveAll(tempDir) + + rpcAddr := "127.0.0.1:1" + v := viper.New() + v.Set(config.FlagRPCAddress, rpcAddr) + v.Set(config.FlagRootDir, tempDir) + + rootCmd := &cobra.Command{Use: "root"} + rootCmd.PersistentFlags().String(config.FlagRootDir, tempDir, "Root directory for config and data") + rootCmd.PersistentFlags().String(config.FlagRPCAddress, rpcAddr, "RPC listen address") + + err = v.BindPFlag(config.FlagRootDir, rootCmd.PersistentFlags().Lookup(config.FlagRootDir)) + require.NoError(err) + err = v.BindPFlag(config.FlagRPCAddress, rootCmd.PersistentFlags().Lookup(config.FlagRPCAddress)) + require.NoError(err) + + NetInfoCmd.SetContext(context.WithValue(context.Background(), viperKey, v)) + rootCmd.AddCommand(NetInfoCmd) + + output, err := executeCommandC(rootCmd, "net-info", "--evnode.rpc.address="+rpcAddr, "--output", "yaml") + + require.Error(err, "Command should reject unsupported output format: %s", output) + require.Contains(err.Error(), `unsupported output format "yaml"`) +} From 1dbf684d81f1f130efc50fea536f7f2138fe8695 Mon Sep 17 00:00:00 2001 From: haoshengzhen Date: Fri, 19 Jun 2026 20:59:50 +0800 Subject: [PATCH 2/2] fix: reject unsupported net-info output formats Signed-off-by: haoshengzhen --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cb0126524..d6deb0bff8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Reject unsupported `net-info --output` formats instead of falling back to text output [#3360](https://github.com/evstack/ev-node/pull/3360). + ## v1.1.3 ### Fixed