mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
Feat/update migrate (#910)
* * update migrate * * rename handlers to sources * * delete dead code * * fix go test error
This commit is contained in:
@@ -0,0 +1,247 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user