Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 24 additions & 13 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,16 +318,33 @@ func withPage() (*State, *rod.Browser, *rod.Page) {

// --- Commands ---

func cmdStart(args []string) {
ignoreCertErrors := false
for i := 0; i < len(args); i++ {
switch args[i] {
type startFlags struct {
headless bool
ignoreCertErrors bool
}

// parseStartFlags parses the arguments to "rodney start".
func parseStartFlags(args []string) (startFlags, error) {
f := startFlags{headless: true}
for _, arg := range args {
switch arg {
case "--show":
f.headless = false
case "--insecure", "-k":
ignoreCertErrors = true
f.ignoreCertErrors = true
default:
fatal("unknown flag: %s\nusage: rodney start [--insecure]", args[i])
return f, fmt.Errorf("unknown flag: %s\nusage: rodney start [--show] [--insecure | -k]", arg)
}
}
return f, nil
}

func cmdStart(args []string) {
flags, err := parseStartFlags(args)
if err != nil {
fatal("%s", err)
}
ignoreCertErrors := flags.ignoreCertErrors

// Check if already running
if s, err := loadState(); err == nil {
Expand All @@ -339,13 +356,7 @@ func cmdStart(args []string) {
}
}

// Parse flags
headless := true
for _, arg := range args {
if arg == "--show" {
headless = false
}
}
headless := flags.headless

dataDir := filepath.Join(stateDir(), "chrome-data")
os.MkdirAll(dataDir, 0755)
Expand Down
73 changes: 73 additions & 0 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1148,3 +1148,76 @@ func TestInsecureFlag_WithSelfSignedCert(t *testing.T) {
}
})
}

// =====================
// parseStartFlags tests
// =====================

func TestParseStartFlags_ShowFlag(t *testing.T) {
flags, err := parseStartFlags([]string{"--show"})
if err != nil {
t.Fatalf("--show should be accepted, got error: %v", err)
}
if flags.headless {
t.Error("expected headless=false when --show is passed")
}
}

func TestParseStartFlags_ShowAndInsecure(t *testing.T) {
flags, err := parseStartFlags([]string{"--show", "--insecure"})
if err != nil {
t.Fatalf("--show --insecure should be accepted, got error: %v", err)
}
if flags.headless {
t.Error("expected headless=false when --show is passed")
}
if !flags.ignoreCertErrors {
t.Error("expected ignoreCertErrors=true when --insecure is passed")
}
}

func TestParseStartFlags_InsecureOnly(t *testing.T) {
flags, err := parseStartFlags([]string{"--insecure"})
if err != nil {
t.Fatalf("--insecure should be accepted, got error: %v", err)
}
if !flags.headless {
t.Error("expected headless=true (default) when --show is not passed")
}
if !flags.ignoreCertErrors {
t.Error("expected ignoreCertErrors=true when --insecure is passed")
}
}

func TestParseStartFlags_KShorthand(t *testing.T) {
flags, err := parseStartFlags([]string{"-k"})
if err != nil {
t.Fatalf("-k should be accepted, got error: %v", err)
}
if !flags.ignoreCertErrors {
t.Error("expected ignoreCertErrors=true when -k is passed")
}
}

func TestParseStartFlags_NoArgs(t *testing.T) {
flags, err := parseStartFlags([]string{})
if err != nil {
t.Fatalf("no args should be accepted, got error: %v", err)
}
if !flags.headless {
t.Error("expected headless=true by default")
}
if flags.ignoreCertErrors {
t.Error("expected ignoreCertErrors=false by default")
}
}

func TestParseStartFlags_UnknownFlag(t *testing.T) {
_, err := parseStartFlags([]string{"--bogus"})
if err == nil {
t.Fatal("expected error for unknown flag --bogus")
}
if !strings.Contains(err.Error(), "unknown flag: --bogus") {
t.Errorf("expected 'unknown flag: --bogus' in error, got: %v", err)
}
}