X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/d1c01b959fb703e604e7cce4e49af411420c5300..cb514b662bcf9d90b2cf02789c989f777d774d3f:/config_test.go diff --git a/config_test.go b/config_test.go index 92ff2e0..7ad0b4e 100644 --- a/config_test.go +++ b/config_test.go @@ -18,12 +18,12 @@ func TestLoadConfigGivesDefaultsWithoutAFile(t *testing.T) { func TestLoadConfigKeepsDefaultsForMissingFields(t *testing.T) { dir := t.TempDir() - writeConfig(t, dir, `{"endpoint": "api", "compactor": {"effort": "xhigh"}}`) + configWriteTest(t, dir, `{"endpoint": "api", "compactor": {"effort": "xhigh"}}`) config, err := loadConfig(dir) require.NoError(t, err) require.Equal(t, Config{ - Endpoint: endpointAPI, + Endpoint: configEndpointAPI, Compactor: ModelConfig{ Model: "gpt-6.1-sol", Effort: "xhigh", @@ -65,7 +65,7 @@ func TestLoadConfigRejectsInvalidFiles(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { dir := t.TempDir() - writeConfig(t, dir, tc.text) + configWriteTest(t, dir, tc.text) _, err := loadConfig(dir) require.Error(t, err) @@ -73,72 +73,7 @@ func TestLoadConfigRejectsInvalidFiles(t *testing.T) { } } -func TestDataDirFollowsTheOrder(t *testing.T) { - root := t.TempDir() - testCases := []struct { - name string - dir string - xdg string - home string - want string - }{ - { - name: "ONECHAT_DIR first", - dir: filepath.Join(root, "a"), - xdg: filepath.Join(root, "xdg"), - home: root, - want: filepath.Join(root, "a"), - }, - { - name: "absolute XDG_DATA_HOME", - dir: "", - xdg: filepath.Join(root, "xdg"), - home: root, - want: filepath.Join(root, "xdg", "onechat"), - }, - { - name: "relative XDG_DATA_HOME ignored", - dir: "", - xdg: "xdg", - home: root, - want: filepath.Join(root, ".local", "share", "onechat"), - }, - { - name: "home directory last", - dir: "", - xdg: "", - home: root, - want: filepath.Join(root, ".local", "share", "onechat"), - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - t.Setenv("ONECHAT_DIR", tc.dir) - t.Setenv("XDG_DATA_HOME", tc.xdg) - t.Setenv("HOME", tc.home) - - dir, err := dataDir() - require.NoError(t, err) - require.Equal(t, tc.want, dir) - - info, err := os.Stat(dir) - require.NoError(t, err) - require.Equal(t, os.FileMode(0o700), info.Mode().Perm()) - }) - } -} - -func TestDataDirFailsWithoutAHome(t *testing.T) { - t.Setenv("ONECHAT_DIR", "") - t.Setenv("XDG_DATA_HOME", "") - t.Setenv("HOME", "") - - _, err := dataDir() - require.ErrorContains(t, err, "ONECHAT_DIR") -} - -func writeConfig(t *testing.T, dir, text string) { +func configWriteTest(t *testing.T, dir, text string) { t.Helper() err := os.WriteFile(filepath.Join(dir, "config.json"), []byte(text), 0o600)