func (o *Option) String() string {
	return fmt.Sprintf("-%s=%s", o.Name, o.Value)
}
String returns a string representation of the option.
package tester
import (
	"fmt"
	"time"
	"github.com/google/uuid"
)
type TBState string
const (
	TBStatePassed TBState = "passed"
	TBStateFailed TBState = "failed"
	TBStateSkipped TBState = "skipped"
)
type TB struct {
	Name       string    `json:"name"`
	StartedAt  time.Time `json:"started_at"`
	FinishedAt time.Time `json:"finished_at"`
	State      TBState   `json:"state"`
}
func (c *TB) Duration() time.Duration {
	return c.FinishedAt.Sub(c.StartedAt)
}
type TBLog struct {
	Time   time.Time `json:"time"`
	Name   string    `json:"name"`
	Output []byte    `json:"output"`
}
type T struct {
	TB
	SubTs []*T `json:"sub_ts"`
}
type Test struct {
	ID      uuid.UUID `json:"id"`
	Package string    `json:"package"`
	RunID   uuid.UUID `json:"run_id"`
	Result *T      `json:"result"`
	Logs   []TBLog `json:"logs"`
}
type Run struct {
	ID         uuid.UUID `json:"id"`
	Package    string    `json:"package"`
	Args       []string  `json:"args"`
	Meta       RunMeta   `json:"meta"`
	EnqueuedAt time.Time `json:"enqueued_at"`
	StartedAt  time.Time `json:"started_at"`
	FinishedAt time.Time `json:"finished_at"`
	Tests      []*Test   `json:"tests"`
	Error      string    `json:"error"`
}
type RunMeta struct {
	Runner string `json:"runner"`
}
func (r *Run) Duration() time.Duration {
	return r.FinishedAt.Sub(r.StartedAt)
}
type Package struct {
	Name      string        `json:"name"`
	Path      string        `json:"path"`
	SHA256Sum string        `json:"sha256sum"`
	RunDelay  time.Duration `json:"run_delay"`
	Options   []Option      `json:"options"`
}
type Option struct {
	Name        string `json:"name"`
	Value       string `json:"value"`
	Description string `json:"description"`
	Default     string `json:"default"`
}