func New(failer *failer.Failer) *Suite { topLevelContainer := containernode.New("[Top Level]", types.FlagTypeNone, types.CodeLocation{}) return &Suite{ topLevelContainer: topLevelContainer, currentContainer: topLevelContainer, failer: failer, containerIndex: 1, } }
func (suite *Suite) PushContainerNode(text string, body func(), flag types.FlagType, codeLocation types.CodeLocation) { container := containernode.New(text, flag, codeLocation) suite.currentContainer.PushContainerNode(container) previousContainer := suite.currentContainer suite.currentContainer = container suite.containerIndex++ body() suite.containerIndex-- suite.currentContainer = previousContainer }
} newBef := func(text string, fail bool) leafnodes.BasicNode { return leafnodes.NewBeforeEachNode(newBody(text, fail), codeLocation, 0, failer, 0) } newAft := func(text string, fail bool) leafnodes.BasicNode { return leafnodes.NewAfterEachNode(newBody(text, fail), codeLocation, 0, failer, 0) } newJusBef := func(text string, fail bool) leafnodes.BasicNode { return leafnodes.NewJustBeforeEachNode(newBody(text, fail), codeLocation, 0, failer, 0) } newContainer := func(text string, flag types.FlagType, setupNodes ...leafnodes.BasicNode) *containernode.ContainerNode { c := containernode.New(text, flag, codeLocation) for _, node := range setupNodes { c.PushSetupNode(node) } return c } containers := func(containers ...*containernode.ContainerNode) []*containernode.ContainerNode { return containers } BeforeEach(func() { buffer = gbytes.NewBuffer() failer = Failer.New() codeLocation = codelocation.New(0) nodesThatRan = []string{}
Ω(skippedTexts(specs)).Should(Equal([]string{"A2", "B1", "B2"})) Ω(pendingTexts(specs)).Should(BeEmpty()) }) It("should not report as having programmatic specs", func() { Ω(specs.HasProgrammaticFocus()).Should(BeFalse()) }) }) }) Describe("With a focused spec within a pending context and a pending spec within a focused context", func() { BeforeEach(func() { pendingInFocused := New( leafnodes.NewItNode("PendingInFocused", func() {}, pendingFlag, codelocation.New(0), 0, nil, 0), []*containernode.ContainerNode{ containernode.New("", focusedFlag, codelocation.New(0)), }, false) focusedInPending := New( leafnodes.NewItNode("FocusedInPending", func() {}, focusedFlag, codelocation.New(0), 0, nil, 0), []*containernode.ContainerNode{ containernode.New("", pendingFlag, codelocation.New(0)), }, false) specs = NewSpecs([]*Spec{ newSpec("A", noneFlag), newSpec("B", noneFlag), pendingInFocused, focusedInPending, }) specs.ApplyFocus("", "", "")