Files
fn_registry/functions/infra/audit_app_location_test.go
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

93 lines
2.6 KiB
Go

package infra
import (
"os"
"path/filepath"
"testing"
)
func TestAuditAppLocation(t *testing.T) {
t.Run("detecta app.md en directorio prohibido cpp/apps", func(t *testing.T) {
root := t.TempDir()
// Violacion: cpp/apps/foo tiene app.md
fooDir := filepath.Join(root, "cpp", "apps", "foo")
if err := os.MkdirAll(fooDir, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(fooDir, "app.md"), []byte("name: foo\n"), 0o644); err != nil {
t.Fatal(err)
}
// Ignorado: cpp/apps/bar sin app.md
barDir := filepath.Join(root, "cpp", "apps", "bar")
if err := os.MkdirAll(barDir, 0o755); err != nil {
t.Fatal(err)
}
// Ignorado: apps/baz tiene app.md pero es el lugar canonico
bazDir := filepath.Join(root, "apps", "baz")
if err := os.MkdirAll(bazDir, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(bazDir, "app.md"), []byte("name: baz\n"), 0o644); err != nil {
t.Fatal(err)
}
violations, err := AuditAppLocation(root)
if err != nil {
t.Fatalf("AuditAppLocation returned error: %v", err)
}
if len(violations) != 1 {
t.Fatalf("expected 1 violation, got %d: %+v", len(violations), violations)
}
v := violations[0]
wantPath := filepath.Join("cpp", "apps", "foo")
if v.Path != wantPath {
t.Errorf("Path: got %q, want %q", v.Path, wantPath)
}
if v.Kind != "app" {
t.Errorf("Kind: got %q, want %q", v.Kind, "app")
}
if v.Lang != "cpp" {
t.Errorf("Lang: got %q, want %q", v.Lang, "cpp")
}
})
t.Run("directorios prohibidos inexistentes no producen error", func(t *testing.T) {
root := t.TempDir()
violations, err := AuditAppLocation(root)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(violations) != 0 {
t.Errorf("expected 0 violations, got %d", len(violations))
}
})
t.Run("detecta analysis.md en directorio prohibido python/analysis", func(t *testing.T) {
root := t.TempDir()
anaDir := filepath.Join(root, "python", "analysis", "my_analysis")
if err := os.MkdirAll(anaDir, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(anaDir, "analysis.md"), []byte("name: my_analysis\n"), 0o644); err != nil {
t.Fatal(err)
}
violations, err := AuditAppLocation(root)
if err != nil {
t.Fatalf("AuditAppLocation returned error: %v", err)
}
if len(violations) != 1 {
t.Fatalf("expected 1 violation, got %d: %+v", len(violations), violations)
}
v := violations[0]
if v.Kind != "analysis" || v.Lang != "python" {
t.Errorf("got Kind=%q Lang=%q, want Kind=analysis Lang=python", v.Kind, v.Lang)
}
})
}