Add rust_test and rust_test_host.

* Rust tests are like binary files compiled with --test.
  New test.go follows binary.go code patterns and reuses
  some code in binary.go.
* Generate one test per source file as testPerSrc in cc/test.go.
  The "all tests" variation feature of cc/test.go is not copied yet.
  Fix some Stem and SubName settings to make testPerSrc work.
* Move cc.CheckDuplicate to android.CheckDuplicate,
  which is now shared by cc and rust.
* Refactor tests in binary_test.go and add new test_test.go.

Bug: 140938178
Test: mm in rust projects, added rust_test and rust_test_host
Change-Id: Ia6fec8b4cf2572fd352ab1938a1f3c7b5cca2212
This commit is contained in:
Chih-Hung Hsieh
2019-10-24 20:47:54 -07:00
parent 520367cbd3
commit a5f22ed6b0
9 changed files with 202 additions and 19 deletions

View File

@@ -173,7 +173,7 @@ func TestPerSrcMutator(mctx android.BottomUpMutatorContext) {
if test, ok := m.linker.(testPerSrc); ok {
numTests := len(test.srcs())
if test.testPerSrc() && numTests > 0 {
if duplicate, found := checkDuplicate(test.srcs()); found {
if duplicate, found := android.CheckDuplicate(test.srcs()); found {
mctx.PropertyErrorf("srcs", "found a duplicate entry %q", duplicate)
return
}
@@ -206,17 +206,6 @@ func TestPerSrcMutator(mctx android.BottomUpMutatorContext) {
}
}
func checkDuplicate(values []string) (duplicate string, found bool) {
seen := make(map[string]string)
for _, v := range values {
if duplicate, found = seen[v]; found {
return
}
seen[v] = v
}
return
}
type testDecorator struct {
Properties TestProperties
linker *baseLinker