Test that each shipped module sits in the folder its namespace spells, that a locale alone fails at its address naming the missing geo, and that a mounted root folder is named by its namespace
This commit is contained in:
@@ -21,7 +21,7 @@ func TestMain(m *testing.M) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
svSE, enUS, misc = bareCopy(tmp, "svse"), bareCopy(tmp, "enus"), bareCopy(tmp, "misc")
|
||||
svSE, enUS, misc = bareCopy(tmp, "sv_SE"), bareCopy(tmp, "en_US"), bareCopy(tmp, "misc")
|
||||
code := m.Run()
|
||||
os.RemoveAll(tmp)
|
||||
os.Exit(code)
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/larvit/fejkdata"
|
||||
"github.com/larvit/fejkdata/data/enus"
|
||||
enus "github.com/larvit/fejkdata/data/en_US"
|
||||
)
|
||||
|
||||
func TestFSLoadsByItsManifest(t *testing.T) {
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/larvit/fejkdata"
|
||||
"github.com/larvit/fejkdata/data/geose"
|
||||
geose "github.com/larvit/fejkdata/data/geo/SE"
|
||||
)
|
||||
|
||||
func TestFSLoadsByItsManifest(t *testing.T) {
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/larvit/fejkdata"
|
||||
"github.com/larvit/fejkdata/data/geous"
|
||||
geous "github.com/larvit/fejkdata/data/geo/US"
|
||||
)
|
||||
|
||||
func TestFSLoadsByItsManifest(t *testing.T) {
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/larvit/fejkdata"
|
||||
"github.com/larvit/fejkdata/data/svse"
|
||||
svse "github.com/larvit/fejkdata/data/sv_SE"
|
||||
)
|
||||
|
||||
func TestFSLoadsByItsManifest(t *testing.T) {
|
||||
+2
-2
@@ -379,7 +379,7 @@ func TestShippedAddressIsOneNamedPick(t *testing.T) {
|
||||
// one locality holds, the region empty for SE, whose address carries none.
|
||||
func geoPlaces(t *testing.T, country string) map[string]bool {
|
||||
rows := func(table string) [][]string {
|
||||
b, err := os.ReadFile("data/geo" + strings.ToLower(country) + "/" + table + ".tsv")
|
||||
b, err := os.ReadFile("data/geo/" + country + "/" + table + ".tsv")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -468,7 +468,7 @@ func TestShippedTableCellsAreTrimmed(t *testing.T) {
|
||||
}
|
||||
|
||||
// TestShippedNamespacedTree loads every shipped module and reaches each locale through its
|
||||
// namespace: data/svse/person.json, mounted under sv_SE, is sv_SE.person.
|
||||
// namespace: data/sv_SE/person.json, mounted under sv_SE, is sv_SE.person.
|
||||
func TestShippedNamespacedTree(t *testing.T) {
|
||||
f := shipped(t, WithSeed(1))
|
||||
for _, path := range []string{"sv_SE.person", "en_US.person", "sv_SE.address.locality"} {
|
||||
|
||||
+10
-10
@@ -31,12 +31,12 @@ func TestPackageImports(t *testing.T) {
|
||||
allowed := map[string][]string{
|
||||
".": {"internal/builtinfunc", "internal/datafiles", "internal/datatype", "internal/drawstate", "internal/grammar", "internal/invariant", "internal/jsonvalue", "internal/proven", "internal/rows"},
|
||||
"cmd/fejkdata": {".", "data"},
|
||||
"data": {"data/enus", "data/geose", "data/geous", "data/misc", "data/svse"},
|
||||
"data/enus": nil,
|
||||
"data/geose": nil,
|
||||
"data/geous": nil,
|
||||
"data": {"data/en_US", "data/geo/SE", "data/geo/US", "data/misc", "data/sv_SE"},
|
||||
"data/en_US": nil,
|
||||
"data/geo/SE": nil,
|
||||
"data/geo/US": nil,
|
||||
"data/misc": nil,
|
||||
"data/svse": nil,
|
||||
"data/sv_SE": nil,
|
||||
"internal/builtinfunc": {"internal/datatype", "internal/drawstate", "internal/grammar", "internal/invariant", "internal/proven"},
|
||||
"internal/datafiles": {"internal/grammar", "internal/invariant", "internal/jsonvalue"},
|
||||
"internal/datatype": nil,
|
||||
@@ -48,13 +48,13 @@ func TestPackageImports(t *testing.T) {
|
||||
"internal/rows": {"internal/drawstate", "internal/grammar", "internal/invariant"},
|
||||
}
|
||||
testsAlso := map[string][]string{
|
||||
".": {"data", "data/enus", "data/geose", "data/geous", "data/misc", "data/svse"},
|
||||
".": {"data", "data/en_US", "data/geo/SE", "data/geo/US", "data/misc", "data/sv_SE"},
|
||||
"cmd/fejkdata": {"internal/grammar"},
|
||||
"data/enus": {"."},
|
||||
"data/geose": {"."},
|
||||
"data/geous": {"."},
|
||||
"data/en_US": {"."},
|
||||
"data/geo/SE": {"."},
|
||||
"data/geo/US": {"."},
|
||||
"data/misc": {"."},
|
||||
"data/svse": {"."},
|
||||
"data/sv_SE": {"."},
|
||||
}
|
||||
seen := map[string]bool{}
|
||||
eachPackage(t, func(dir string, pkg *build.Package) {
|
||||
|
||||
+29
-6
@@ -17,11 +17,11 @@ import (
|
||||
"testing/fstest"
|
||||
|
||||
"github.com/larvit/fejkdata/data"
|
||||
"github.com/larvit/fejkdata/data/enus"
|
||||
"github.com/larvit/fejkdata/data/geose"
|
||||
"github.com/larvit/fejkdata/data/geous"
|
||||
enus "github.com/larvit/fejkdata/data/en_US"
|
||||
geose "github.com/larvit/fejkdata/data/geo/SE"
|
||||
geous "github.com/larvit/fejkdata/data/geo/US"
|
||||
"github.com/larvit/fejkdata/data/misc"
|
||||
"github.com/larvit/fejkdata/data/svse"
|
||||
svse "github.com/larvit/fejkdata/data/sv_SE"
|
||||
"github.com/larvit/fejkdata/internal/datafiles"
|
||||
)
|
||||
|
||||
@@ -65,12 +65,12 @@ func (m shippedModule) whole(t testing.TB) fs.FS {
|
||||
}
|
||||
|
||||
// shippedModules is every module data.Modules lists, each beside its folder under data/: its
|
||||
// namespace in lower case without separators.
|
||||
// namespace, a dot a slash.
|
||||
func shippedModules(t testing.TB) []shippedModule {
|
||||
t.Helper()
|
||||
out := []shippedModule{{fsys: enus.FS, namespace: "en_US"}, {fsys: geose.FS, namespace: "geo.SE"}, {fsys: geous.FS, namespace: "geo.US"}, {fsys: misc.FS, namespace: "misc"}, {fsys: svse.FS, namespace: "sv_SE"}}
|
||||
for i := range out {
|
||||
out[i].dir = strings.ToLower(strings.NewReplacer(".", "", "_", "").Replace(out[i].namespace))
|
||||
out[i].dir = strings.ReplaceAll(out[i].namespace, ".", "/")
|
||||
}
|
||||
var listed []fs.FS
|
||||
for _, m := range out {
|
||||
@@ -229,6 +229,29 @@ func TestEachShippedModuleRendersBesideTheModulesItReads(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestALocaleAloneFailsAtItsAddressNamingTheMissingGeo(t *testing.T) {
|
||||
f, err := New(WithDataFS(svse.FS))
|
||||
if err != nil {
|
||||
t.Fatalf("New(WithDataFS(svse.FS)) = %v", err)
|
||||
}
|
||||
if _, err := f.Fake("sv_SE.address"); !errors.Is(err, ErrLoad) || !strings.Contains(err.Error(), `reference {/geo.SE.address}: no entry "geo"`) {
|
||||
t.Errorf(`Fake("sv_SE.address") = %v, want a load error naming the missing geo`, err)
|
||||
}
|
||||
if got := fake(t, f, "sv_SE.person"); got == "" {
|
||||
t.Error("sv_SE.person rendered empty, want the locale's other categories to load alone")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAMountedModuleNamesItsRootFolderByItsNamespace(t *testing.T) {
|
||||
_, err := New(WithDataFS(fstest.MapFS{
|
||||
".fejkdata.json": {Data: []byte(`{"namespace": "my.data"}`)},
|
||||
"t.json": {Data: []byte(`{"format":"{name}","rows":"t.tsv","key":"name"}`)},
|
||||
}))
|
||||
if err == nil || !strings.Contains(err.Error(), "not beside it in my.data") || strings.Contains(err.Error(), "(.)") {
|
||||
t.Errorf("New = %v, want the root folder named by its namespace alone", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAMountedModuleNamesItsFilesByItsNamespace(t *testing.T) {
|
||||
_, err := New(WithDataFS(fstest.MapFS{
|
||||
".fejkdata.json": {Data: []byte(`{"namespace": "my.data"}`)},
|
||||
|
||||
Reference in New Issue
Block a user