Loading android/fixture.go +9 −11 Original line number Diff line number Diff line Loading @@ -455,7 +455,7 @@ type FixturePreparer interface { Extend(preparers ...FixturePreparer) FixturePreparer // Create a Fixture. Fixture(t *testing.T, preparers ...FixturePreparer) Fixture Fixture(t *testing.T) Fixture // ExtendWithErrorHandler creates a new FixturePreparer that will use the supplied error handler // to check the errors (may be 0) reported by the test. Loading Loading @@ -706,13 +706,11 @@ type TestResult struct { NinjaDeps []string } func createFixture(t *testing.T, buildDir string, base []*simpleFixturePreparer, extra []FixturePreparer) Fixture { all := dedupAndFlattenPreparers(base, extra) func createFixture(t *testing.T, buildDir string, preparers []*simpleFixturePreparer) Fixture { config := TestConfig(buildDir, nil, "", nil) ctx := NewTestContext(config) fixture := &fixture{ preparers: all, preparers: preparers, t: t, config: config, ctx: ctx, Loading @@ -721,7 +719,7 @@ func createFixture(t *testing.T, buildDir string, base []*simpleFixturePreparer, errorHandler: FixtureExpectsNoErrors, } for _, preparer := range all { for _, preparer := range preparers { preparer.function(fixture) } Loading @@ -741,8 +739,8 @@ func (b *baseFixturePreparer) Extend(preparers ...FixturePreparer) FixturePrepar return newFixturePreparer(all) } func (b *baseFixturePreparer) Fixture(t *testing.T, preparers ...FixturePreparer) Fixture { return createFixture(t, t.TempDir(), b.self.list(), preparers) func (b *baseFixturePreparer) Fixture(t *testing.T) Fixture { return createFixture(t, t.TempDir(), b.self.list()) } func (b *baseFixturePreparer) ExtendWithErrorHandler(errorHandler FixtureErrorHandler) FixturePreparer { Loading Loading @@ -812,16 +810,16 @@ func (f *fixtureFactory) Extend(preparers ...FixturePreparer) FixturePreparer { return extendedFactory } func (f *fixtureFactory) Fixture(t *testing.T, preparers ...FixturePreparer) Fixture { func (f *fixtureFactory) Fixture(t *testing.T) Fixture { // If there is no buildDirSupplier then just use the default implementation. if f.buildDirSupplier == nil { return f.baseFixturePreparer.Fixture(t, preparers...) return f.baseFixturePreparer.Fixture(t) } // Retrieve the buildDir from the supplier. buildDir := *f.buildDirSupplier return createFixture(t, buildDir, f.preparers, preparers) return createFixture(t, buildDir, f.preparers) } type fixture struct { Loading android/fixture_test.go +8 −11 Original line number Diff line number Diff line Loading @@ -43,43 +43,40 @@ func TestFixtureDedup(t *testing.T) { extension := group.Extend(preparer4, preparer2) extension.Fixture(t, preparer1, preparer2, preparer2Then1, preparer3) GroupFixturePreparers(extension, preparer1, preparer2, preparer2Then1, preparer3).Fixture(t) AssertDeepEquals(t, "preparers called in wrong order", []string{"preparer1", "preparer2", "preparer4", "preparer3"}, list) } func TestFixtureValidateMockFS(t *testing.T) { buildDir := "<unused>" factory := NewFixtureFactory(&buildDir) t.Run("absolute path", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", "Path is outside directory: /abs/path/Android.bp", func() { factory.Fixture(t, FixtureAddFile("/abs/path/Android.bp", nil)) FixtureAddFile("/abs/path/Android.bp", nil).Fixture(t) }) }) t.Run("not canonical", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `path "path/with/../in/it/Android.bp" is not a canonical path, use "path/in/it/Android.bp" instead`, func() { factory.Fixture(t, FixtureAddFile("path/with/../in/it/Android.bp", nil)) FixtureAddFile("path/with/../in/it/Android.bp", nil).Fixture(t) }) }) t.Run("FixtureAddFile", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureAddFile("out/Android.bp", nil)) FixtureAddFile("out/Android.bp", nil).Fixture(t) }) }) t.Run("FixtureMergeMockFs", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureMergeMockFs(MockFS{ FixtureMergeMockFs(MockFS{ "out/Android.bp": nil, })) }).Fixture(t) }) }) t.Run("FixtureModifyMockFS", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureModifyMockFS(func(fs MockFS) { FixtureModifyMockFS(func(fs MockFS) { fs["out/Android.bp"] = nil })) }).Fixture(t) }) }) } Loading
android/fixture.go +9 −11 Original line number Diff line number Diff line Loading @@ -455,7 +455,7 @@ type FixturePreparer interface { Extend(preparers ...FixturePreparer) FixturePreparer // Create a Fixture. Fixture(t *testing.T, preparers ...FixturePreparer) Fixture Fixture(t *testing.T) Fixture // ExtendWithErrorHandler creates a new FixturePreparer that will use the supplied error handler // to check the errors (may be 0) reported by the test. Loading Loading @@ -706,13 +706,11 @@ type TestResult struct { NinjaDeps []string } func createFixture(t *testing.T, buildDir string, base []*simpleFixturePreparer, extra []FixturePreparer) Fixture { all := dedupAndFlattenPreparers(base, extra) func createFixture(t *testing.T, buildDir string, preparers []*simpleFixturePreparer) Fixture { config := TestConfig(buildDir, nil, "", nil) ctx := NewTestContext(config) fixture := &fixture{ preparers: all, preparers: preparers, t: t, config: config, ctx: ctx, Loading @@ -721,7 +719,7 @@ func createFixture(t *testing.T, buildDir string, base []*simpleFixturePreparer, errorHandler: FixtureExpectsNoErrors, } for _, preparer := range all { for _, preparer := range preparers { preparer.function(fixture) } Loading @@ -741,8 +739,8 @@ func (b *baseFixturePreparer) Extend(preparers ...FixturePreparer) FixturePrepar return newFixturePreparer(all) } func (b *baseFixturePreparer) Fixture(t *testing.T, preparers ...FixturePreparer) Fixture { return createFixture(t, t.TempDir(), b.self.list(), preparers) func (b *baseFixturePreparer) Fixture(t *testing.T) Fixture { return createFixture(t, t.TempDir(), b.self.list()) } func (b *baseFixturePreparer) ExtendWithErrorHandler(errorHandler FixtureErrorHandler) FixturePreparer { Loading Loading @@ -812,16 +810,16 @@ func (f *fixtureFactory) Extend(preparers ...FixturePreparer) FixturePreparer { return extendedFactory } func (f *fixtureFactory) Fixture(t *testing.T, preparers ...FixturePreparer) Fixture { func (f *fixtureFactory) Fixture(t *testing.T) Fixture { // If there is no buildDirSupplier then just use the default implementation. if f.buildDirSupplier == nil { return f.baseFixturePreparer.Fixture(t, preparers...) return f.baseFixturePreparer.Fixture(t) } // Retrieve the buildDir from the supplier. buildDir := *f.buildDirSupplier return createFixture(t, buildDir, f.preparers, preparers) return createFixture(t, buildDir, f.preparers) } type fixture struct { Loading
android/fixture_test.go +8 −11 Original line number Diff line number Diff line Loading @@ -43,43 +43,40 @@ func TestFixtureDedup(t *testing.T) { extension := group.Extend(preparer4, preparer2) extension.Fixture(t, preparer1, preparer2, preparer2Then1, preparer3) GroupFixturePreparers(extension, preparer1, preparer2, preparer2Then1, preparer3).Fixture(t) AssertDeepEquals(t, "preparers called in wrong order", []string{"preparer1", "preparer2", "preparer4", "preparer3"}, list) } func TestFixtureValidateMockFS(t *testing.T) { buildDir := "<unused>" factory := NewFixtureFactory(&buildDir) t.Run("absolute path", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", "Path is outside directory: /abs/path/Android.bp", func() { factory.Fixture(t, FixtureAddFile("/abs/path/Android.bp", nil)) FixtureAddFile("/abs/path/Android.bp", nil).Fixture(t) }) }) t.Run("not canonical", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `path "path/with/../in/it/Android.bp" is not a canonical path, use "path/in/it/Android.bp" instead`, func() { factory.Fixture(t, FixtureAddFile("path/with/../in/it/Android.bp", nil)) FixtureAddFile("path/with/../in/it/Android.bp", nil).Fixture(t) }) }) t.Run("FixtureAddFile", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureAddFile("out/Android.bp", nil)) FixtureAddFile("out/Android.bp", nil).Fixture(t) }) }) t.Run("FixtureMergeMockFs", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureMergeMockFs(MockFS{ FixtureMergeMockFs(MockFS{ "out/Android.bp": nil, })) }).Fixture(t) }) }) t.Run("FixtureModifyMockFS", func(t *testing.T) { AssertPanicMessageContains(t, "source path validation failed", `cannot add output path "out/Android.bp" to the mock file system`, func() { factory.Fixture(t, FixtureModifyMockFS(func(fs MockFS) { FixtureModifyMockFS(func(fs MockFS) { fs["out/Android.bp"] = nil })) }).Fixture(t) }) }) }