Allow exclude_java_resources to affect java_resource_dirs

Allow excluding files from directory globbed by java_resource_dirs.

Test: java_test.go
Change-Id: I9922842248be1a386ab111a5187608438638ffb1
This commit is contained in:
Colin Cross
2018-09-13 11:26:19 -07:00
parent fe4bc36f87
commit cedd4768f5
3 changed files with 30 additions and 39 deletions

View File

@@ -75,7 +75,7 @@ type CompilerProperties struct {
// list of files to use as Java resources
Java_resources []string `android:"arch_variant"`
// list of files that should be excluded from java_resources
// list of files that should be excluded from java_resources and java_resource_dirs
Exclude_java_resources []string `android:"arch_variant"`
// don't build against the default libraries (bootclasspath, legacy-test, core-junit,
@@ -1119,7 +1119,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
}
}
dirArgs, dirDeps := ResourceDirsToJarArgs(ctx, j.properties.Java_resource_dirs, j.properties.Exclude_java_resource_dirs)
dirArgs, dirDeps := ResourceDirsToJarArgs(ctx, j.properties.Java_resource_dirs,
j.properties.Exclude_java_resource_dirs, j.properties.Exclude_java_resources)
fileArgs, fileDeps := ResourceFilesToJarArgs(ctx, j.properties.Java_resources, j.properties.Exclude_java_resources)
var resArgs []string

View File

@@ -32,7 +32,7 @@ var resourceExcludes = []string{
}
func ResourceDirsToJarArgs(ctx android.ModuleContext,
resourceDirs, excludeResourceDirs []string) (args []string, deps android.Paths) {
resourceDirs, excludeResourceDirs, excludeResourceFiles []string) (args []string, deps android.Paths) {
var excludeDirs []string
var excludeFiles []string
@@ -44,6 +44,8 @@ func ResourceDirsToJarArgs(ctx android.ModuleContext,
}
}
excludeFiles = append(excludeFiles, ctx.ExpandSources(excludeResourceFiles, nil).Strings()...)
excludeFiles = append(excludeFiles, resourceExcludes...)
for _, resourceDir := range resourceDirs {

View File

@@ -702,6 +702,30 @@ func TestResources(t *testing.T) {
prop: `java_resource_dirs: ["java-res/*"], exclude_java_resource_dirs: ["java-res/b"]`,
args: "-C java-res/a -f java-res/a/a",
},
{
// Test wildcards in java_resources
name: "wildcard files",
prop: `java_resources: ["java-res/**/*"]`,
args: "-C . -f java-res/a/a -f java-res/b/b",
},
{
// Test exclude_java_resources with java_resources
name: "wildcard files with exclude",
prop: `java_resources: ["java-res/**/*"], exclude_java_resources: ["java-res/b/*"]`,
args: "-C . -f java-res/a/a",
},
{
// Test exclude_java_resources with java_resource_dirs
name: "resource dirs with exclude files",
prop: `java_resource_dirs: ["java-res"], exclude_java_resources: ["java-res/b/b"]`,
args: "-C java-res -f java-res/a/a",
},
{
// Test exclude_java_resource_dirs with java_resource_dirs
name: "resource dirs with exclude files",
prop: `java_resource_dirs: ["java-res", "java-res2"], exclude_java_resource_dirs: ["java-res2"]`,
args: "-C java-res -f java-res/a/a -f java-res/b/b",
},
}
for _, test := range table {
@@ -734,42 +758,6 @@ func TestResources(t *testing.T) {
}
}
func TestExcludeResources(t *testing.T) {
ctx := testJava(t, `
java_library {
name: "foo",
srcs: ["a.java"],
java_resource_dirs: ["java-res", "java-res2"],
exclude_java_resource_dirs: ["java-res2"],
}
java_library {
name: "bar",
srcs: ["a.java"],
java_resources: ["java-res/*/*"],
exclude_java_resources: ["java-res/b/*"],
}
`)
fooRes := ctx.ModuleForTests("foo", "android_common").Output("res/foo.jar")
expected := "-C java-res -f java-res/a/a -f java-res/b/b"
if fooRes.Args["jarArgs"] != expected {
t.Errorf("foo resource jar args %q is not %q",
fooRes.Args["jarArgs"], expected)
}
barRes := ctx.ModuleForTests("bar", "android_common").Output("res/bar.jar")
expected = "-C . -f java-res/a/a"
if barRes.Args["jarArgs"] != expected {
t.Errorf("bar resource jar args %q is not %q",
barRes.Args["jarArgs"], expected)
}
}
func TestGeneratedSources(t *testing.T) {
ctx := testJava(t, `
java_library {