Skip to content

Commit

Permalink
sanity: support embedding tests multiple time in Ginkgo, II
Browse files Browse the repository at this point in the history
This reverts commit ddf8b3f. It was
meant to enable the call sequence DescribeSanity,
RegisterTestsInGinkgo, DescribeSanity, RegisterTestsInGinkgo, but that
call sequence is invalid: DescribeSanity must be called during the
init phase, then RegisterTestsInGinkgo may be called multiple times
with different configs.

That usage got broken by the commit above because the second
RegisterTestsInGinkgo then didn't add any of the tests defined by the
sanity package.

Users who want to add their own sanity tests can do it like this:

Describe( ... func() {
    config := &sanity.TestConfig{...}

    Describe(..., func() {
        sc := NewTestContext(config)
        BeforeEach(func() {
            sc.Setup()
        })
        AfterEach(func() {
            sc.Teardown()
        })

        Describe(..., func() {
             ...
        })
    })

    sanity.GinkgoTest(config)
})

NewTestContext must be made public for this to work. Otherwise
TestContext has be initialized manually, which isn't as nice.
  • Loading branch information
pohly committed Mar 23, 2020
1 parent ddf8b3f commit 4c2bce0
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 10 deletions.
8 changes: 2 additions & 6 deletions pkg/sanity/sanity.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,10 @@ func NewTestConfig() TestConfig {
}
}

// newContext sets up sanity testing with a config supplied by the
// NewContext sets up sanity testing with a config supplied by the
// user of the sanity package. Ownership of that config is shared
// between the sanity package and the caller.
func newTestContext(config *TestConfig) *TestContext {
func NewTestContext(config *TestConfig) *TestContext {
return &TestContext{
Config: config,
}
Expand Down Expand Up @@ -231,10 +231,6 @@ func Test(t GinkgoTestingT, config TestConfig) {
// GinkgoTest for use when the tests run. Therefore its content can
// still be modified in a BeforeEach. The sanity package itself treats
// it as read-only.
//
// Only tests defined with DescribeSanity after the last invocation with
// GinkgoTest (if there has be one) will be added, i.e. each test only
// gets added at most once.
func GinkgoTest(config *TestConfig) *TestContext {
sc := newTestContext(config)
registerTestsInGinkgo(sc)
Expand Down
4 changes: 0 additions & 4 deletions pkg/sanity/tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,4 @@ func registerTestsInGinkgo(sc *TestContext) {
})
})
}
// Don't register tests more than once! More tests might
// be added later in a different context, followed by
// another registerTestsInGinkgo call.
tests = nil
}

0 comments on commit 4c2bce0

Please sign in to comment.