X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/8e8da466ded3b39188862e4b46f40220d65f316e..49566fe4e40a18434320829c5cb6a6eff1b4ec78:/config_test.go?ds=sidebyside diff --git a/config_test.go b/config_test.go index ae84c96..7ad0b4e 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) @@ -36,18 +36,36 @@ func TestLoadConfigRejectsInvalidFiles(t *testing.T) { name string text string }{ - {"unknown field", `{"endpont": "api"}`}, - {"unknown nested field", `{"compactor": {"modle": "x"}}`}, - {"endpoint URL", `{"endpoint": "https://example.com/v1/responses"}`}, - {"empty model", `{"compactor": {"model": ""}}`}, - {"second object", `{} {}`}, - {"broken JSON", `{"endpoint": `}, + { + name: "unknown field", + text: `{"endpont": "api"}`, + }, + { + name: "unknown nested field", + text: `{"compactor": {"modle": "x"}}`, + }, + { + name: "endpoint URL", + text: `{"endpoint": "https://example.com/v1/responses"}`, + }, + { + name: "empty model", + text: `{"compactor": {"model": ""}}`, + }, + { + name: "second object", + text: `{} {}`, + }, + { + name: "broken JSON", + text: `{"endpoint": `, + }, } 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) @@ -55,48 +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 - }{ - {"ONECHAT_DIR first", filepath.Join(root, "a"), filepath.Join(root, "xdg"), root, filepath.Join(root, "a")}, - {"absolute XDG_DATA_HOME", "", filepath.Join(root, "xdg"), root, filepath.Join(root, "xdg", "onechat")}, - {"relative XDG_DATA_HOME ignored", "", "xdg", root, filepath.Join(root, ".local", "share", "onechat")}, - {"home directory last", "", "", root, 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)