diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-17 00:23:51 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-17 00:23:51 +0200 |
| commit | 04b4243ad31d144c4caf9be4c5096a0f27a2648e (patch) | |
| tree | 056515d145ba8e4fba29a2150b2c58199133b0c1 /gui/internal/model/prefs_test.go | |
| parent | 9db67b201b80e9b7f824989df8517cefc587036d (diff) | |
| download | krino-04b4243ad31d144c4caf9be4c5096a0f27a2648e.tar.gz krino-04b4243ad31d144c4caf9be4c5096a0f27a2648e.zip | |
gui: syntax colours, a file preview, and a settings window
Diffstat (limited to 'gui/internal/model/prefs_test.go')
| -rw-r--r-- | gui/internal/model/prefs_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gui/internal/model/prefs_test.go b/gui/internal/model/prefs_test.go new file mode 100644 index 0000000..6c01dee --- /dev/null +++ b/gui/internal/model/prefs_test.go @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package model + +import ( + "os" + "path/filepath" + "testing" +) + +// sandboxHome points HOME and every XDG_* at a temporary directory, as the +// other tests here do. +func sandboxHome(t *testing.T) string { + t.Helper() + h := t.TempDir() + t.Setenv("HOME", h) + for _, v := range []string{"XDG_CONFIG_HOME", "XDG_STATE_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME"} { + t.Setenv(v, "") + } + return h +} + +// TestPrefsRoundTrip: what is saved comes back, and the file lands beside +// krino.conf. +func TestPrefsRoundTrip(t *testing.T) { + h := sandboxHome(t) + p := DefaultPrefs() + p.FontSize = 13 + p.Colours = false + p.SelectAll = false + if err := p.Save(); err != nil { + t.Fatal(err) + } + if got := LoadPrefs(); got != p { + t.Errorf("loaded %+v, want %+v", got, p) + } + want := filepath.Join(h, ".config", "krino", "gui.json") + if _, err := os.Stat(want); err != nil { + t.Errorf("not written to %s: %v", want, err) + } +} + +// TestPrefsWithoutAFile: the first run has no file, and damaged text is not +// worth refusing to open a window over. +func TestPrefsWithoutAFile(t *testing.T) { + sandboxHome(t) + if got := LoadPrefs(); got != DefaultPrefs() { + t.Errorf("with no file: %+v, want the defaults", got) + } + if err := os.MkdirAll(filepath.Dir(PrefsFile()), 0o755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(PrefsFile(), []byte("{not json"), 0o644); err != nil { + t.Fatal(err) + } + if got := LoadPrefs(); got != DefaultPrefs() { + t.Errorf("with damaged text: %+v, want the defaults", got) + } +} |
