1package android 2 3import ( 4 "path/filepath" 5 "testing" 6) 7 8func TestFileGroupWithPathProp(t *testing.T) { 9 // TODO(b/247782695), TODO(b/242847534) Fix mixed builds for filegroups 10 t.Skip("Re-enable once filegroups are corrected for mixed builds") 11 outBaseDir := "outputbase" 12 pathPrefix := outBaseDir + "/execroot/__main__" 13 expectedOutputfile := filepath.Join(pathPrefix, "a/b/c/d/test.aidl") 14 15 testCases := []struct { 16 bp string 17 rel string 18 }{ 19 { 20 bp: ` 21 filegroup { 22 name: "baz", 23 srcs: ["a/b/c/d/test.aidl"], 24 path: "a/b", 25 bazel_module: { label: "//:baz" }, 26 } 27`, 28 rel: "c/d/test.aidl", 29 }, 30 { 31 bp: ` 32 filegroup { 33 name: "baz", 34 srcs: ["a/b/c/d/test.aidl"], 35 bazel_module: { label: "//:baz" }, 36 } 37`, 38 rel: "a/b/c/d/test.aidl", 39 }, 40 } 41 42 for _, testCase := range testCases { 43 outBaseDir := "outputbase" 44 result := GroupFixturePreparers( 45 PrepareForTestWithFilegroup, 46 FixtureModifyConfig(func(config Config) { 47 config.BazelContext = MockBazelContext{ 48 OutputBaseDir: outBaseDir, 49 LabelToOutputFiles: map[string][]string{ 50 "//:baz": []string{"a/b/c/d/test.aidl"}, 51 }, 52 } 53 }), 54 ).RunTestWithBp(t, testCase.bp) 55 56 fg := result.Module("baz", "").(*fileGroup) 57 AssertStringEquals(t, "src relativeRoot", testCase.rel, fg.srcs[0].Rel()) 58 AssertStringEquals(t, "src full path", expectedOutputfile, fg.srcs[0].String()) 59 } 60} 61 62func TestFilegroupDefaults(t *testing.T) { 63 bp := FixtureAddTextFile("p/Android.bp", ` 64 filegroup_defaults { 65 name: "defaults", 66 visibility: ["//x"], 67 } 68 filegroup { 69 name: "foo", 70 defaults: ["defaults"], 71 visibility: ["//y"], 72 } 73 `) 74 result := GroupFixturePreparers( 75 PrepareForTestWithFilegroup, 76 PrepareForTestWithDefaults, 77 PrepareForTestWithVisibility, 78 bp).RunTest(t) 79 rules := effectiveVisibilityRules(result.Config, qualifiedModuleName{pkg: "p", name: "foo"}) 80 AssertDeepEquals(t, "visibility", []string{"//x", "//y"}, rules.Strings()) 81} 82