| package leafnodes_test |
| |
| import ( |
| . "github.com/onsi/ginkgo" |
| . "github.com/onsi/gomega" |
| |
| . "github.com/onsi/ginkgo/internal/leafnodes" |
| |
| "time" |
| |
| "github.com/onsi/ginkgo/internal/codelocation" |
| Failer "github.com/onsi/ginkgo/internal/failer" |
| "github.com/onsi/ginkgo/types" |
| ) |
| |
| var _ = Describe("SuiteNodes", func() { |
| Describe("BeforeSuite nodes", func() { |
| var befSuite SuiteNode |
| var failer *Failer.Failer |
| var codeLocation types.CodeLocation |
| var innerCodeLocation types.CodeLocation |
| var outcome bool |
| |
| BeforeEach(func() { |
| failer = Failer.New() |
| codeLocation = codelocation.New(0) |
| innerCodeLocation = codelocation.New(0) |
| }) |
| |
| Context("when the body passes", func() { |
| BeforeEach(func() { |
| befSuite = NewBeforeSuiteNode(func() { |
| time.Sleep(10 * time.Millisecond) |
| }, codeLocation, 0, failer) |
| outcome = befSuite.Run(0, 0, "") |
| }) |
| |
| It("should return true when run and report as passed", func() { |
| Ω(outcome).Should(BeTrue()) |
| Ω(befSuite.Passed()).Should(BeTrue()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := befSuite.Summary() |
| Ω(summary.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) |
| Ω(summary.CodeLocation).Should(Equal(codeLocation)) |
| Ω(summary.State).Should(Equal(types.SpecStatePassed)) |
| Ω(summary.RunTime).Should(BeNumerically(">=", 10*time.Millisecond)) |
| Ω(summary.Failure).Should(BeZero()) |
| }) |
| }) |
| |
| Context("when the body fails", func() { |
| BeforeEach(func() { |
| befSuite = NewBeforeSuiteNode(func() { |
| failer.Fail("oops", innerCodeLocation) |
| }, codeLocation, 0, failer) |
| outcome = befSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(befSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := befSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStateFailed)) |
| Ω(summary.Failure.Message).Should(Equal("oops")) |
| Ω(summary.Failure.Location).Should(Equal(innerCodeLocation)) |
| Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| |
| Context("when the body times out", func() { |
| BeforeEach(func() { |
| befSuite = NewBeforeSuiteNode(func(done Done) { |
| }, codeLocation, time.Millisecond, failer) |
| outcome = befSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(befSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := befSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStateTimedOut)) |
| Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| |
| Context("when the body panics", func() { |
| BeforeEach(func() { |
| befSuite = NewBeforeSuiteNode(func() { |
| panic("bam") |
| }, codeLocation, 0, failer) |
| outcome = befSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(befSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := befSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStatePanicked)) |
| Ω(summary.Failure.ForwardedPanic).Should(Equal("bam")) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| }) |
| |
| Describe("AfterSuite nodes", func() { |
| var aftSuite SuiteNode |
| var failer *Failer.Failer |
| var codeLocation types.CodeLocation |
| var innerCodeLocation types.CodeLocation |
| var outcome bool |
| |
| BeforeEach(func() { |
| failer = Failer.New() |
| codeLocation = codelocation.New(0) |
| innerCodeLocation = codelocation.New(0) |
| }) |
| |
| Context("when the body passes", func() { |
| BeforeEach(func() { |
| aftSuite = NewAfterSuiteNode(func() { |
| time.Sleep(10 * time.Millisecond) |
| }, codeLocation, 0, failer) |
| outcome = aftSuite.Run(0, 0, "") |
| }) |
| |
| It("should return true when run and report as passed", func() { |
| Ω(outcome).Should(BeTrue()) |
| Ω(aftSuite.Passed()).Should(BeTrue()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := aftSuite.Summary() |
| Ω(summary.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) |
| Ω(summary.CodeLocation).Should(Equal(codeLocation)) |
| Ω(summary.State).Should(Equal(types.SpecStatePassed)) |
| Ω(summary.RunTime).Should(BeNumerically(">=", 10*time.Millisecond)) |
| Ω(summary.Failure).Should(BeZero()) |
| }) |
| }) |
| |
| Context("when the body fails", func() { |
| BeforeEach(func() { |
| aftSuite = NewAfterSuiteNode(func() { |
| failer.Fail("oops", innerCodeLocation) |
| }, codeLocation, 0, failer) |
| outcome = aftSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(aftSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := aftSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStateFailed)) |
| Ω(summary.Failure.Message).Should(Equal("oops")) |
| Ω(summary.Failure.Location).Should(Equal(innerCodeLocation)) |
| Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| |
| Context("when the body times out", func() { |
| BeforeEach(func() { |
| aftSuite = NewAfterSuiteNode(func(done Done) { |
| }, codeLocation, time.Millisecond, failer) |
| outcome = aftSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(aftSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := aftSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStateTimedOut)) |
| Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| |
| Context("when the body panics", func() { |
| BeforeEach(func() { |
| aftSuite = NewAfterSuiteNode(func() { |
| panic("bam") |
| }, codeLocation, 0, failer) |
| outcome = aftSuite.Run(0, 0, "") |
| }) |
| |
| It("should return false when run and report as failed", func() { |
| Ω(outcome).Should(BeFalse()) |
| Ω(aftSuite.Passed()).Should(BeFalse()) |
| }) |
| |
| It("should have the correct summary", func() { |
| summary := aftSuite.Summary() |
| Ω(summary.State).Should(Equal(types.SpecStatePanicked)) |
| Ω(summary.Failure.ForwardedPanic).Should(Equal("bam")) |
| Ω(summary.Failure.ComponentIndex).Should(Equal(0)) |
| Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) |
| Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) |
| }) |
| }) |
| }) |
| }) |