560305f601
- uses newer version of go-ethereum required for go1.11
148 lines
6.5 KiB
Go
148 lines
6.5 KiB
Go
package integration_test
|
|
|
|
import (
|
|
"os/exec"
|
|
|
|
"fmt"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
"github.com/onsi/gomega/gbytes"
|
|
"github.com/onsi/gomega/gexec"
|
|
)
|
|
|
|
var _ = Describe("Coverage Specs", func() {
|
|
Context("when it runs coverage analysis in series and in parallel", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/coverage_fixture/coverage_fixture.coverprofile")
|
|
})
|
|
It("works", func() {
|
|
session := startGinkgo("./_fixtures/coverage_fixture", "-cover")
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
Ω(session.Out).Should(gbytes.Say(("coverage: 80.0% of statements")))
|
|
|
|
coverFile := "./_fixtures/coverage_fixture/coverage_fixture.coverprofile"
|
|
serialCoverProfileOutput, err := exec.Command("go", "tool", "cover", fmt.Sprintf("-func=%s", coverFile)).CombinedOutput()
|
|
Ω(err).ShouldNot(HaveOccurred())
|
|
|
|
removeSuccessfully(coverFile)
|
|
|
|
Eventually(startGinkgo("./_fixtures/coverage_fixture", "-cover", "-nodes=4")).Should(gexec.Exit(0))
|
|
|
|
parallelCoverProfileOutput, err := exec.Command("go", "tool", "cover", fmt.Sprintf("-func=%s", coverFile)).CombinedOutput()
|
|
Ω(err).ShouldNot(HaveOccurred())
|
|
|
|
Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput))
|
|
|
|
By("handling external packages", func() {
|
|
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))
|
|
|
|
Ω(session.Out).Should(gbytes.Say("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", fmt.Sprintf("-func=%s", coverFile)).CombinedOutput()
|
|
Ω(err).ShouldNot(HaveOccurred())
|
|
|
|
removeSuccessfully("./_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", fmt.Sprintf("-func=%s", coverFile)).CombinedOutput()
|
|
Ω(err).ShouldNot(HaveOccurred())
|
|
|
|
Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput))
|
|
})
|
|
})
|
|
})
|
|
|
|
Context("when a custom profile name is specified", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/coverage_fixture/coverage.txt")
|
|
})
|
|
|
|
It("generates cover profiles with the specified name", func() {
|
|
session := startGinkgo("./_fixtures/coverage_fixture", "-cover", "-coverprofile=coverage.txt")
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
Ω("./_fixtures/coverage_fixture/coverage.txt").Should(BeARegularFile())
|
|
})
|
|
})
|
|
|
|
Context("when run in recursive mode", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/coverage-recursive.txt")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/first_package/coverage-recursive.txt")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/second_package/coverage-recursive.txt")
|
|
})
|
|
|
|
It("generates a coverage file per package", func() {
|
|
session := startGinkgo("./_fixtures/combined_coverage_fixture", "-r", "-cover", "-coverprofile=coverage-recursive.txt")
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
Ω("./_fixtures/combined_coverage_fixture/first_package/coverage-recursive.txt").Should(BeARegularFile())
|
|
Ω("./_fixtures/combined_coverage_fixture/second_package/coverage-recursive.txt").Should(BeARegularFile())
|
|
})
|
|
})
|
|
|
|
Context("when run in parallel mode", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/coverage_fixture/coverage-parallel.txt")
|
|
})
|
|
|
|
It("works", func() {
|
|
session := startGinkgo("./_fixtures/coverage_fixture", "-p", "-cover", "-coverprofile=coverage-parallel.txt")
|
|
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
Ω("./_fixtures/coverage_fixture/coverage-parallel.txt").Should(BeARegularFile())
|
|
})
|
|
})
|
|
|
|
Context("when run in recursive mode specifying a coverprofile", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/coverprofile-recursive.txt")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/first_package/coverprofile-recursive.txt")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/second_package/coverprofile-recursive.txt")
|
|
})
|
|
|
|
It("combines the coverages", func() {
|
|
session := startGinkgo("./_fixtures/combined_coverage_fixture", "-outputdir=./", "-r", "-cover", "-coverprofile=coverprofile-recursive.txt")
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
By("generating a combined coverage file", func() {
|
|
Ω("./_fixtures/combined_coverage_fixture/coverprofile-recursive.txt").Should(BeARegularFile())
|
|
})
|
|
|
|
By("also generating the single package coverage files", func() {
|
|
Ω("./_fixtures/combined_coverage_fixture/first_package/coverprofile-recursive.txt").Should(BeARegularFile())
|
|
Ω("./_fixtures/combined_coverage_fixture/second_package/coverprofile-recursive.txt").Should(BeARegularFile())
|
|
})
|
|
})
|
|
})
|
|
|
|
It("Fails with an error if output dir and coverprofile were set, but the output dir did not exist", func() {
|
|
session := startGinkgo("./_fixtures/combined_coverage_fixture", "-outputdir=./all/profiles/here", "-r", "-cover", "-coverprofile=coverage.txt")
|
|
|
|
Eventually(session).Should(gexec.Exit(1))
|
|
output := session.Out.Contents()
|
|
Ω(string(output)).Should(ContainSubstring("Unable to create combined profile, outputdir does not exist: ./all/profiles/here"))
|
|
})
|
|
|
|
Context("when only output dir was set", func() {
|
|
AfterEach(func() {
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/first_package.coverprofile")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/first_package/coverage.txt")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/second_package.coverprofile")
|
|
removeSuccessfully("./_fixtures/combined_coverage_fixture/second_package/coverage.txt")
|
|
})
|
|
It("moves coverages", func() {
|
|
session := startGinkgo("./_fixtures/combined_coverage_fixture", "-outputdir=./", "-r", "-cover")
|
|
Eventually(session).Should(gexec.Exit(0))
|
|
|
|
Ω("./_fixtures/combined_coverage_fixture/first_package.coverprofile").Should(BeARegularFile())
|
|
Ω("./_fixtures/combined_coverage_fixture/second_package.coverprofile").Should(BeARegularFile())
|
|
})
|
|
})
|
|
})
|