package main import ( "path/filepath" "testing" ) func TestCheckGoAnyUsageFlagsAnyTypes(t *testing.T) { root := t.TempDir() writeTestFile(t, filepath.Join(root, "sample.go"), `package sample type Payload struct { Value any Items []any } func Map() map[string]any { return nil } `, 0644) warnings := checkGoAnyUsage(root, nil) if len(warnings) < 3 { t.Fatalf("checkGoAnyUsage() returned %d warnings, want at least 3: %#v", len(warnings), warnings) } } func TestCheckGoAnyUsageSkipsTestsAndGeneratedFiles(t *testing.T) { root := t.TempDir() writeTestFile(t, filepath.Join(root, "sample_test.go"), `package sample func TestThing(value any) {} `, 0644) writeTestFile(t, filepath.Join(root, "sample.pb.go"), `package sample type Payload struct { Value any } `, 0644) warnings := checkGoAnyUsage(root, nil) if len(warnings) != 0 { t.Fatalf("checkGoAnyUsage() returned %d warnings, want 0: %#v", len(warnings), warnings) } } func TestCheckTypeScriptAnyUsageFlagsAnyPatterns(t *testing.T) { root := t.TempDir() writeTestFile(t, filepath.Join(root, "sample.ts"), `export type Row = any export const fn = (value: any[]): any => value as any `, 0644) warnings := checkTypeScriptAnyUsage(root, nil) if len(warnings) < 2 { t.Fatalf("checkTypeScriptAnyUsage() returned %d warnings, want at least 2: %#v", len(warnings), warnings) } } func TestCheckTypeScriptAnyUsageSkipsCommentsAndStrings(t *testing.T) { root := t.TempDir() writeTestFile(t, filepath.Join(root, "sample.ts"), `// any should not count const label = "any"; /* any */ `, 0644) warnings := checkTypeScriptAnyUsage(root, nil) if len(warnings) != 0 { t.Fatalf("checkTypeScriptAnyUsage() returned %d warnings, want 0: %#v", len(warnings), warnings) } }