From 70fb37ec1150e9ced075387a2144626fa5b5f092 Mon Sep 17 00:00:00 2001 From: Aditya Choudhary Date: Thu, 16 Nov 2023 19:52:44 +0000 Subject: [PATCH] Handle empty input file case in Metadata generation Bug: 296873595 Test: Manual test (use go test inside tools/metadata/testdata) Change-Id: Ib48e88bdad4c870be3ca955abfd64ee8dd74f85d --- tools/metadata/generator.go | 18 ++++++++++++++ tools/metadata/testdata/emptyInputFile.txt | 1 + .../testdata/generatedEmptyOutputFile.txt | 1 + tools/metadata/testdata/metadata_test.go | 24 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 tools/metadata/testdata/emptyInputFile.txt create mode 100644 tools/metadata/testdata/generatedEmptyOutputFile.txt 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") + } +}