package jobs import ( "strconv" "strings" "testing" "xcecli/common/format" ) // restart sends the API server the decimal job key (or [k]); a job ID // in its written form c-a-ts-seq used to be sent unconverted and rejected. func TestRestartParseCmdArgsConvertsJobID(t *testing.T) { written := format.FormatJobID(int64(testArrayKey)) key := strconv.FormatUint(testArrayKey, 10) cases := []struct{ in, want string }{ {key, key}, {written, key}, {written + "[2]", key + "[2]"}, {key + "[2]", key + "[2]"}, } for _, c := range cases { r := NewJobRestart(nil) if err := r.ParseCmdArgs(nil, []string{c.in}); err != nil { t.Errorf("%q: unexpected error %v", c.in, err) continue } if r.jobID != c.want { t.Errorf("%q: sends %q, want %q", c.in, r.jobID, c.want) } } for _, in := range []string{written + "[1-3]", "garbage"} { r := NewJobRestart(nil) err := r.ParseCmdArgs(nil, []string{in}) if err == nil { t.Errorf("%q: want an error", in) } else if !strings.Contains(err.Error(), in) { t.Errorf("%q: error %q does not name the selection", in, err) } } }