diff options
author | 2019-05-29 14:40:35 -0700 | |
---|---|---|
committer | 2019-06-04 10:22:51 -0700 | |
commit | 41955e8895fe33022a6759b9739a2368b206c392 (patch) | |
tree | f1a20db995473d7475a502113eb583b317c39a0a /android/module_test.go | |
parent | 4c2c46f0a72e21ffe6be407028b857ba461144d7 (diff) |
Support tagged module references
There are cases where a module needs to refer to an intermediate
output of another module instead of its final output. For example,
a module may want to use the .jar containing .class files from
another module whose final output is a .jar containing classes.dex
files. Support a new ":module{.tag}" format in any property that
is annotated with `android:"path"`, which will query the target
module for its ".tag" output(s).
Test: path_properties_test.go, paths_test.go
Test: no unexpected changes in build.ninja
Change-Id: Icd3c9b0d83ff125771767c04046fcffb9fc3f65a
Diffstat (limited to 'android/module_test.go')
-rw-r--r-- | android/module_test.go | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/android/module_test.go b/android/module_test.go new file mode 100644 index 000000000..c790a6854 --- /dev/null +++ b/android/module_test.go @@ -0,0 +1,141 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package android + +import "testing" + +func TestSrcIsModule(t *testing.T) { + type args struct { + s string + } + tests := []struct { + name string + args args + wantModule string + }{ + { + name: "file", + args: args{ + s: "foo", + }, + wantModule: "", + }, + { + name: "module", + args: args{ + s: ":foo", + }, + wantModule: "foo", + }, + { + name: "tag", + args: args{ + s: ":foo{.bar}", + }, + wantModule: "foo{.bar}", + }, + { + name: "extra colon", + args: args{ + s: ":foo:bar", + }, + wantModule: "foo:bar", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if gotModule := SrcIsModule(tt.args.s); gotModule != tt.wantModule { + t.Errorf("SrcIsModule() = %v, want %v", gotModule, tt.wantModule) + } + }) + } +} + +func TestSrcIsModuleWithTag(t *testing.T) { + type args struct { + s string + } + tests := []struct { + name string + args args + wantModule string + wantTag string + }{ + { + name: "file", + args: args{ + s: "foo", + }, + wantModule: "", + wantTag: "", + }, + { + name: "module", + args: args{ + s: ":foo", + }, + wantModule: "foo", + wantTag: "", + }, + { + name: "tag", + args: args{ + s: ":foo{.bar}", + }, + wantModule: "foo", + wantTag: ".bar", + }, + { + name: "empty tag", + args: args{ + s: ":foo{}", + }, + wantModule: "foo", + wantTag: "", + }, + { + name: "extra colon", + args: args{ + s: ":foo:bar", + }, + wantModule: "foo:bar", + }, + { + name: "invalid tag", + args: args{ + s: ":foo{.bar", + }, + wantModule: "foo{.bar", + }, + { + name: "invalid tag 2", + args: args{ + s: ":foo.bar}", + }, + wantModule: "foo.bar}", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotModule, gotTag := SrcIsModuleWithTag(tt.args.s) + if gotModule != tt.wantModule { + t.Errorf("SrcIsModuleWithTag() gotModule = %v, want %v", gotModule, tt.wantModule) + } + if gotTag != tt.wantTag { + t.Errorf("SrcIsModuleWithTag() gotTag = %v, want %v", gotTag, tt.wantTag) + } + }) + } +} |