Merge "Add OptionalFixturePreparer" am: abc6ec9d16 am: f59543d75b

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1640330

Change-Id: I95e509911eb74db6b332dc3c96791ff4555efb0e
This commit is contained in:
Paul Duffin 2021-03-18 09:14:10 +00:00 committed by Automerger Merge Worker
commit 1f24390277
2 changed files with 16 additions and 2 deletions

View File

@ -381,6 +381,19 @@ func GroupFixturePreparers(preparers ...FixturePreparer) FixturePreparer {
return &compositeFixturePreparer{dedupAndFlattenPreparers(nil, preparers)} return &compositeFixturePreparer{dedupAndFlattenPreparers(nil, preparers)}
} }
// NullFixturePreparer is a preparer that does nothing.
var NullFixturePreparer = GroupFixturePreparers()
// OptionalFixturePreparer will return the supplied preparer if it is non-nil, otherwise it will
// return the NullFixturePreparer
func OptionalFixturePreparer(preparer FixturePreparer) FixturePreparer {
if preparer == nil {
return NullFixturePreparer
} else {
return preparer
}
}
type simpleFixturePreparerVisitor func(preparer *simpleFixturePreparer) type simpleFixturePreparerVisitor func(preparer *simpleFixturePreparer)
// FixturePreparer is an opaque interface that can change a fixture. // FixturePreparer is an opaque interface that can change a fixture.

View File

@ -30,9 +30,10 @@ func TestFixtureDedup(t *testing.T) {
preparer1 := appendToList("preparer1") preparer1 := appendToList("preparer1")
preparer2 := appendToList("preparer2") preparer2 := appendToList("preparer2")
preparer3 := appendToList("preparer3") preparer3 := appendToList("preparer3")
preparer4 := appendToList("preparer4") preparer4 := OptionalFixturePreparer(appendToList("preparer4"))
nilPreparer := OptionalFixturePreparer(nil)
preparer1Then2 := GroupFixturePreparers(preparer1, preparer2) preparer1Then2 := GroupFixturePreparers(preparer1, preparer2, nilPreparer)
preparer2Then1 := GroupFixturePreparers(preparer2, preparer1) preparer2Then1 := GroupFixturePreparers(preparer2, preparer1)