gotest

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2026 License: AGPL-3.0, AGPL-3.0-or-later Imports: 16 Imported by: 0

Documentation

Overview

Package gotest observes the bounded JSON event stream emitted by Go 1.27's `go test -json` mode without retaining test or build output text.

Index

Constants

View Source
const (
	MaxLineBytes   = 1 << 20
	MaxEventBytes  = 16 << 20
	MaxOutputBytes = 8 << 20
	MaxPackages    = 4_096
	MaxTests       = 100_000
	MaxEvents      = 100_000
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AttributeDigest

type AttributeDigest struct {
	KeySHA256   string
	ValueSHA256 string
}

type BuildState

type BuildState struct {
	ImportPath string
	Status     string
}

type Config

type Config struct {
	DiscoveredPackages []string
	RequestedPackages  []string
	ArtifactRoot       string
	Process            ProcessOutcome
}

Config binds runner events to the preceding discovery and to a run-owned artifact directory. All fields are mandatory.

type Error

type Error struct {
	Failure Failure
	Line    int
}

func (*Error) Error

func (e *Error) Error() string

type Event

type Event struct {
	Sequence           uint64
	Kind               EventKind
	Action             string
	Package            string
	Test               string
	ImportPath         string
	ElapsedNS          int64
	HasElapsed         bool
	RawTime            string
	TimeUTC            time.Time
	HasTime            bool
	OutputType         string
	OutputDigest       string
	OutputBytes        uint64
	HasOutput          bool
	FailedBuild        string
	Attribute          *AttributeDigest
	ArtifactPathSHA256 string
}

func (Event) CanonicalFactBody

func (e Event) CanonicalFactBody() ([]byte, error)

CanonicalFactBody returns the normalized runner-fact payload. It deliberately excludes sequence, WEI, and event identity; those are bound by the coordinator only after the workspace execution identity exists.

type EventKind

type EventKind string
const (
	TestEvent  EventKind = "test"
	BuildEvent EventKind = "build"
)

type Failure

type Failure string
const (
	FailureRead                Failure = "read"
	FailureMissingLF           Failure = "missing_lf"
	FailureEmptyLine           Failure = "empty_line"
	FailureOversizeLine        Failure = "oversize_line"
	FailureTooManyEventBytes   Failure = "too_many_event_bytes"
	FailureTooManyOutputBytes  Failure = "too_many_output_bytes"
	FailureTooManyEvents       Failure = "too_many_events"
	FailureTooManyPackages     Failure = "too_many_packages"
	FailureTooManyTests        Failure = "too_many_tests"
	FailureSink                Failure = "sink"
	FailureMalformedJSON       Failure = "malformed_json"
	FailureDuplicateKey        Failure = "duplicate_key"
	FailureUnknownField        Failure = "unknown_field"
	FailureMissingField        Failure = "missing_field"
	FailureInvalidField        Failure = "invalid_field"
	FailureUnknownAction       Failure = "unknown_action"
	FailureSequenceConflict    Failure = "sequence_conflict"
	FailureMissingTerminal     Failure = "missing_terminal"
	FailureConflictingTerminal Failure = "conflicting_terminal"
	FailureConfig              Failure = "config"
	FailurePackageDiscovery    Failure = "package_discovery"
	FailureArtifactContainment Failure = "artifact_containment"
	FailureBuildMismatch       Failure = "build_mismatch"
	FailureProcessMismatch     Failure = "process_mismatch"
)

type Observation

type Observation struct {
	Events            []Event
	Packages          []PackageState
	Builds            []BuildState
	EventCount        uint64
	EventBytes        uint64
	OutputBytes       uint64
	TestCount         uint64
	IncompleteReasons []string
}

func Observe

func Observe(r io.Reader, config Config) (Observation, error)

func Stream

func Stream(r io.Reader, config Config, sink func(Event) error) (Observation, error)

Stream emits bounded provisional facts without retaining the event stream. Canonical IDs are assigned by the post-WEI layer, not by this decoder.

type PackageState

type PackageState struct {
	Name        string
	Status      string
	ElapsedNS   int64
	HasElapsed  bool
	Tests       []TestState
	FailedBuild string
}

type ProcessOutcome

type ProcessOutcome struct {
	Exited   bool
	ExitCode uint32
}

ProcessOutcome is the terminal result of the exact go test process whose stdout is supplied to Observe or Stream.

type TestState

type TestState struct {
	Name       string
	Status     string
	ElapsedNS  int64
	HasElapsed bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL