diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 98ed348d8c..f377647ff1 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -794,8 +794,8 @@ func downloadEra(ctx *cli.Context) error { var network = "mainnet" if utils.IsNetworkPreset(ctx) { switch { - case ctx.IsSet(utils.MainnetFlag.Name): - case ctx.IsSet(utils.SepoliaFlag.Name): + case ctx.Bool(utils.MainnetFlag.Name): + case ctx.Bool(utils.SepoliaFlag.Name): network = "sepolia" default: return errors.New("unsupported network, no known era1 checksums") @@ -822,7 +822,7 @@ func downloadEra(ctx *cli.Context) error { return err } switch { - case ctx.IsSet(eraAllFlag.Name): + case ctx.Bool(eraAllFlag.Name): return l.DownloadAll(dir) case ctx.IsSet(eraBlockFlag.Name): diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 850e26d161..7a900dd139 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -303,13 +303,13 @@ func main() { func prepare(ctx *cli.Context) { // If we're running a known preset, log it for convenience. switch { - case ctx.IsSet(utils.SepoliaFlag.Name): + case ctx.Bool(utils.SepoliaFlag.Name): log.Info("Starting Geth on Sepolia testnet...") - case ctx.IsSet(utils.HoleskyFlag.Name): + case ctx.Bool(utils.HoleskyFlag.Name): log.Info("Starting Geth on Holesky testnet...") - case ctx.IsSet(utils.HoodiFlag.Name): + case ctx.Bool(utils.HoodiFlag.Name): log.Info("Starting Geth on Hoodi testnet...") case !ctx.IsSet(utils.NetworkIdFlag.Name): diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index c41cf4ee40..9948ec0824 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1926,7 +1926,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { if ctx.IsSet(RPCGlobalTxFeeCapFlag.Name) { cfg.RPCTxFeeCap = ctx.Float64(RPCGlobalTxFeeCapFlag.Name) } - if ctx.IsSet(NoDiscoverFlag.Name) { + if ctx.Bool(NoDiscoverFlag.Name) { cfg.EthDiscoveryURLs, cfg.SnapDiscoveryURLs = []string{}, []string{} } else if ctx.IsSet(DNSDiscoveryFlag.Name) { urls := ctx.String(DNSDiscoveryFlag.Name) @@ -2361,7 +2361,7 @@ func tryMakeReadOnlyDatabase(ctx *cli.Context, stack *node.Node) ethdb.Database func IsNetworkPreset(ctx *cli.Context) bool { for _, flag := range NetworkFlags { bFlag, _ := flag.(*cli.BoolFlag) - if ctx.IsSet(bFlag.Name) { + if ctx.Bool(bFlag.Name) { return true } } diff --git a/cmd/utils/flags_test.go b/cmd/utils/flags_test.go index 0be3370d4a..0c4b3bad3f 100644 --- a/cmd/utils/flags_test.go +++ b/cmd/utils/flags_test.go @@ -18,8 +18,11 @@ package utils import ( + "flag" "reflect" "testing" + + "github.com/urfave/cli/v2" ) func Test_SplitTagsFlag(t *testing.T) { @@ -64,3 +67,52 @@ func Test_SplitTagsFlag(t *testing.T) { }) } } + +func TestIsNetworkPresetUsesFlagValue(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + args []string + want bool + }{ + { + name: "unset", + want: false, + }, + { + name: "enabled", + args: []string{"--sepolia"}, + want: true, + }, + { + name: "explicit false", + args: []string{"--sepolia=false"}, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + ctx := newTestContext(t, tt.args, NetworkFlags...) + if got := IsNetworkPreset(ctx); got != tt.want { + t.Fatalf("IsNetworkPreset() = %v, want %v", got, tt.want) + } + }) + } +} + +func newTestContext(t *testing.T, args []string, flags ...cli.Flag) *cli.Context { + t.Helper() + + set := flag.NewFlagSet("test", flag.ContinueOnError) + for _, f := range flags { + if err := f.Apply(set); err != nil { + t.Fatal(err) + } + } + if err := set.Parse(args); err != nil { + t.Fatal(err) + } + return cli.NewContext(nil, set, nil) +} diff --git a/cmd/workload/testsuite.go b/cmd/workload/testsuite.go index 4e33522f1b..998dbfe165 100644 --- a/cmd/workload/testsuite.go +++ b/cmd/workload/testsuite.go @@ -122,7 +122,7 @@ func validateHistoryPruneErr(err error, blockNum uint64, historyPruneBlock *uint func testConfigFromCLI(ctx *cli.Context) (cfg testConfig) { flags.CheckExclusive(ctx, testMainnetFlag, testSepoliaFlag) - if (ctx.IsSet(testMainnetFlag.Name) || ctx.IsSet(testSepoliaFlag.Name)) && ctx.IsSet(filterQueryFileFlag.Name) { + if (ctx.Bool(testMainnetFlag.Name) || ctx.Bool(testSepoliaFlag.Name)) && ctx.IsSet(filterQueryFileFlag.Name) { exit(filterQueryFileFlag.Name + " cannot be used with " + testMainnetFlag.Name + " or " + testSepoliaFlag.Name) }