aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Choudhary <caditya@google.com>2023-11-16 19:52:44 +0000
committerAditya Choudhary <caditya@google.com>2024-01-03 13:06:59 +0000
commitcf0053ef472f58af051f3c7dea022dc781f3244d (patch)
treed50035a80e0ea5ae8b36f9d394121519ecab5ac1
parentf101d2b7f0f57d2473ff9ddd298ea99fbc93ff78 (diff)
downloadbuild-cf0053ef472f58af051f3c7dea022dc781f3244d.tar.gz
Handle empty input file case in Metadata generation
Bug: 296873595 Test: Manual test (use go test inside tools/metadata/testdata) Ignore-AOSP-First: CPing test_spec rule to udc-mainline-prod to support migration of test targets. Cherry pick of: aosp/2835510 Change-Id: Ib48e88bdad4c870be3ca955abfd64ee8dd74f85d Merged-In: Ib48e88bdad4c870be3ca955abfd64ee8dd74f85d
-rw-r--r--tools/metadata/generator.go18
-rw-r--r--tools/metadata/testdata/emptyInputFile.txt1
-rw-r--r--tools/metadata/testdata/generatedEmptyOutputFile.txt1
-rw-r--r--tools/metadata/testdata/metadata_test.go24
4 files changed, 44 insertions, 0 deletions
diff --git a/tools/metadata/generator.go b/tools/metadata/generator.go
index eb877553d3..bb8293a032 100644
--- a/tools/metadata/generator.go
+++ b/tools/metadata/generator.go
@@ -73,6 +73,20 @@ func readFileToString(filePath string) string {
return string(data)
}
+func writeNewlineToOutputFile(outputFile string) {
+ file, err := os.Create(outputFile)
+ data := "\n"
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer file.Close()
+
+ _, err = file.Write([]byte(data))
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
func processTestSpecProtobuf(
filePath string, ownershipMetadataMap *sync.Map, keyLocks *keyToLocksMap,
errCh chan error, wg *sync.WaitGroup,
@@ -140,6 +154,10 @@ func main() {
inputFileData := strings.TrimRight(readFileToString(*inputFile), "\n")
filePaths := strings.Split(inputFileData, "\n")
+ if len(filePaths) == 1 && filePaths[0] == "" {
+ writeNewlineToOutputFile(*outputFile)
+ return
+ }
ownershipMetadataMap := &sync.Map{}
keyLocks := &keyToLocksMap{}
errCh := make(chan error, len(filePaths))
diff --git a/tools/metadata/testdata/emptyInputFile.txt b/tools/metadata/testdata/emptyInputFile.txt
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/tools/metadata/testdata/emptyInputFile.txt
@@ -0,0 +1 @@
+
diff --git a/tools/metadata/testdata/generatedEmptyOutputFile.txt b/tools/metadata/testdata/generatedEmptyOutputFile.txt
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/tools/metadata/testdata/generatedEmptyOutputFile.txt
@@ -0,0 +1 @@
+
diff --git a/tools/metadata/testdata/metadata_test.go b/tools/metadata/testdata/metadata_test.go
index 03c4f29ab2..71856fe606 100644
--- a/tools/metadata/testdata/metadata_test.go
+++ b/tools/metadata/testdata/metadata_test.go
@@ -63,3 +63,27 @@ func TestMetadataNegativeCase(t *testing.T) {
)
}
}
+
+func TestEmptyInputFile(t *testing.T) {
+ cmd := exec.Command(
+ "metadata", "-rule", "test_spec", "-inputFile", "./emptyInputFile.txt", "-outputFile",
+ "./generatedEmptyOutputFile.txt",
+ )
+ stderr, err := cmd.CombinedOutput()
+ if err != nil {
+ t.Fatalf("Error running metadata command: %s. Error: %v", stderr, err)
+ }
+
+ // Read the contents of the generated output file
+ generatedOutput, err := ioutil.ReadFile("./generatedEmptyOutputFile.txt")
+ if err != nil {
+ t.Fatalf("Error reading generated output file: %s", err)
+ }
+
+ fmt.Println()
+
+ // Compare the contents
+ if string(generatedOutput) != "\n" {
+ t.Errorf("Generated file contents do not match the expected output")
+ }
+}