From ae542a58af6b8e71fa340c68ec7786744b00386a Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 9 Mar 2021 03:15:28 +0000 Subject: [PATCH] Allow customization of all fixture state at once Adds FixtureCustomPreparer. Bug: 181070625 Test: m nothing Change-Id: I310e16661a0f032f778481d9b69da2e0e9a084cf --- android/fixture.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/android/fixture.go b/android/fixture.go index 4e445c0b0..f213d66d4 100644 --- a/android/fixture.go +++ b/android/fixture.go @@ -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()