Merge "Convert android/paths_test.go to test fixtures"

This commit is contained in:
Paul Duffin 2021-03-18 08:58:54 +00:00 committed by Gerrit Code Review
commit 0700f77806
1 changed files with 36 additions and 74 deletions

View File

@ -21,8 +21,6 @@ import (
"strconv"
"strings"
"testing"
"github.com/google/blueprint/proptools"
)
type strsTestCase struct {
@ -977,7 +975,7 @@ type pathForModuleSrcTestCase struct {
rel string
}
func testPathForModuleSrc(t *testing.T, buildDir string, tests []pathForModuleSrcTestCase) {
func testPathForModuleSrc(t *testing.T, tests []pathForModuleSrcTestCase) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
fgBp := `
@ -995,7 +993,7 @@ func testPathForModuleSrc(t *testing.T, buildDir string, tests []pathForModuleSr
}
`
mockFS := map[string][]byte{
mockFS := MockFS{
"fg/Android.bp": []byte(fgBp),
"foo/Android.bp": []byte(test.bp),
"ofp/Android.bp": []byte(ofpBp),
@ -1007,37 +1005,21 @@ func testPathForModuleSrc(t *testing.T, buildDir string, tests []pathForModuleSr
"foo/src_special/$": nil,
}
config := TestConfig(buildDir, nil, "", mockFS)
result := emptyTestFixtureFactory.RunTest(t,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterModuleType("test", pathForModuleSrcTestModuleFactory)
ctx.RegisterModuleType("output_file_provider", pathForModuleSrcOutputFileProviderModuleFactory)
ctx.RegisterModuleType("filegroup", FileGroupFactory)
}),
mockFS.AddToFixture(),
)
ctx := NewTestContext(config)
m := result.ModuleForTests("foo", "").Module().(*pathForModuleSrcTestModule)
ctx.RegisterModuleType("test", pathForModuleSrcTestModuleFactory)
ctx.RegisterModuleType("output_file_provider", pathForModuleSrcOutputFileProviderModuleFactory)
ctx.RegisterModuleType("filegroup", FileGroupFactory)
ctx.Register()
_, errs := ctx.ParseFileList(".", []string{"fg/Android.bp", "foo/Android.bp", "ofp/Android.bp"})
FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
FailIfErrored(t, errs)
m := ctx.ModuleForTests("foo", "").Module().(*pathForModuleSrcTestModule)
if g, w := m.srcs, test.srcs; !reflect.DeepEqual(g, w) {
t.Errorf("want srcs %q, got %q", w, g)
}
if g, w := m.rels, test.rels; !reflect.DeepEqual(g, w) {
t.Errorf("want rels %q, got %q", w, g)
}
if g, w := m.src, test.src; g != w {
t.Errorf("want src %q, got %q", w, g)
}
if g, w := m.rel, test.rel; g != w {
t.Errorf("want rel %q, got %q", w, g)
}
AssertStringPathsRelativeToTopEquals(t, "srcs", result.Config, test.srcs, m.srcs)
AssertStringPathsRelativeToTopEquals(t, "rels", result.Config, test.rels, m.rels)
AssertStringPathRelativeToTopEquals(t, "src", result.Config, test.src, m.src)
AssertStringPathRelativeToTopEquals(t, "rel", result.Config, test.rel, m.rel)
})
}
}
@ -1094,7 +1076,7 @@ func TestPathsForModuleSrc(t *testing.T) {
name: "foo",
srcs: [":b"],
}`,
srcs: []string{buildDir + "/.intermediates/ofp/b/gen/b"},
srcs: []string{"out/soong/.intermediates/ofp/b/gen/b"},
rels: []string{"gen/b"},
},
{
@ -1104,7 +1086,7 @@ func TestPathsForModuleSrc(t *testing.T) {
name: "foo",
srcs: [":b{.tagged}"],
}`,
srcs: []string{buildDir + "/.intermediates/ofp/b/gen/c"},
srcs: []string{"out/soong/.intermediates/ofp/b/gen/c"},
rels: []string{"gen/c"},
},
{
@ -1119,7 +1101,7 @@ func TestPathsForModuleSrc(t *testing.T) {
name: "c",
outs: ["gen/c"],
}`,
srcs: []string{buildDir + "/.intermediates/ofp/b/gen/b"},
srcs: []string{"out/soong/.intermediates/ofp/b/gen/b"},
rels: []string{"gen/b"},
},
{
@ -1134,7 +1116,7 @@ func TestPathsForModuleSrc(t *testing.T) {
},
}
testPathForModuleSrc(t, buildDir, tests)
testPathForModuleSrc(t, tests)
}
func TestPathForModuleSrc(t *testing.T) {
@ -1176,7 +1158,7 @@ func TestPathForModuleSrc(t *testing.T) {
name: "foo",
src: ":b",
}`,
src: buildDir + "/.intermediates/ofp/b/gen/b",
src: "out/soong/.intermediates/ofp/b/gen/b",
rel: "gen/b",
},
{
@ -1186,7 +1168,7 @@ func TestPathForModuleSrc(t *testing.T) {
name: "foo",
src: ":b{.tagged}",
}`,
src: buildDir + "/.intermediates/ofp/b/gen/c",
src: "out/soong/.intermediates/ofp/b/gen/c",
rel: "gen/c",
},
{
@ -1201,7 +1183,7 @@ func TestPathForModuleSrc(t *testing.T) {
},
}
testPathForModuleSrc(t, buildDir, tests)
testPathForModuleSrc(t, tests)
}
func TestPathsForModuleSrc_AllowMissingDependencies(t *testing.T) {
@ -1221,44 +1203,24 @@ func TestPathsForModuleSrc_AllowMissingDependencies(t *testing.T) {
}
`
config := TestConfig(buildDir, nil, bp, nil)
config.TestProductVariables.Allow_missing_dependencies = proptools.BoolPtr(true)
result := emptyTestFixtureFactory.RunTest(t,
PrepareForTestWithAllowMissingDependencies,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterModuleType("test", pathForModuleSrcTestModuleFactory)
}),
FixtureWithRootAndroidBp(bp),
)
ctx := NewTestContext(config)
ctx.SetAllowMissingDependencies(true)
foo := result.ModuleForTests("foo", "").Module().(*pathForModuleSrcTestModule)
ctx.RegisterModuleType("test", pathForModuleSrcTestModuleFactory)
AssertArrayString(t, "foo missing deps", []string{"a", "b", "c"}, foo.missingDeps)
AssertArrayString(t, "foo srcs", []string{}, foo.srcs)
AssertStringEquals(t, "foo src", "", foo.src)
ctx.Register()
bar := result.ModuleForTests("bar", "").Module().(*pathForModuleSrcTestModule)
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
FailIfErrored(t, errs)
foo := ctx.ModuleForTests("foo", "").Module().(*pathForModuleSrcTestModule)
if g, w := foo.missingDeps, []string{"a", "b", "c"}; !reflect.DeepEqual(g, w) {
t.Errorf("want foo missing deps %q, got %q", w, g)
}
if g, w := foo.srcs, []string{}; !reflect.DeepEqual(g, w) {
t.Errorf("want foo srcs %q, got %q", w, g)
}
if g, w := foo.src, ""; g != w {
t.Errorf("want foo src %q, got %q", w, g)
}
bar := ctx.ModuleForTests("bar", "").Module().(*pathForModuleSrcTestModule)
if g, w := bar.missingDeps, []string{"d", "e"}; !reflect.DeepEqual(g, w) {
t.Errorf("want bar missing deps %q, got %q", w, g)
}
if g, w := bar.srcs, []string{}; !reflect.DeepEqual(g, w) {
t.Errorf("want bar srcs %q, got %q", w, g)
}
AssertArrayString(t, "bar missing deps", []string{"d", "e"}, bar.missingDeps)
AssertArrayString(t, "bar srcs", []string{}, bar.srcs)
}
func TestPathRelativeToTop(t *testing.T) {