Update: catatan rilis & hint terlihat, kunci terjemahan dicek tes
- Catatan rilis ditaruh di tengah Border (VScroll di Fyne punya MinSize kecil, jadi sebagai 'top' isinya cuma dapat 32px dan terpotong) - Tombol Back sebelumnya memakai kunci terjemahan yang belum ada di tabel; ditambah tes yang memastikan semua kunci T() ada dan tidak ada kunci nganggur - README: bagian Updates + cara publish rilis
This commit is contained in:
1 parent
e8fa35d70d
commit
ffc412863a
4 files changed
+75
-12
No files matched your search
@@ -3,6 +3,7 @@ package ui
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -70,3 +71,40 @@ func TestDialogsOpenWithoutPanic(t *testing.T) {
|
||||
// jadi sisa goroutine bisa bertabrakan dengan tes berikutnya kalau dibiarkan.
|
||||
time.Sleep(300 * time.Millisecond)
|
||||
}
|
||||
|
||||
// TestStringsCoverUsedKeys memastikan setiap kunci T() yang dipakai ada di tabel
|
||||
// terjemahan (kalau tidak, UI menampilkan nama kunci mentah).
|
||||
func TestStringsCoverUsedKeys(t *testing.T) {
|
||||
files, err := filepath.Glob("*.go")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
used := map[string]bool{}
|
||||
for _, file := range files {
|
||||
if strings.HasSuffix(file, "_test.go") {
|
||||
continue
|
||||
}
|
||||
data, err := os.ReadFile(file)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, m := range regexp.MustCompile(`T\("([a-z_]+)"\)`).FindAllStringSubmatch(string(data), -1) {
|
||||
used[m[1]] = true
|
||||
}
|
||||
}
|
||||
if len(used) == 0 {
|
||||
t.Fatal("tidak ada kunci T() yang ditemukan")
|
||||
}
|
||||
for key := range used {
|
||||
if _, ok := tr[key]; !ok {
|
||||
t.Errorf("kunci %q dipakai tapi tidak ada di tabel terjemahan", key)
|
||||
}
|
||||
}
|
||||
|
||||
// dan sebaliknya: kunci terjemahan yang tidak terpakai sebaiknya dihapus
|
||||
for key := range tr {
|
||||
if !used[key] {
|
||||
t.Errorf("kunci %q ada di tabel terjemahan tapi tidak dipakai", key)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user