Loading android/paths.go +2 −2 Original line number Diff line number Diff line Loading @@ -263,9 +263,9 @@ func pathsForModuleSrcFromFullPath(ctx ModuleContext, paths []string, incDirs bo } // PathsWithOptionalDefaultForModuleSrc returns Paths rooted from the module's // local source directory. If none are provided, use the default if it exists. // local source directory. If input is nil, use the default if it exists. If input is empty, returns nil. func PathsWithOptionalDefaultForModuleSrc(ctx ModuleContext, input []string, def string) Paths { if len(input) > 0 { if input != nil { return PathsForModuleSrc(ctx, input) } // Use Glob so that if the default doesn't exist, a dependency is added so that when it Loading java/aar.go +4 −2 Original line number Diff line number Diff line Loading @@ -53,11 +53,13 @@ type aaptProperties struct { Aapt_include_all_resources *bool // list of directories relative to the Blueprints file containing assets. // Defaults to "assets" // Defaults to ["assets"] if a directory called assets exists. Set to [] // to disable the default. Asset_dirs []string // list of directories relative to the Blueprints file containing // Android resources // Android resources. Defaults to ["res"] if a directory called res exists. // Set to [] to disable the default. Resource_dirs []string // path to AndroidManifest.xml. If unset, defaults to "AndroidManifest.xml". Loading java/app_test.go +58 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,64 @@ func TestApp(t *testing.T) { } } func TestResourceDirs(t *testing.T) { testCases := []struct { name string prop string resources []string }{ { name: "no resource_dirs", prop: "", resources: []string{"res/res/values/strings.xml"}, }, { name: "resource_dirs", prop: `resource_dirs: ["res"]`, resources: []string{"res/res/values/strings.xml"}, }, { name: "empty resource_dirs", prop: `resource_dirs: []`, resources: nil, }, } fs := map[string][]byte{ "res/res/values/strings.xml": nil, } bp := ` android_app { name: "foo", %s } ` for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { config := testConfig(nil) ctx := testContext(config, fmt.Sprintf(bp, testCase.prop), fs) run(t, ctx, config) module := ctx.ModuleForTests("foo", "android_common") resourceList := module.MaybeOutput("aapt2/res.list") var resources []string if resourceList.Rule != nil { for _, compiledResource := range resourceList.Inputs.Strings() { resources = append(resources, module.Output(compiledResource).Inputs.Strings()...) } } if !reflect.DeepEqual(resources, testCase.resources) { t.Errorf("expected resource files %q, got %q", testCase.resources, resources) } }) } } func TestEnforceRRO(t *testing.T) { testCases := []struct { name string Loading Loading
android/paths.go +2 −2 Original line number Diff line number Diff line Loading @@ -263,9 +263,9 @@ func pathsForModuleSrcFromFullPath(ctx ModuleContext, paths []string, incDirs bo } // PathsWithOptionalDefaultForModuleSrc returns Paths rooted from the module's // local source directory. If none are provided, use the default if it exists. // local source directory. If input is nil, use the default if it exists. If input is empty, returns nil. func PathsWithOptionalDefaultForModuleSrc(ctx ModuleContext, input []string, def string) Paths { if len(input) > 0 { if input != nil { return PathsForModuleSrc(ctx, input) } // Use Glob so that if the default doesn't exist, a dependency is added so that when it Loading
java/aar.go +4 −2 Original line number Diff line number Diff line Loading @@ -53,11 +53,13 @@ type aaptProperties struct { Aapt_include_all_resources *bool // list of directories relative to the Blueprints file containing assets. // Defaults to "assets" // Defaults to ["assets"] if a directory called assets exists. Set to [] // to disable the default. Asset_dirs []string // list of directories relative to the Blueprints file containing // Android resources // Android resources. Defaults to ["res"] if a directory called res exists. // Set to [] to disable the default. Resource_dirs []string // path to AndroidManifest.xml. If unset, defaults to "AndroidManifest.xml". Loading
java/app_test.go +58 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,64 @@ func TestApp(t *testing.T) { } } func TestResourceDirs(t *testing.T) { testCases := []struct { name string prop string resources []string }{ { name: "no resource_dirs", prop: "", resources: []string{"res/res/values/strings.xml"}, }, { name: "resource_dirs", prop: `resource_dirs: ["res"]`, resources: []string{"res/res/values/strings.xml"}, }, { name: "empty resource_dirs", prop: `resource_dirs: []`, resources: nil, }, } fs := map[string][]byte{ "res/res/values/strings.xml": nil, } bp := ` android_app { name: "foo", %s } ` for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { config := testConfig(nil) ctx := testContext(config, fmt.Sprintf(bp, testCase.prop), fs) run(t, ctx, config) module := ctx.ModuleForTests("foo", "android_common") resourceList := module.MaybeOutput("aapt2/res.list") var resources []string if resourceList.Rule != nil { for _, compiledResource := range resourceList.Inputs.Strings() { resources = append(resources, module.Output(compiledResource).Inputs.Strings()...) } } if !reflect.DeepEqual(resources, testCase.resources) { t.Errorf("expected resource files %q, got %q", testCase.resources, resources) } }) } } func TestEnforceRRO(t *testing.T) { testCases := []struct { name string Loading