X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=remote%2Fsync%2Ffiles_test.go;h=81efd0801890727629cdffb896e2d7fc49a76195;hb=9506effbe395b9be30ba2b34702c51478e8043e4;hp=48d54fca062812974317958ae28ecbc8c77c0776;hpb=4206e0dbca82f5df7d8e534f78cb737979880916;p=safcm%2Fsafcm.git diff --git a/remote/sync/files_test.go b/remote/sync/files_test.go index 48d54fc..81efd08 100644 --- a/remote/sync/files_test.go +++ b/remote/sync/files_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2021-2022 Simon Ruderich +// Copyright (C) 2021-2023 Simon Ruderich // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -81,26 +81,26 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", }, }, }, @@ -165,26 +165,26 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", }, }, }, @@ -220,12 +220,12 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, User: "user", Uid: 1, Gid: -1, - OrigGroup: "group", }, }, }, @@ -244,12 +244,12 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Group: "group", Gid: 1, - OrigGroup: "group", }, }, }, @@ -276,25 +276,25 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ "/": { + OrigGroup: "group", Path: "/", Mode: fs.ModeDir | 0755, Uid: 0, Gid: 0, - OrigGroup: "group", }, "/etc": { + OrigGroup: "group", Path: "/etc", Mode: fs.ModeDir | 0755, Uid: 0, Gid: 0, - OrigGroup: "group", }, "/tmp": { + OrigGroup: "group", Path: "/tmp", Mode: fs.ModeDir | 0777 | fs.ModeSticky, Uid: 0, Gid: 0, - OrigGroup: "group", }, }, }, @@ -318,32 +318,32 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger .", }, }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir", }, }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir/file", }, @@ -382,32 +382,32 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger .", }, }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir", }, }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir/file", }, @@ -472,32 +472,32 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger .", }, }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir", }, }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir/file", }, @@ -563,32 +563,32 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger .", }, }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir", }, }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir/file", }, @@ -650,32 +650,32 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { + OrigGroup: "group", Path: ".", Mode: fs.ModeDir | 0700, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger .", }, }, "dir": { + OrigGroup: "group", Path: "dir", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir", }, }, "dir/file": { + OrigGroup: "group", Path: "dir/file", Mode: 0644, Uid: -1, Gid: -1, Data: []byte("content\n"), - OrigGroup: "group", TriggerCommands: []string{ "echo trigger dir/file", }, @@ -752,31 +752,31 @@ func TestSyncFiles(t *testing.T) { safcm.MsgSyncReq{ Files: map[string]*safcm.File{ "/": { + OrigGroup: "group", Path: "/", Mode: fs.ModeDir | 0755, Uid: 0, Gid: 0, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger /", }, }, "/tmp": { + OrigGroup: "group", Path: "/tmp", Mode: fs.ModeDir | 0777 | fs.ModeSticky, Uid: 0, Gid: 0, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger /tmp", }, }, tmpTestFilePath: { + OrigGroup: "group", Path: tmpTestFilePath, Mode: 0600, Uid: -1, Gid: -1, - OrigGroup: "group", TriggerCommands: []string{ "echo trigger /tmp/file", }, @@ -1006,6 +1006,44 @@ func TestSyncFile(t *testing.T) { nil, }, + { + "file: create, missing parent (dry-run)", + safcm.MsgSyncReq{ + DryRun: true, + }, + &safcm.File{ + Path: "does-not-exist/file", + Mode: 0644, + Uid: -1, + Gid: -1, + Data: []byte("content\n"), + OrigGroup: "group", + }, + nil, + true, + []ft.File{root}, + safcm.MsgSyncResp{ + FileChanges: []safcm.FileChange{ + { + Path: "does-not-exist/file", + Created: true, + New: safcm.FileChangeInfo{ + Mode: 0644, + User: user, + Uid: uid, + Group: group, + Gid: gid, + }, + }, + }, + }, + []string{ + `4: files: "does-not-exist/file" (group): will create (parent missing)`, + `4: files: "does-not-exist/file" (group): dry-run, skipping changes`, + }, + nil, + }, + { "file: unchanged", safcm.MsgSyncReq{}, @@ -1486,6 +1524,43 @@ func TestSyncFile(t *testing.T) { nil, }, + { + "directory: create, missing parent (dry-run)", + safcm.MsgSyncReq{ + DryRun: true, + }, + &safcm.File{ + Path: "does-not-exist/dir", + Mode: fs.ModeDir | 0755, + Uid: -1, + Gid: -1, + OrigGroup: "group", + }, + nil, + true, + []ft.File{root}, + safcm.MsgSyncResp{ + FileChanges: []safcm.FileChange{ + { + Path: "does-not-exist/dir", + Created: true, + New: safcm.FileChangeInfo{ + Mode: fs.ModeDir | 0755, + User: user, + Uid: uid, + Group: group, + Gid: gid, + }, + }, + }, + }, + []string{ + `4: files: "does-not-exist/dir" (group): will create (parent missing)`, + `4: files: "does-not-exist/dir" (group): dry-run, skipping changes`, + }, + nil, + }, + { "directory: unchanged", safcm.MsgSyncReq{},