Prevent invalid paths being added to mock file system

Bug: 182885307
Test: m nothing
Change-Id: Ie9f60fd02e2a2bc44811dbcadf0eada4e52c9749
This commit is contained in:
Paul Duffin
2021-03-16 14:08:00 +00:00
parent 9f4b3bbb7c
commit 80f4cea1ad
2 changed files with 67 additions and 1 deletions

View File

@@ -14,7 +14,9 @@
package android
import "testing"
import (
"testing"
)
// Make sure that FixturePreparer instances are only called once per fixture and in the order in
// which they were added.
@@ -47,3 +49,38 @@ func TestFixtureDedup(t *testing.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))
})
})
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))
})
})
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))
})
})
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{
"out/Android.bp": nil,
}))
})
})
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) {
fs["out/Android.bp"] = nil
}))
})
})
}