package infra import ( "testing" ) func TestAuditMlEnv(t *testing.T) { // Use the actual registry root relative to the test binary location. // Tests run from the package directory; go up two levels. registryRoot := "../.." t.Run("report no nil y tiene checks", func(t *testing.T) { report, err := AuditMlEnv(registryRoot) if err != nil { t.Fatalf("AuditMlEnv returned error: %v", err) } if report.Checks == nil { t.Fatal("report.Checks is nil") } }) t.Run("generated_at es positivo", func(t *testing.T) { report, err := AuditMlEnv(registryRoot) if err != nil { t.Fatalf("AuditMlEnv returned error: %v", err) } if report.GeneratedAt <= 0 { t.Errorf("GeneratedAt should be positive unix timestamp, got %d", report.GeneratedAt) } }) t.Run("checks tiene al menos 4 entradas", func(t *testing.T) { report, err := AuditMlEnv(registryRoot) if err != nil { t.Fatalf("AuditMlEnv returned error: %v", err) } if len(report.Checks) < 4 { t.Errorf("expected at least 4 checks, got %d", len(report.Checks)) } }) t.Run("gpus puede ser vacio en CI", func(t *testing.T) { report, err := AuditMlEnv(registryRoot) if err != nil { t.Fatalf("AuditMlEnv returned error: %v", err) } // Gpus may be empty in CI without a GPU; that's OK. // Just verify the field is not nil. if report.Gpus == nil { t.Error("report.Gpus should be a non-nil slice (can be empty)") } }) }