package main import ( "fmt" "io/ioutil" "os/exec" "strings" "testing" ) func TestMetadata(t *testing.T) { cmd := exec.Command( "metadata", "-rule", "test_spec", "-inputFile", "./inputFiles.txt", "-outputFile", "./generatedOutputFile.txt", ) stderr, err := cmd.CombinedOutput() if err != nil { t.Fatalf("Error running metadata command: %s. Error: %v", stderr, err) } // Read the contents of the expected output file expectedOutput, err := ioutil.ReadFile("./expectedOutputFile.txt") if err != nil { t.Fatalf("Error reading expected output file: %s", err) } // Read the contents of the generated output file generatedOutput, err := ioutil.ReadFile("./generatedOutputFile.txt") if err != nil { t.Fatalf("Error reading generated output file: %s", err) } fmt.Println() // Compare the contents if string(expectedOutput) != string(generatedOutput) { t.Errorf("Generated file contents do not match the expected output") } } func TestMetadataNegativeCase(t *testing.T) { cmd := exec.Command( "metadata", "-rule", "test_spec", "-inputFile", "./inputFilesNegativeCase.txt", "-outputFile", "./generatedOutputFileNegativeCase.txt", ) stderr, err := cmd.CombinedOutput() if err == nil { t.Fatalf( "Expected an error, but the metadata command executed successfully. Output: %s", stderr, ) } expectedError := "Conflicting trendy team IDs found for java-test-module" + "-name-one at:\nAndroid.bp with teamId: 12346," + "\nAndroid.bp with teamId: 12345" if !strings.Contains( strings.TrimSpace(string(stderr)), strings.TrimSpace(expectedError), ) { t.Errorf( "Unexpected error message. Expected to contain: %s, Got: %s", expectedError, stderr, ) } } 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") } } func TestCodeMetadata(t *testing.T) { cmd := exec.Command( "metadata", "-rule", "code_metadata", "-inputFile", "./inputCodeMetadata.txt", "-outputFile", "./generatedCodeMetadataOutputFile.txt", ) stderr, err := cmd.CombinedOutput() if err != nil { t.Fatalf("Error running metadata command: %s. Error: %v", stderr, err) } // Read the contents of the expected output file expectedOutput, err := ioutil.ReadFile("./expectedCodeMetadataOutput.txt") if err != nil { t.Fatalf("Error reading expected output file: %s", err) } // Read the contents of the generated output file generatedOutput, err := ioutil.ReadFile("./generatedCodeMetadataOutputFile.txt") if err != nil { t.Fatalf("Error reading generated output file: %s", err) } fmt.Println() // Compare the contents if string(expectedOutput) != string(generatedOutput) { t.Errorf("Generated file contents do not match the expected output") } }