X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/7b5d616eaddaee5fa8f73dea9a6593b27c06248e..b961d7cdc59213673c3e4f86d3dae99daf0a1935:/config_test.go diff --git a/config_test.go b/config_test.go index 4dcf94e..7610cd6 100644 --- a/config_test.go +++ b/config_test.go @@ -18,14 +18,14 @@ 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-luna", + Model: "gpt-6.1-sol", Effort: "xhigh", }, }, config) @@ -37,27 +37,27 @@ func TestLoadConfigRejectsInvalidFiles(t *testing.T) { text string }{ { - name: "unknown field", + name: "rejects unknown field", text: `{"endpont": "api"}`, }, { - name: "unknown nested field", + name: "rejects unknown nested field", text: `{"compactor": {"modle": "x"}}`, }, { - name: "endpoint URL", + name: "rejects endpoint URL", text: `{"endpoint": "https://example.com/v1/responses"}`, }, { - name: "empty model", + name: "rejects empty model", text: `{"compactor": {"model": ""}}`, }, { - name: "second object", + name: "rejects second object", text: `{} {}`, }, { - name: "broken JSON", + name: "rejects broken JSON", text: `{"endpoint": `, }, } @@ -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)