Allow customization of all fixture state at once

Adds FixtureCustomPreparer.

Bug: 181070625
Test: m nothing
Change-Id: I310e16661a0f032f778481d9b69da2e0e9a084cf
This commit is contained in:
Paul Duffin 2021-03-09 03:15:28 +00:00
parent 0387862185
commit ae542a58af
1 changed files with 30 additions and 0 deletions

View File

@ -252,6 +252,15 @@ func (fs MockFS) AddToFixture() FixturePreparer {
return FixtureMergeMockFs(fs)
}
// FixtureCustomPreparer allows for the modification of any aspect of the fixture.
//
// This should only be used if one of the other more specific preparers are not suitable.
func FixtureCustomPreparer(mutator func(fixture Fixture)) FixturePreparer {
return newSimpleFixturePreparer(func(f *fixture) {
mutator(f)
})
}
// Modify the config
func FixtureModifyConfig(mutator func(config Config)) FixturePreparer {
return newSimpleFixturePreparer(func(f *fixture) {
@ -564,6 +573,15 @@ func FixtureCustomErrorHandler(function func(t *testing.T, result *TestResult))
// Fixture defines the test environment.
type Fixture interface {
// Config returns the fixture's configuration.
Config() Config
// Context returns the fixture's test context.
Context() *TestContext
// MockFS returns the fixture's mock filesystem.
MockFS() MockFS
// Run the test, checking any errors reported and returning a TestResult instance.
RunTest() *TestResult
}
@ -702,6 +720,18 @@ type fixture struct {
errorHandler FixtureErrorHandler
}
func (f *fixture) Config() Config {
return f.config
}
func (f *fixture) Context() *TestContext {
return f.ctx
}
func (f *fixture) MockFS() MockFS {
return f.mockFS
}
func (f *fixture) RunTest() *TestResult {
f.t.Helper()