diff --git a/integration/basic_test.go b/integration/basic_test.go index 18b05a28..6e632a1c 100644 --- a/integration/basic_test.go +++ b/integration/basic_test.go @@ -4,10 +4,14 @@ package integration import ( "context" + "log/slog" + "os" + "runtime" "testing" "time" "github.com/ollama/ollama/api" + "github.com/stretchr/testify/require" ) func TestOrcaMiniBlueSky(t *testing.T) { @@ -25,3 +29,42 @@ func TestOrcaMiniBlueSky(t *testing.T) { } GenerateTestHelper(ctx, t, req, []string{"rayleigh", "scattering"}) } + +func TestUnicodeModelDir(t *testing.T) { + // This is only useful for Windows with utf-16 characters, so skip this test for other platforms + if runtime.GOOS != "windows" { + t.Skip("Unicode test only applicable to windows") + } + // Only works for local testing + if os.Getenv("OLLAMA_TEST_EXISTING") != "" { + t.Skip("TestUnicodeModelDir only works for local testing, skipping") + } + + modelDir, err := os.MkdirTemp("", "ollama_埃") + require.NoError(t, err) + defer os.RemoveAll(modelDir) + slog.Info("unicode", "OLLAMA_MODELS", modelDir) + + oldModelsDir := os.Getenv("OLLAMA_MODELS") + if oldModelsDir == "" { + defer os.Unsetenv("OLLAMA_MODELS") + } else { + defer os.Setenv("OLLAMA_MODELS", oldModelsDir) + } + err = os.Setenv("OLLAMA_MODELS", modelDir) + require.NoError(t, err) + + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) + defer cancel() + + req := api.GenerateRequest{ + Model: "orca-mini", + Prompt: "why is the sky blue?", + Stream: &stream, + Options: map[string]interface{}{ + "temperature": 0, + "seed": 123, + }, + } + GenerateTestHelper(ctx, t, req, []string{"rayleigh", "scattering"}) +}