Refactor projectmetadata into separate package.
Replace regular expressions to extract fields from a text proto with
and actual parsed protobuf.
Refactor TestFS into its own package, and implement StatFS.
Test: m droid dist cts alllicensemetadata
Test: repo forall -c 'echo -n "$REPO_PATH " && $ANDROID_BUILD_TOP/out/host/linux-x86/bin/compliance_checkmetadata . 2>&1' | fgrep -v PASS
Change-Id: Icd17a6a2b6a4e2b6ffded48e964b9c9d6e4d64d6
diff --git a/tools/compliance/test_util.go b/tools/compliance/test_util.go
index c9d6fe2..6c50d3e 100644
--- a/tools/compliance/test_util.go
+++ b/tools/compliance/test_util.go
@@ -17,10 +17,11 @@
import (
"fmt"
"io"
- "io/fs"
"sort"
"strings"
"testing"
+
+ "android/soong/tools/compliance/testfs"
)
const (
@@ -145,51 +146,6 @@
return cs
}
-// testFS implements a test file system (fs.FS) simulated by a map from filename to []byte content.
-type testFS map[string][]byte
-
-// Open implements fs.FS.Open() to open a file based on the filename.
-func (fs *testFS) Open(name string) (fs.File, error) {
- if _, ok := (*fs)[name]; !ok {
- return nil, fmt.Errorf("unknown file %q", name)
- }
- return &testFile{fs, name, 0}, nil
-}
-
-// testFile implements a test file (fs.File) based on testFS above.
-type testFile struct {
- fs *testFS
- name string
- posn int
-}
-
-// Stat not implemented to obviate implementing fs.FileInfo.
-func (f *testFile) Stat() (fs.FileInfo, error) {
- return nil, fmt.Errorf("unimplemented")
-}
-
-// Read copies bytes from the testFS map.
-func (f *testFile) Read(b []byte) (int, error) {
- if f.posn < 0 {
- return 0, fmt.Errorf("file not open: %q", f.name)
- }
- if f.posn >= len((*f.fs)[f.name]) {
- return 0, io.EOF
- }
- n := copy(b, (*f.fs)[f.name][f.posn:])
- f.posn += n
- return n, nil
-}
-
-// Close marks the testFile as no longer in use.
-func (f *testFile) Close() error {
- if f.posn < 0 {
- return fmt.Errorf("file already closed: %q", f.name)
- }
- f.posn = -1
- return nil
-}
-
// edge describes test data edges to define test graphs.
type edge struct {
target, dep string
@@ -268,7 +224,7 @@
deps[edge.dep] = []annotated{}
}
}
- fs := make(testFS)
+ fs := make(testfs.TestFS)
for file, edges := range deps {
body := meta[file]
for _, edge := range edges {