diff options
author | Aditya Choudhary <caditya@google.com> | 2023-11-16 19:52:44 +0000 |
---|---|---|
committer | Aditya Choudhary <caditya@google.com> | 2024-01-03 13:06:59 +0000 |
commit | cf0053ef472f58af051f3c7dea022dc781f3244d (patch) | |
tree | d50035a80e0ea5ae8b36f9d394121519ecab5ac1 | |
parent | f101d2b7f0f57d2473ff9ddd298ea99fbc93ff78 (diff) | |
download | build-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.go | 18 | ||||
-rw-r--r-- | tools/metadata/testdata/emptyInputFile.txt | 1 | ||||
-rw-r--r-- | tools/metadata/testdata/generatedEmptyOutputFile.txt | 1 | ||||
-rw-r--r-- | tools/metadata/testdata/metadata_test.go | 24 |
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") + } +} |