Filter By Hak Name
This commit is contained in:
@@ -3,6 +3,7 @@ package project
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"slices"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -87,3 +88,54 @@ func mkdirAll(t *testing.T, path string) {
|
||||
t.Fatalf("mkdir %s: %v", path, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCloneWithHAKNamesFiltersConfiguredHAKs(t *testing.T) {
|
||||
proj := &Project{
|
||||
Root: "/tmp/test",
|
||||
Config: Config{
|
||||
Module: ModuleConfig{Name: "Test", ResRef: "test"},
|
||||
Paths: PathConfig{Source: "src", Assets: "assets", Build: "build"},
|
||||
HAKs: []HAKConfig{
|
||||
{Name: "sow_over", Priority: 1, Include: []string{"over/**"}},
|
||||
{Name: "sow_core", Priority: 2, Include: []string{"core/**"}},
|
||||
{Name: "sow_item", Priority: 3, Include: []string{"item/**"}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
filtered, err := proj.CloneWithHAKNames([]string{"sow_core", "sow_item"})
|
||||
if err != nil {
|
||||
t.Fatalf("CloneWithHAKNames returned error: %v", err)
|
||||
}
|
||||
|
||||
if filtered == proj {
|
||||
t.Fatalf("expected filtered clone, got original pointer")
|
||||
}
|
||||
|
||||
got := make([]string, 0, len(filtered.Config.HAKs))
|
||||
for _, hak := range filtered.Config.HAKs {
|
||||
got = append(got, hak.Name)
|
||||
}
|
||||
want := []string{"sow_core", "sow_item"}
|
||||
if !slices.Equal(got, want) {
|
||||
t.Fatalf("unexpected filtered haks: got %v want %v", got, want)
|
||||
}
|
||||
|
||||
if len(proj.Config.HAKs) != 3 {
|
||||
t.Fatalf("original project config should remain unchanged, got %d haks", len(proj.Config.HAKs))
|
||||
}
|
||||
}
|
||||
|
||||
func TestCloneWithHAKNamesRejectsUnknownHAKs(t *testing.T) {
|
||||
proj := &Project{
|
||||
Config: Config{
|
||||
HAKs: []HAKConfig{
|
||||
{Name: "sow_core", Priority: 1, Include: []string{"core/**"}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if _, err := proj.CloneWithHAKNames([]string{"missing_hak"}); err == nil {
|
||||
t.Fatal("expected error for unknown hak name")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user