|  | package integration_test | 
|  |  | 
|  | import ( | 
|  | "os" | 
|  | "os/exec" | 
|  |  | 
|  | . "github.com/onsi/ginkgo" | 
|  | . "github.com/onsi/gomega" | 
|  | "github.com/onsi/gomega/gexec" | 
|  | ) | 
|  |  | 
|  | var _ = Describe("Coverage Specs", func() { | 
|  | AfterEach(func() { | 
|  | os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") | 
|  | }) | 
|  |  | 
|  | It("runs coverage analysis in series and in parallel", func() { | 
|  | session := startGinkgo("./_fixtures/coverage_fixture", "-cover") | 
|  | Eventually(session).Should(gexec.Exit(0)) | 
|  | output := session.Out.Contents() | 
|  | Ω(output).Should(ContainSubstring("coverage: 80.0% of statements")) | 
|  |  | 
|  | serialCoverProfileOutput, err := exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() | 
|  | Ω(err).ShouldNot(HaveOccurred()) | 
|  |  | 
|  | os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") | 
|  |  | 
|  | Eventually(startGinkgo("./_fixtures/coverage_fixture", "-cover", "-nodes=4")).Should(gexec.Exit(0)) | 
|  |  | 
|  | parallelCoverProfileOutput, err := exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() | 
|  | Ω(err).ShouldNot(HaveOccurred()) | 
|  |  | 
|  | Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput)) | 
|  |  | 
|  | By("handling external packages") | 
|  | session = startGinkgo("./_fixtures/coverage_fixture", "-coverpkg=github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture,github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture") | 
|  | Eventually(session).Should(gexec.Exit(0)) | 
|  | output = session.Out.Contents() | 
|  | Ω(output).Should(ContainSubstring("coverage: 71.4% of statements in github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture, github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture")) | 
|  |  | 
|  | serialCoverProfileOutput, err = exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() | 
|  | Ω(err).ShouldNot(HaveOccurred()) | 
|  |  | 
|  | os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") | 
|  |  | 
|  | Eventually(startGinkgo("./_fixtures/coverage_fixture", "-coverpkg=github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture,github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture", "-nodes=4")).Should(gexec.Exit(0)) | 
|  |  | 
|  | parallelCoverProfileOutput, err = exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() | 
|  | Ω(err).ShouldNot(HaveOccurred()) | 
|  |  | 
|  | Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput)) | 
|  | }) | 
|  | }) |