mirror of
https://github.com/navidrome/navidrome.git
synced 2026-08-31 07:30:32 +00:00
* test: unskip AbsolutePath and i18n path-separator tests on Windows (#5381) Signed-off-by: junkerderprovinz <jdp@braethoria.com> * test: unskip metadata folder-PID test on Windows via path.Dir (#5381) Signed-off-by: junkerderprovinz <jdp@braethoria.com> * test(storage): make relative-folder assertion cross-platform and unskip on Windows (#5381) Signed-off-by: junkerderprovinz <jdp@braethoria.com> * fix(persistence): normalize folder-update-info paths with forward slashes on Windows (#5381) Signed-off-by: junkerderprovinz <jdp@braethoria.com> * review: drop folder-PID change, trim storage_test comment (#5381) Revert model/metadata/persistent_ids.go to master: switching the `folder` PID attribute from filepath.Dir to path.Dir would change the persistent IDs of existing Windows libraries and needs a migration path, so it is out of scope for this PR. The matching test unskip is reverted with it, leaving #TBD-path-sep-metadata open in #5381. Trim the core/storage/storage_test.go comment to two lines. Signed-off-by: junkerderprovinz <jdp@braethoria.com> --------- Signed-off-by: junkerderprovinz <jdp@braethoria.com> Co-authored-by: Deluan Quintão <deluan@navidrome.org>
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package nativeapi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"io/fs"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
"testing/fstest"
|
|
|
|
"github.com/navidrome/navidrome/consts"
|
|
"github.com/navidrome/navidrome/resources"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Translations", func() {
|
|
Describe("I18n files", func() {
|
|
It("contains only valid json language files", func() {
|
|
fsys := resources.FS()
|
|
dir, _ := fsys.Open(consts.I18nFolder)
|
|
files, _ := dir.(fs.ReadDirFile).ReadDir(-1)
|
|
for _, f := range files {
|
|
name := filepath.Base(f.Name())
|
|
filePath := path.Join(consts.I18nFolder, name)
|
|
file, _ := fsys.Open(filePath)
|
|
data, _ := io.ReadAll(file)
|
|
var out map[string]any
|
|
|
|
Expect(filepath.Ext(filePath)).To(Equal(".json"), filePath)
|
|
Expect(json.Unmarshal(data, &out)).To(BeNil(), filePath)
|
|
Expect(out["languageName"]).ToNot(BeEmpty(), filePath)
|
|
}
|
|
})
|
|
})
|
|
|
|
Describe("loadTranslation", func() {
|
|
It("loads a translation file correctly", func() {
|
|
fs := os.DirFS("ui/src")
|
|
tr, err := loadTranslation(fs, "en.json")
|
|
Expect(err).To(BeNil())
|
|
Expect(tr.ID).To(Equal("en"))
|
|
Expect(tr.Name).To(Equal("English"))
|
|
var out map[string]any
|
|
Expect(json.Unmarshal([]byte(tr.Data), &out)).To(BeNil())
|
|
})
|
|
|
|
It("counts only non-empty leaf terms", func() {
|
|
fsys := fstest.MapFS{
|
|
"i18n/test.json": &fstest.MapFile{
|
|
Data: []byte(`{"languageName":"Test","a":"x","b":"","nested":{"c":"y","d":""}}`),
|
|
},
|
|
}
|
|
tr, err := loadTranslation(fsys, "test.json")
|
|
Expect(err).To(BeNil())
|
|
Expect(tr.TermCount).To(Equal(3))
|
|
})
|
|
})
|
|
})
|