package assets import ( "bytes" "os" "path/filepath" "testing" "git.westgate.pw/ShadowsOverWestgate/sow-tools/internal/assets/mdl" ) func TestFixMDL(t *testing.T) { dir := t.TempDir() // Uppercase name + internal mismatch. upper := filepath.Join(dir, "Foo.MDL") body := "newmodel wrong\nbeginmodelgeom wrong\nendmodelgeom wrong\ndonemodel wrong\n" if err := os.WriteFile(upper, []byte(body), 0o644); err != nil { t.Fatal(err) } // dry-run: nothing changes on disk. var out, errw bytes.Buffer if code := runFixMDL([]string{"--dry-run", dir}, &out, &errw); code != exitOK { t.Fatalf("dry-run exit = %d\n%s", code, errw.String()) } if _, err := os.Stat(upper); err != nil { t.Fatal("dry-run renamed a file") } // real run: file is lowercased and its identity rewritten to match. out.Reset() errw.Reset() if code := runFixMDL([]string{dir}, &out, &errw); code != exitOK { t.Fatalf("fix exit = %d\n%s", code, errw.String()) } lowered := filepath.Join(dir, "foo.mdl") if _, err := os.Stat(lowered); err != nil { t.Fatalf("file was not lowercased: %v", err) } mismatches, err := mdl.CheckNames(lowered) if err != nil { t.Fatal(err) } if len(mismatches) != 0 { data, _ := os.ReadFile(lowered) t.Fatalf("model still has mismatches after fix: %+v\n%s", mismatches, data) } }