Fixed plain datasets generating lock ids when not necessary
This commit is contained in:
@@ -3,6 +3,7 @@ package topdata
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -13544,6 +13545,67 @@ func TestBuildNativeSupportsLoosePlainTableAtTopdataDataRoot(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildNativeDoesNotCreateRootLockfileForExplicitRootPlainTable(t *testing.T) {
|
||||
root := testProjectRoot(t)
|
||||
mkdirAll(t, filepath.Join(root, "topdata", "data"))
|
||||
writeFile(t, filepath.Join(root, "topdata", "base_dialog.json"), "{}\n")
|
||||
writeFile(t, filepath.Join(root, "topdata", "data", "categories.json"), `{
|
||||
"output": "categories.2da",
|
||||
"columns": ["Category"],
|
||||
"rows": [
|
||||
{"id": 1, "key": "categories:harmful", "Category": "Harmful"},
|
||||
{"id": 2, "key": "categories:beneficial", "Category": "Beneficial"}
|
||||
]
|
||||
}`+"\n")
|
||||
|
||||
proj := testProject(root)
|
||||
proj.Config.TopData.ReferenceBuilder = ""
|
||||
|
||||
result, err := BuildNativeWithOptions(proj, NativeBuildOptions{BuildWiki: false}, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("expected explicit loose root table to build: %v", err)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(result.Output2DADir, "categories.2da")); err != nil {
|
||||
t.Fatalf("expected categories.2da output for loose root table: %v", err)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(root, "topdata", "data", "lock.json")); !errors.Is(err, os.ErrNotExist) {
|
||||
t.Fatalf("expected no root lock.json for fully explicit loose root table, got err %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildNativeCreatesRootLockfileForImplicitRootPlainTableKeys(t *testing.T) {
|
||||
root := testProjectRoot(t)
|
||||
mkdirAll(t, filepath.Join(root, "topdata", "data"))
|
||||
writeFile(t, filepath.Join(root, "topdata", "base_dialog.json"), "{}\n")
|
||||
writeFile(t, filepath.Join(root, "topdata", "data", "categories.json"), `{
|
||||
"output": "categories.2da",
|
||||
"columns": ["Category"],
|
||||
"rows": [
|
||||
{"key": "categories:harmful", "Category": "Harmful"},
|
||||
{"id": 5, "key": "categories:beneficial", "Category": "Beneficial"}
|
||||
]
|
||||
}`+"\n")
|
||||
|
||||
proj := testProject(root)
|
||||
proj.Config.TopData.ReferenceBuilder = ""
|
||||
|
||||
if _, err := BuildNativeWithOptions(proj, NativeBuildOptions{BuildWiki: false}, nil); err != nil {
|
||||
t.Fatalf("expected implicit loose root table to build: %v", err)
|
||||
}
|
||||
|
||||
lockRaw, err := os.ReadFile(filepath.Join(root, "topdata", "data", "lock.json"))
|
||||
if err != nil {
|
||||
t.Fatalf("expected root lock.json for implicit keyed row: %v", err)
|
||||
}
|
||||
var lockData map[string]int
|
||||
if err := json.Unmarshal(lockRaw, &lockData); err != nil {
|
||||
t.Fatalf("unmarshal lockfile: %v", err)
|
||||
}
|
||||
if lockData["categories:harmful"] != 0 || lockData["categories:beneficial"] != 5 {
|
||||
t.Fatalf("unexpected lock data: %#v", lockData)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildNativeExtendsConfiguredPlainRowsByRepeatingLastLevel(t *testing.T) {
|
||||
root := testProjectRoot(t)
|
||||
mkdirAll(t, filepath.Join(root, "topdata", "data", "classes", "spellsgained"))
|
||||
|
||||
Reference in New Issue
Block a user