filegroup_test.go 1.9 KB

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