更新 .gitignore 文件以忽略数据目录,修改 DockerExecutor 的 RouteConfigDir 为绝对路径,并添加相应的单元测试

This commit is contained in:
ryan
2026-03-09 23:44:56 +08:00
parent d0b37e4326
commit 8da574f9e5
3 changed files with 27 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
data
+5 -1
View File
@@ -149,11 +149,15 @@ func NewExecutor(options ExecutorOptions) Executor {
Runner: runner,
}
}
routeConfigDir := filepath.Dir(options.RouteConfigPath)
if absDir, err := filepath.Abs(routeConfigDir); err == nil {
routeConfigDir = absDir
}
return &DockerExecutor{
DockerBinary: options.DockerBinary,
ContainerName: options.ContainerName,
Image: options.Image,
RouteConfigDir: filepath.Dir(options.RouteConfigPath),
RouteConfigDir: routeConfigDir,
Runner: runner,
}
}
+21
View File
@@ -5,6 +5,7 @@ import (
"errors"
"path/filepath"
"reflect"
"strings"
"testing"
)
@@ -112,3 +113,23 @@ func TestDockerExecutorStartsStoppedContainer(t *testing.T) {
t.Fatalf("expected docker exec on third call, got %#v", runner.calls[2])
}
}
func TestNewExecutorUsesAbsoluteDockerMountPath(t *testing.T) {
executor := NewExecutor(ExecutorOptions{
DockerBinary: "docker",
ContainerName: "atsflare-nginx",
Image: "nginx:stable-alpine",
RouteConfigPath: "./data/etc/nginx/conf.d/atsflare_routes.conf",
})
dockerExecutor, ok := executor.(*DockerExecutor)
if !ok {
t.Fatal("expected docker executor")
}
if !filepath.IsAbs(dockerExecutor.RouteConfigDir) {
t.Fatalf("expected absolute route config dir, got %s", dockerExecutor.RouteConfigDir)
}
if !strings.HasSuffix(dockerExecutor.RouteConfigDir, filepath.Clean("data/etc/nginx/conf.d")) {
t.Fatalf("unexpected route config dir: %s", dockerExecutor.RouteConfigDir)
}
}