Honor deployment root for file operations

This commit is contained in:
npc0-hue
2026-08-26 16:09:27 +08:00
parent 8e02a316fa
commit bb051f6da1
2 changed files with 183 additions and 14 deletions
+30
View File
@@ -646,6 +646,36 @@ func TestScopedFileExecutorListsDirectories(t *testing.T) {
}
}
func TestDeploymentFileExecutorUsesServerRoot(t *testing.T) {
workspaceRoot := t.TempDir()
serverRoot := t.TempDir()
if err := os.WriteFile(filepath.Join(workspaceRoot, ".platform"), []byte("workspace"), 0o600); err != nil {
t.Fatalf("write workspace marker: %v", err)
}
if err := os.WriteFile(filepath.Join(serverRoot, "SCUMServer.exe"), []byte("server"), 0o600); err != nil {
t.Fatalf("write server marker: %v", err)
}
executor, err := NewFileExecutor(workspaceRoot)
if err != nil {
t.Fatalf("new file executor: %v", err)
}
assignment := executionAssignment(protocol.RunCapabilityFilesList)
assignment.TargetKey = "server-root"
assignment.ExecutionInput.Inputs = map[string]string{"path": "", "recursive": "false", "query": ""}
assignment.ExecutionInput.Deployment = &protocol.ServerDeploymentExecution{SchemaVersion: "1", Mode: "guided-install", ServerRoot: serverRoot, Revision: 1}
result := executor.Execute(context.Background(), assignment)
if result.State != lifecycleResultStateSucceeded || result.ExecutionResult.Kind != "file.list" {
t.Fatalf("expected deployment root listing, got %+v", result)
}
var envelope fileListEnvelope
if err := json.Unmarshal([]byte(result.ExecutionResult.Content), &envelope); err != nil {
t.Fatalf("decode deployment listing: %v", err)
}
if len(envelope.Entries) != 1 || envelope.Entries[0].Name != "SCUMServer.exe" {
t.Fatalf("expected only deployment root entry, got %+v", envelope.Entries)
}
}
func TestScopedFileExecutorCancellationLeavesTargetUnchanged(t *testing.T) {
root := t.TempDir()
executor, err := NewFileExecutor(root)