internal

package
v2.1.8 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const BAILOUT_MESSAGE = `` /* 1486-byte string literal not displayed */
View Source
const BAILOUT_TIME = 1 * time.Second
View Source
const Focus = focusType(true)
View Source
const OncePerOrdered = honorsOrderedType(true)
View Source
const Ordered = orderedType(true)
View Source
const Pending = pendingType(true)
View Source
const Serial = serialType(true)

Variables

This section is empty.

Functions

func ApplyNestedFocusPolicyToTree

func ApplyNestedFocusPolicyToTree(tree *TreeNode)

If a container marked as focus has a descendant that is also marked as focus, Ginkgo's policy is to unmark the container's focus. This gives developers a more intuitive experience when debugging specs. It is common to focus a container to just run a subset of specs, then identify the specific specs within the container to focus - this policy allows the developer to simply focus those specific specs and not need to go back and turn the focus off of the container:

As a common example, consider:

FDescribe("something to debug", function() {
	It("works", function() {...})
	It("works", function() {...})
	FIt("doesn't work", function() {...})
	It("works", function() {...})
})

here the developer's intent is to focus in on the `"doesn't work"` spec and not to run the adjacent specs in the focused `"something to debug"` container. The nested policy applied by this function enables this behavior.

func MakeIncrementingIndexCounter

func MakeIncrementingIndexCounter() func() (int, error)

func OrderSpecs

func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, GroupedSpecIndices)

func PartitionDecorations

func PartitionDecorations(args ...interface{}) ([]interface{}, []interface{})

func UniqueNodeID

func UniqueNodeID() uint

Types

type Done

type Done chan<- interface{} // Deprecated Done Channel for asynchronous testing

type Failer

type Failer struct {
	// contains filtered or unexported fields
}

func NewFailer

func NewFailer() *Failer

func (*Failer) AbortSuite

func (f *Failer) AbortSuite(message string, location types.CodeLocation)

func (*Failer) Drain

func (f *Failer) Drain() (types.SpecState, types.Failure)

func (*Failer) Fail

func (f *Failer) Fail(message string, location types.CodeLocation)

func (*Failer) GetFailure

func (f *Failer) GetFailure() types.Failure

func (*Failer) GetState

func (f *Failer) GetState() types.SpecState

func (*Failer) Panic

func (f *Failer) Panic(location types.CodeLocation, forwardedPanic interface{})

func (*Failer) Skip

func (f *Failer) Skip(message string, location types.CodeLocation)

type FlakeAttempts

type FlakeAttempts uint

type GroupedSpecIndices

type GroupedSpecIndices []SpecIndices

type Labels

type Labels []string

func UnionOfLabels

func UnionOfLabels(labels ...Labels) Labels

type Node

type Node struct {
	ID       uint
	NodeType types.NodeType

	Text         string
	Body         func()
	CodeLocation types.CodeLocation
	NestingLevel int

	SynchronizedBeforeSuiteProc1Body    func() []byte
	SynchronizedBeforeSuiteAllProcsBody func([]byte)

	SynchronizedAfterSuiteAllProcsBody func()
	SynchronizedAfterSuiteProc1Body    func()

	ReportEachBody       func(types.SpecReport)
	ReportAfterSuiteBody func(types.Report)

	MarkedFocus          bool
	MarkedPending        bool
	MarkedSerial         bool
	MarkedOrdered        bool
	MarkedOncePerOrdered bool
	FlakeAttempts        int
	Labels               Labels

	NodeIDWhereCleanupWasGenerated uint
}

func NewCleanupNode

func NewCleanupNode(fail func(string, types.CodeLocation), args ...interface{}) (Node, []error)

func NewNode

func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...interface{}) (Node, []error)

func NewReportAfterEachNode

func NewReportAfterEachNode(body func(types.SpecReport), codeLocation types.CodeLocation) (Node, []error)

func NewReportAfterSuiteNode

func NewReportAfterSuiteNode(text string, body func(types.Report), codeLocation types.CodeLocation) (Node, []error)

func NewReportBeforeEachNode

func NewReportBeforeEachNode(body func(types.SpecReport), codeLocation types.CodeLocation) (Node, []error)

func NewSynchronizedAfterSuiteNode

func NewSynchronizedAfterSuiteNode(allProcsBody func(), proc1Body func(), codeLocation types.CodeLocation) (Node, []error)

func NewSynchronizedBeforeSuiteNode

func NewSynchronizedBeforeSuiteNode(proc1Body func() []byte, allProcsBody func([]byte), codeLocation types.CodeLocation) (Node, []error)

func (Node) IsZero

func (n Node) IsZero() bool

type Nodes

type Nodes []Node

Nodes

func (Nodes) BestTextFor

func (n Nodes) BestTextFor(node Node) string

func (Nodes) CodeLocations

func (n Nodes) CodeLocations() []types.CodeLocation

func (Nodes) ContainsNodeID

func (n Nodes) ContainsNodeID(id uint) bool

func (Nodes) CopyAppend

func (n Nodes) CopyAppend(nodes ...Node) Nodes

func (Nodes) Filter

func (n Nodes) Filter(filter func(Node) bool) Nodes

func (Nodes) FirstNodeMarkedOrdered

func (n Nodes) FirstNodeMarkedOrdered() Node

func (Nodes) FirstNodeWithType

func (n Nodes) FirstNodeWithType(nodeTypes types.NodeType) Node

func (Nodes) FirstSatisfying

func (n Nodes) FirstSatisfying(filter func(Node) bool) Node

func (Nodes) FirstWithNestingLevel

func (n Nodes) FirstWithNestingLevel(level int) Node

func (Nodes) HasNodeMarkedFocus

func (n Nodes) HasNodeMarkedFocus() bool

func (Nodes) HasNodeMarkedPending

func (n Nodes) HasNodeMarkedPending() bool

func (Nodes) HasNodeMarkedSerial

func (n Nodes) HasNodeMarkedSerial() bool

func (Nodes) Labels

func (n Nodes) Labels() [][]string

func (Nodes) Reverse

func (n Nodes) Reverse() Nodes

func (Nodes) SortedByAscendingNestingLevel

func (n Nodes) SortedByAscendingNestingLevel() Nodes

func (Nodes) SortedByDescendingNestingLevel

func (n Nodes) SortedByDescendingNestingLevel() Nodes

func (Nodes) SplitAround

func (n Nodes) SplitAround(pivot Node) (Nodes, Nodes)

func (Nodes) Texts

func (n Nodes) Texts() []string

func (Nodes) UnionOfLabels

func (n Nodes) UnionOfLabels() []string

func (Nodes) WithType

func (n Nodes) WithType(nodeTypes types.NodeType) Nodes

func (Nodes) WithinNestingLevel

func (n Nodes) WithinNestingLevel(deepestNestingLevel int) Nodes

func (Nodes) WithoutNode

func (n Nodes) WithoutNode(nodeToExclude Node) Nodes

func (Nodes) WithoutType

func (n Nodes) WithoutType(nodeTypes types.NodeType) Nodes

type NoopOutputInterceptor

type NoopOutputInterceptor struct{}

func (NoopOutputInterceptor) PauseIntercepting

func (interceptor NoopOutputInterceptor) PauseIntercepting()

func (NoopOutputInterceptor) ResumeIntercepting

func (interceptor NoopOutputInterceptor) ResumeIntercepting()

func (NoopOutputInterceptor) Shutdown

func (interceptor NoopOutputInterceptor) Shutdown()

func (NoopOutputInterceptor) StartInterceptingOutput

func (interceptor NoopOutputInterceptor) StartInterceptingOutput()

func (NoopOutputInterceptor) StartInterceptingOutputAndForwardTo

func (interceptor NoopOutputInterceptor) StartInterceptingOutputAndForwardTo(io.Writer)

func (NoopOutputInterceptor) StopInterceptingAndReturnOutput

func (interceptor NoopOutputInterceptor) StopInterceptingAndReturnOutput() string

type Offset

type Offset uint

type OutputInterceptor

type OutputInterceptor interface {
	StartInterceptingOutput()
	StartInterceptingOutputAndForwardTo(io.Writer)
	StopInterceptingAndReturnOutput() string

	PauseIntercepting()
	ResumeIntercepting()

	Shutdown()
}

The OutputInterceptor is used by to intercept and capture all stdin and stderr output during a test run.

func NewOSGlobalReassigningOutputInterceptor

func NewOSGlobalReassigningOutputInterceptor() OutputInterceptor

This is used on windows builds but included here so it can be explicitly tested on unix systems too

func NewOutputInterceptor

func NewOutputInterceptor() OutputInterceptor

type Phase

type Phase uint
const (
	PhaseBuildTopLevel Phase = iota
	PhaseBuildTree
	PhaseRun
)

type ReportEntry

type ReportEntry = types.ReportEntry

func NewReportEntry

func NewReportEntry(name string, cl types.CodeLocation, args ...interface{}) (ReportEntry, error)

type Spec

type Spec struct {
	Nodes Nodes
	Skip  bool
}

func (Spec) FirstNodeWithType

func (s Spec) FirstNodeWithType(nodeTypes types.NodeType) Node

func (Spec) FlakeAttempts

func (s Spec) FlakeAttempts() int

func (Spec) SubjectID

func (s Spec) SubjectID() uint

func (Spec) Text

func (s Spec) Text() string

type SpecIndices

type SpecIndices []int

type Specs

type Specs []Spec

func ApplyFocusToSpecs

func ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suiteConfig types.SuiteConfig) (Specs, bool)

Ginkgo supports focussing specs using `FIt`, `FDescribe`, etc. - this is called "programmatic focus" It also supports focussing specs using regular expressions on the command line (`-focus=`, `-skip=`) that match against spec text and file filters (`-focus-files=`, `-skip-files=`) that match against code locations for nodes in specs.

If any of the CLI flags are provided they take precedence. The file filters run first followed by the regex filters.

This function sets the `Skip` property on specs by applying Ginkgo's focus policy: - If there are no CLI arguments and no programmatic focus, do nothing. - If there are no CLI arguments but a spec somewhere has programmatic focus, skip any specs that have no programmatic focus. - If there are CLI arguments parse them and skip any specs that either don't match the focus filters or do match the skip filters.

*Note:* specs with pending nodes are Skipped when created by NewSpec.

func GenerateSpecsFromTreeRoot

func GenerateSpecsFromTreeRoot(tree *TreeNode) Specs

func (Specs) AtIndices

func (s Specs) AtIndices(indices SpecIndices) Specs

func (Specs) CountWithoutSkip

func (s Specs) CountWithoutSkip() int

func (Specs) HasAnySpecsMarkedPending

func (s Specs) HasAnySpecsMarkedPending() bool

type Suite

type Suite struct {
	// contains filtered or unexported fields
}

func NewSuite

func NewSuite() *Suite

func (*Suite) AddReportEntry

func (suite *Suite) AddReportEntry(entry ReportEntry) error

func (*Suite) BuildTree

func (suite *Suite) BuildTree() error

func (*Suite) CurrentSpecReport

func (suite *Suite) CurrentSpecReport() types.SpecReport

Spec Running methods - used during PhaseRun

func (*Suite) InRunPhase

func (suite *Suite) InRunPhase() bool

func (*Suite) PushNode

func (suite *Suite) PushNode(node Node) error

func (*Suite) Run

func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, suiteConfig types.SuiteConfig) (bool, bool)

type TreeNode

type TreeNode struct {
	Node     Node
	Parent   *TreeNode
	Children TreeNodes
}

func (*TreeNode) AncestorNodeChain

func (tn *TreeNode) AncestorNodeChain() Nodes

func (*TreeNode) AppendChild

func (tn *TreeNode) AppendChild(child *TreeNode)

type TreeNodes

type TreeNodes []*TreeNode

func (TreeNodes) Nodes

func (tn TreeNodes) Nodes() Nodes

func (TreeNodes) WithID

func (tn TreeNodes) WithID(id uint) *TreeNode

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writer implements WriterInterface and GinkgoWriterInterface

func NewWriter

func NewWriter(outWriter io.Writer) *Writer

func (*Writer) Bytes

func (w *Writer) Bytes() []byte

func (*Writer) ClearTeeWriters

func (w *Writer) ClearTeeWriters()

func (*Writer) Print

func (w *Writer) Print(a ...interface{})

func (*Writer) Printf

func (w *Writer) Printf(format string, a ...interface{})

func (*Writer) Println

func (w *Writer) Println(a ...interface{})

func (*Writer) SetMode

func (w *Writer) SetMode(mode WriterMode)

func (*Writer) TeeTo

func (w *Writer) TeeTo(writer io.Writer)

GinkgoWriterInterface

func (*Writer) Truncate

func (w *Writer) Truncate()

func (*Writer) Write

func (w *Writer) Write(b []byte) (n int, err error)

type WriterInterface

type WriterInterface interface {
	io.Writer

	Truncate()
	Bytes() []byte
}

type WriterMode

type WriterMode uint
const (
	WriterModeStreamAndBuffer WriterMode = iota
	WriterModeBufferOnly
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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