mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
8207c1c7e6
* * update migrate * * rename handlers to sources * * delete dead code * * fix go test error
248 lines
6.1 KiB
Go
248 lines
6.1 KiB
Go
package openclaw
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewOpenclawHandler(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
require.NotNil(t, handler)
|
|
}
|
|
|
|
func TestNewOpenclawHandlerNoConfig(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
_, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestOpenclawHandlerGetSourceName(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, "openclaw", handler.GetSourceName())
|
|
}
|
|
|
|
func TestOpenclawHandlerGetSourceHome(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
home, err := handler.GetSourceHome()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tmpDir, home)
|
|
}
|
|
|
|
func TestOpenclawHandlerGetSourceWorkspace(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
workspace, err := handler.GetSourceWorkspace()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, filepath.Join(tmpDir, "workspace"), workspace)
|
|
}
|
|
|
|
func TestOpenclawHandlerGetSourceConfigFile(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
configFile, err := handler.GetSourceConfigFile()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, configPath, configFile)
|
|
}
|
|
|
|
func TestOpenclawHandlerGetSourceConfigFileWithConfigJson(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "config.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
configFile, err := handler.GetSourceConfigFile()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, configPath, configFile)
|
|
}
|
|
|
|
func TestOpenclawHandlerGetMigrateableFiles(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
files := handler.GetMigrateableFiles()
|
|
assert.NotEmpty(t, files)
|
|
assert.Contains(t, files, "AGENTS.md")
|
|
assert.Contains(t, files, "SOUL.md")
|
|
assert.Contains(t, files, "USER.md")
|
|
}
|
|
|
|
func TestOpenclawHandlerGetMigrateableDirs(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
handler, err := NewOpenclawHandler(Options{
|
|
SourceHome: tmpDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
dirs := handler.GetMigrateableDirs()
|
|
assert.NotEmpty(t, dirs)
|
|
assert.Contains(t, dirs, "memory")
|
|
assert.Contains(t, dirs, "skills")
|
|
}
|
|
|
|
func TestResolveSourceHome(t *testing.T) {
|
|
result, err := resolveSourceHome("/custom/path")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "/custom/path", result)
|
|
}
|
|
|
|
func TestResolveSourceHomeWithEnvVar(t *testing.T) {
|
|
t.Setenv("OPENCLAW_HOME", "/env/path")
|
|
|
|
result, err := resolveSourceHome("")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "/env/path", result)
|
|
}
|
|
|
|
func TestResolveSourceHomeWithTilde(t *testing.T) {
|
|
home, err := os.UserHomeDir()
|
|
require.NoError(t, err)
|
|
|
|
result, err := resolveSourceHome("~/openclaw")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, filepath.Join(home, "openclaw"), result)
|
|
}
|
|
|
|
func TestFindSourceConfig(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "openclaw.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
result, err := findSourceConfig(tmpDir)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, configPath, result)
|
|
}
|
|
|
|
func TestFindSourceConfigWithConfigJson(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
configPath := filepath.Join(tmpDir, "config.json")
|
|
err := os.WriteFile(configPath, []byte("{}"), 0o644)
|
|
require.NoError(t, err)
|
|
|
|
result, err := findSourceConfig(tmpDir)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, configPath, result)
|
|
}
|
|
|
|
func TestFindSourceConfigNotFound(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
_, err := findSourceConfig(tmpDir)
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "no config file found")
|
|
}
|
|
|
|
func TestMapProvider(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{"anthropic", "anthropic"},
|
|
{"claude", "anthropic"},
|
|
{"openai", "openai"},
|
|
{"gpt", "openai"},
|
|
{"groq", "groq"},
|
|
{"ollama", "ollama"},
|
|
{"openrouter", "openrouter"},
|
|
{"deepseek", "deepseek"},
|
|
{"together", "together"},
|
|
{"mistral", "mistral"},
|
|
{"fireworks", "fireworks"},
|
|
{"google", "google"},
|
|
{"gemini", "google"},
|
|
{"xai", "xai"},
|
|
{"grok", "xai"},
|
|
{"cerebras", "cerebras"},
|
|
{"sambanova", "sambanova"},
|
|
{"unknown", "unknown"},
|
|
{"", ""},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := mapProvider(tt.input)
|
|
assert.Equal(t, tt.expected, result, "mapProvider(%q)", tt.input)
|
|
}
|
|
}
|
|
|
|
func TestRewriteWorkspacePath(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{"~/.openclaw/workspace", "~/.picoclaw/workspace"},
|
|
{"/home/user/.openclaw/workspace", "/home/user/.picoclaw/workspace"},
|
|
{"/path/without/openclaw/change", "/path/without/openclaw/change"},
|
|
{"", ""},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := rewriteWorkspacePath(tt.input)
|
|
assert.Equal(t, tt.expected, result, "rewriteWorkspacePath(%q)", tt.input)
|
|
}
|
|
}
|