test: retry llgo test to avoid clang error

This commit is contained in:
Li Jie
2025-02-01 20:05:40 +08:00
parent cba93e61b4
commit f18237a005

View File

@@ -212,32 +212,37 @@ func main() {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
var testErr error
for attempt := 0; attempt < 2; attempt++ {
testErr = func() error {
// Create a new test directory for each test case // Create a new test directory for each test case
tmpDir := setupTestProject(t) tmpDir := setupTestProject(t)
defer os.RemoveAll(tmpDir) defer os.RemoveAll(tmpDir)
// Change to test project directory // Change to test project directory
if err := os.Chdir(tmpDir); err != nil { if err := os.Chdir(tmpDir); err != nil {
t.Fatalf("Failed to change directory: %v", err) return fmt.Errorf("Failed to change directory: %v", err)
} }
if tt.setup != nil { if tt.setup != nil {
if err := tt.setup(tmpDir); err != nil { if err := tt.setup(tmpDir); err != nil {
t.Fatalf("Failed to setup test: %v", err) return fmt.Errorf("Failed to setup test: %v", err)
} }
} }
mockable.EnableMock() mockable.EnableMock()
var exitErr error
func() {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
if r != "exit" { if r != "exit" {
if !tt.wantErr { if !tt.wantErr {
t.Errorf("unexpected panic: %v", r) exitErr = fmt.Errorf("unexpected panic: %v", r)
} }
} else { } else {
exitCode := mockable.ExitCode() exitCode := mockable.ExitCode()
if (exitCode != 0) != tt.wantErr { if (exitCode != 0) != tt.wantErr {
t.Errorf("got exit code %d, wantErr %v", exitCode, tt.wantErr) exitErr = fmt.Errorf("got exit code %d, wantErr %v", exitCode, tt.wantErr)
} }
} }
} }
@@ -245,6 +250,10 @@ func main() {
os.Args = tt.args os.Args = tt.args
main() main()
}()
if exitErr != nil {
return exitErr
}
// For build/install commands, check if binary was created // For build/install commands, check if binary was created
if strings.HasPrefix(tt.name, "build") || strings.HasPrefix(tt.name, "install") { if strings.HasPrefix(tt.name, "build") || strings.HasPrefix(tt.name, "install") {
@@ -266,9 +275,24 @@ func main() {
binPath = filepath.Join(tmpDir, binName) binPath = filepath.Join(tmpDir, binName)
} }
if _, err := os.Stat(binPath); os.IsNotExist(err) { if _, err := os.Stat(binPath); os.IsNotExist(err) {
t.Errorf("Binary %s was not created at %s", binName, binPath) return fmt.Errorf("Binary %s was not created at %s", binName, binPath)
} }
} }
return nil
}()
if testErr == nil {
break
}
if attempt == 0 {
t.Logf("Test failed on first attempt: %v. Retrying...", testErr)
}
}
if testErr != nil {
t.Error(testErr)
}
}) })
} }
} }