67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateScopeOverlapRejectsAllowedForbiddenConflict(t *testing.T) {
|
|
err := validateScopeOverlap([]string{"cmd/creator-web/server.go"}, []string{"cmd/creator-web/**"})
|
|
if err == nil || !strings.Contains(err.Error(), "overlaps forbidden") {
|
|
t.Fatalf("overlap error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateRequiredTestsRejectsIncompleteEvidence(t *testing.T) {
|
|
err := validateRequiredTests([]string{"go test ./..."})
|
|
if err == nil || !strings.Contains(err.Error(), "missing required governance evidence") {
|
|
t.Fatalf("required test error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateDeltaRejectsUnknownOrMissingFields(t *testing.T) {
|
|
err := validateDelta(map[string]int{"new_privileges": 0})
|
|
if err == nil || !strings.Contains(err.Error(), "exactly") {
|
|
t.Fatalf("delta error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateGenerationTaskRequiresGen2BaseAndArchitecture(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
task TaskPacket
|
|
want string
|
|
}{
|
|
{
|
|
name: "architecture task requires integration base",
|
|
task: TaskPacket{TaskID: "ARCH-GEN2-000", BaseRepoRevision: "origin/main", ArchitectureRevision: "ADR-0019"},
|
|
want: "gen2-integration",
|
|
},
|
|
{
|
|
name: "implementation task requires accepted architecture root",
|
|
task: TaskPacket{TaskID: "GEN2-001", BaseRepoRevision: "gen2-integration", ArchitectureRevision: "ADR-0019"},
|
|
want: "ARCH-GEN2-000",
|
|
},
|
|
}
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
err := validateGenerationTask(tc.task)
|
|
if err == nil || !strings.Contains(err.Error(), tc.want) {
|
|
t.Fatalf("generation validation error = %v, want %q", err, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateGenerationTaskAcceptsExecutionRoots(t *testing.T) {
|
|
for _, task := range []TaskPacket{
|
|
{TaskID: "PRE-GEN2-000", BaseRepoRevision: "origin/main", ArchitectureRevision: "ADR-0019"},
|
|
{TaskID: "ARCH-GEN2-000", BaseRepoRevision: "gen2-integration", ArchitectureRevision: "ADR-0019"},
|
|
{TaskID: "GEN2-001", BaseRepoRevision: "gen2-integration", ArchitectureRevision: "ARCH-GEN2-000"},
|
|
} {
|
|
if err := validateGenerationTask(task); err != nil {
|
|
t.Fatalf("validateGenerationTask(%+v) = %v", task, err)
|
|
}
|
|
}
|
|
}
|