X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm-remote%2Fsync%2Ffiles_test.go;h=88a5b51f85cd3fa4a4d36f1422ecbe37424565de;hb=fd97e8019e2ab166d9475ed59782c86247d8430b;hp=91a85befb83c24d9ea494e991e6699318c0289f8;hpb=583a2695a3ddc9c98e0a03d9f1bad8df30afe887;p=safcm%2Fsafcm.git diff --git a/cmd/safcm-remote/sync/files_test.go b/cmd/safcm-remote/sync/files_test.go index 91a85be..88a5b51 100644 --- a/cmd/safcm-remote/sync/files_test.go +++ b/cmd/safcm-remote/sync/files_test.go @@ -53,27 +53,31 @@ func TestSyncFiles(t *testing.T) { } user, uid, group, gid := ft.CurrentUserAndGroup() + skipUnlessCiRun := len(os.Getenv("SAFCM_CI_RUN")) == 0 + tmpTestFilePath := "/tmp/safcm-sync-files-test-file" tests := []struct { - name string - req safcm.MsgSyncReq - prepare func() - triggers []string - expFiles []ft.File - expResp safcm.MsgSyncResp - expDbg []string - expErr error + name string + skip bool + req safcm.MsgSyncReq + prepare func() + expTriggers []string + expFiles []ft.File + expResp safcm.MsgSyncResp + expDbg []string + expErr error }{ // NOTE: Also update MsgSyncResp in safcm test cases when - // changing anything here! + // changing the MsgSyncResp struct! // See TestSyncFile() for most file related tests. This // function only tests the overall results and triggers. { "basic: create", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -141,22 +145,23 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): will create`, - `3: sync remote: files: "dir" (group): creating`, - `4: sync remote: files: "dir" (group): creating directory`, - `4: sync remote: files: "dir" (group): chmodding drwxr-xr-x`, - fmt.Sprintf(`4: sync remote: files: "dir" (group): chowning %d/%d`, uid, gid), - `4: sync remote: files: "dir/file" (group): will create`, - `3: sync remote: files: "dir/file" (group): creating`, - `4: sync remote: files: "dir/file" (group): creating temporary file "dir/.file*"`, - `4: sync remote: files: "dir/file" (group): renaming "dir/.fileRND"`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): will create`, + `3: files: "dir" (group): creating`, + `4: files: "dir" (group): creating directory`, + `4: files: "dir" (group): chmodding drwxr-xr-x`, + fmt.Sprintf(`4: files: "dir" (group): chowning %d/%d`, uid, gid), + `4: files: "dir/file" (group): will create`, + `3: files: "dir/file" (group): creating`, + `4: files: "dir/file" (group): creating temporary file "dir/.file*"`, + `4: files: "dir/file" (group): renaming "dir/.fileRND"`, }, nil, }, { "basic: no change", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -202,15 +207,16 @@ func TestSyncFiles(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): unchanged`, - `4: sync remote: files: "dir/file" (group): unchanged`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): unchanged`, + `4: files: "dir/file" (group): unchanged`, }, nil, }, { "invalid File: user", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -234,6 +240,7 @@ func TestSyncFiles(t *testing.T) { }, { "invalid File: group", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -265,6 +272,7 @@ func TestSyncFiles(t *testing.T) { // Use numeric IDs as not all systems use root/root; // for example BSDs use root/wheel. "absolute paths: no change", + skipUnlessCiRun, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ "/": { @@ -288,13 +296,6 @@ func TestSyncFiles(t *testing.T) { Gid: 0, OrigGroup: "group", }, - "/var/tmp": { - Path: "/var/tmp", - Mode: fs.ModeDir | 0777 | fs.ModeSticky, - Uid: 0, - Gid: 0, - OrigGroup: "group", - }, }, }, nil, @@ -304,16 +305,16 @@ func TestSyncFiles(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "/" (group): unchanged`, - `4: sync remote: files: "/etc" (group): unchanged`, - `4: sync remote: files: "/tmp" (group): unchanged`, - `4: sync remote: files: "/var/tmp" (group): unchanged`, + `4: files: "/" (group): unchanged`, + `4: files: "/etc" (group): unchanged`, + `4: files: "/tmp" (group): unchanged`, }, nil, }, { "triggers: no change", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -368,15 +369,16 @@ func TestSyncFiles(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): unchanged`, - `4: sync remote: files: "dir/file" (group): unchanged`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): unchanged`, + `4: files: "dir/file" (group): unchanged`, }, nil, }, { "triggers: change root", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -413,10 +415,7 @@ func TestSyncFiles(t *testing.T) { }, }, func() { - err = os.Chmod(".", 0750) - if err != nil { - panic(err) - } + ft.CreateDirectoryExists(".", 0750) ft.CreateDirectory("dir", 0755) ft.CreateFile("dir/file", "content\n", 0644) }, @@ -457,18 +456,19 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "." (group): permission differs drwxr-x--- -> drwx------`, - `3: sync remote: files: "." (group): updating`, - `4: sync remote: files: "." (group): chmodding drwx------`, - `3: sync remote: files: ".": queuing trigger on "."`, - `4: sync remote: files: "dir" (group): unchanged`, - `4: sync remote: files: "dir/file" (group): unchanged`, + `4: files: "." (group): permission differs drwxr-x--- -> drwx------`, + `3: files: "." (group): updating`, + `4: files: "." (group): chmodding drwx------`, + `3: files: ".": queuing trigger on "."`, + `4: files: "dir" (group): unchanged`, + `4: files: "dir/file" (group): unchanged`, }, nil, }, { "triggers: change middle", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -546,19 +546,20 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): permission differs drwxr-x--- -> drwxr-xr-x`, - `3: sync remote: files: "dir" (group): updating`, - `4: sync remote: files: "dir" (group): chmodding drwxr-xr-x`, - `3: sync remote: files: "dir": queuing trigger on "."`, - `3: sync remote: files: "dir": queuing trigger on "dir"`, - `4: sync remote: files: "dir/file" (group): unchanged`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): permission differs drwxr-x--- -> drwxr-xr-x`, + `3: files: "dir" (group): updating`, + `4: files: "dir" (group): chmodding drwxr-xr-x`, + `3: files: "dir": queuing trigger on "."`, + `3: files: "dir": queuing trigger on "dir"`, + `4: files: "dir/file" (group): unchanged`, }, nil, }, { "triggers: change leaf", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -630,21 +631,22 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): unchanged`, - `4: sync remote: files: "dir/file" (group): will create`, - `3: sync remote: files: "dir/file" (group): creating`, - `4: sync remote: files: "dir/file" (group): creating temporary file "dir/.file*"`, - `4: sync remote: files: "dir/file" (group): renaming "dir/.fileRND"`, - `3: sync remote: files: "dir/file": queuing trigger on "."`, - `3: sync remote: files: "dir/file": queuing trigger on "dir"`, - `3: sync remote: files: "dir/file": queuing trigger on "dir/file"`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): unchanged`, + `4: files: "dir/file" (group): will create`, + `3: files: "dir/file" (group): creating`, + `4: files: "dir/file" (group): creating temporary file "dir/.file*"`, + `4: files: "dir/file" (group): renaming "dir/.fileRND"`, + `3: files: "dir/file": queuing trigger on "."`, + `3: files: "dir/file": queuing trigger on "dir"`, + `3: files: "dir/file": queuing trigger on "dir/file"`, }, nil, }, { "triggers: multiple changes", + false, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ ".": { @@ -725,27 +727,28 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "." (group): unchanged`, - `4: sync remote: files: "dir" (group): will create`, - `3: sync remote: files: "dir" (group): creating`, - `4: sync remote: files: "dir" (group): creating directory`, - `4: sync remote: files: "dir" (group): chmodding drwxr-xr-x`, - fmt.Sprintf(`4: sync remote: files: "dir" (group): chowning %d/%d`, uid, gid), - `3: sync remote: files: "dir": queuing trigger on "."`, - `3: sync remote: files: "dir": queuing trigger on "dir"`, - `4: sync remote: files: "dir/file" (group): will create`, - `3: sync remote: files: "dir/file" (group): creating`, - `4: sync remote: files: "dir/file" (group): creating temporary file "dir/.file*"`, - `4: sync remote: files: "dir/file" (group): renaming "dir/.fileRND"`, - `4: sync remote: files: "dir/file": skipping trigger on ".", already active`, - `4: sync remote: files: "dir/file": skipping trigger on "dir", already active`, - `3: sync remote: files: "dir/file": queuing trigger on "dir/file"`, + `4: files: "." (group): unchanged`, + `4: files: "dir" (group): will create`, + `3: files: "dir" (group): creating`, + `4: files: "dir" (group): creating directory`, + `4: files: "dir" (group): chmodding drwxr-xr-x`, + fmt.Sprintf(`4: files: "dir" (group): chowning %d/%d`, uid, gid), + `3: files: "dir": queuing trigger on "."`, + `3: files: "dir": queuing trigger on "dir"`, + `4: files: "dir/file" (group): will create`, + `3: files: "dir/file" (group): creating`, + `4: files: "dir/file" (group): creating temporary file "dir/.file*"`, + `4: files: "dir/file" (group): renaming "dir/.fileRND"`, + `4: files: "dir/file": skipping trigger on ".", already active`, + `4: files: "dir/file": skipping trigger on "dir", already active`, + `3: files: "dir/file": queuing trigger on "dir/file"`, }, nil, }, { "triggers: absolute paths", + skipUnlessCiRun, safcm.MsgSyncReq{ Files: map[string]*safcm.File{ "/": { @@ -780,16 +783,7 @@ func TestSyncFiles(t *testing.T) { }, }, }, - func() { - // This is slightly racy but the file name - // should be rare enough that this isn't an - // issue - _, err := os.Stat(tmpTestFilePath) - if err == nil { - t.Fatalf("%q exists, aborting", - tmpTestFilePath) - } - }, + nil, []string{ "/", "/tmp", @@ -815,15 +809,15 @@ func TestSyncFiles(t *testing.T) { }, }, []string{ - `4: sync remote: files: "/" (group): unchanged`, - `4: sync remote: files: "/tmp" (group): unchanged`, - `4: sync remote: files: "/tmp/safcm-sync-files-test-file" (group): will create`, - `3: sync remote: files: "/tmp/safcm-sync-files-test-file" (group): creating`, - `4: sync remote: files: "/tmp/safcm-sync-files-test-file" (group): creating temporary file "/tmp/.safcm-sync-files-test-file*"`, - `4: sync remote: files: "/tmp/safcm-sync-files-test-file" (group): renaming "/tmp/.safcm-sync-files-test-fileRND"`, - `3: sync remote: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/"`, - `3: sync remote: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/tmp"`, - `3: sync remote: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/tmp/safcm-sync-files-test-file"`, + `4: files: "/" (group): unchanged`, + `4: files: "/tmp" (group): unchanged`, + `4: files: "/tmp/safcm-sync-files-test-file" (group): will create`, + `3: files: "/tmp/safcm-sync-files-test-file" (group): creating`, + `4: files: "/tmp/safcm-sync-files-test-file" (group): creating temporary file "/tmp/.safcm-sync-files-test-file*"`, + `4: files: "/tmp/safcm-sync-files-test-file" (group): renaming "/tmp/.safcm-sync-files-test-fileRND"`, + `3: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/"`, + `3: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/tmp"`, + `3: files: "/tmp/safcm-sync-files-test-file": queuing trigger on "/tmp/safcm-sync-files-test-file"`, }, nil, }, @@ -831,9 +825,13 @@ func TestSyncFiles(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { + if tc.skip { + t.SkipNow() + } + // Create separate test directory for each test case path := filepath.Join(cwd, "testdata", "files-"+tc.name) - err = os.Mkdir(path, 0700) + err := os.Mkdir(path, 0700) if err != nil { t.Fatal(err) } @@ -849,9 +847,12 @@ func TestSyncFiles(t *testing.T) { s, res := prepareSync(tc.req, &testRunner{ t: t, }) - s.setDefaults() + err = s.setDefaults() + if err != nil { + t.Fatal(err) + } - err := s.syncFiles() + err = s.syncFiles() testutil.AssertErrorEqual(t, "err", err, tc.expErr) dbg := res.Wait() // Remove random file names from result @@ -868,7 +869,7 @@ func TestSyncFiles(t *testing.T) { testutil.AssertEqual(t, "resp", s.resp, tc.expResp) testutil.AssertEqual(t, "triggers", - s.triggers, tc.triggers) + s.triggers, tc.expTriggers) }) } @@ -916,7 +917,7 @@ func TestSyncFile(t *testing.T) { }{ // NOTE: Also update MsgSyncResp in safcm test cases when - // changing anything here! + // changing the MsgSyncResp struct! // TODO: Add tests for chown and run them only as root @@ -959,10 +960,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "file" (group): will create`, - `3: sync remote: files: "file" (group): creating`, - `4: sync remote: files: "file" (group): creating temporary file ".file*"`, - `4: sync remote: files: "file" (group): renaming "./.fileRND"`, + `4: files: "file" (group): will create`, + `3: files: "file" (group): creating`, + `4: files: "file" (group): creating temporary file ".file*"`, + `4: files: "file" (group): renaming "./.fileRND"`, }, nil, }, @@ -998,9 +999,9 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "file" (group): will create`, - `3: sync remote: files: "file" (group): creating`, - `4: sync remote: files: "file" (group): dry-run, skipping changes`, + `4: files: "file" (group): will create`, + `3: files: "file" (group): creating`, + `4: files: "file" (group): dry-run, skipping changes`, }, nil, }, @@ -1030,7 +1031,7 @@ func TestSyncFile(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "file" (group): unchanged`, + `4: files: "file" (group): unchanged`, }, nil, }, @@ -1062,7 +1063,7 @@ func TestSyncFile(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "file" (group): unchanged`, + `4: files: "file" (group): unchanged`, }, nil, }, @@ -1112,10 +1113,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "file" (group): permission differs -rwxr-xr-x -> urwxr-xr-x`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): creating temporary file ".file*"`, - `4: sync remote: files: "file" (group): renaming "./.fileRND"`, + `4: files: "file" (group): permission differs -rwxr-xr-x -> urwxr-xr-x`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): creating temporary file ".file*"`, + `4: files: "file" (group): renaming "./.fileRND"`, }, nil, }, @@ -1170,10 +1171,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "file" (group): content differs`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): creating temporary file ".file*"`, - `4: sync remote: files: "file" (group): renaming "./.fileRND"`, + `4: files: "file" (group): content differs`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): creating temporary file ".file*"`, + `4: files: "file" (group): renaming "./.fileRND"`, }, nil, }, @@ -1217,10 +1218,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "link" (group): will create`, - `3: sync remote: files: "link" (group): creating`, - `4: sync remote: files: "link" (group): creating temporary symlink ".linkRND"`, - `4: sync remote: files: "link" (group): renaming ".linkRND"`, + `4: files: "link" (group): will create`, + `3: files: "link" (group): creating`, + `4: files: "link" (group): creating temporary symlink ".linkRND"`, + `4: files: "link" (group): renaming ".linkRND"`, }, nil, }, @@ -1268,11 +1269,11 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "link" (group): will create`, - `3: sync remote: files: "link" (group): creating`, - `4: sync remote: files: "link" (group): creating temporary symlink ".linkRND"`, - `4: sync remote: files: "link" (group): creating temporary symlink ".linkRND"`, - `4: sync remote: files: "link" (group): renaming ".linkRND"`, + `4: files: "link" (group): will create`, + `3: files: "link" (group): creating`, + `4: files: "link" (group): creating temporary symlink ".linkRND"`, + `4: files: "link" (group): creating temporary symlink ".linkRND"`, + `4: files: "link" (group): renaming ".linkRND"`, }, nil, }, @@ -1308,9 +1309,9 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "link" (group): will create`, - `3: sync remote: files: "link" (group): creating`, - `4: sync remote: files: "link" (group): dry-run, skipping changes`, + `4: files: "link" (group): will create`, + `3: files: "link" (group): creating`, + `4: files: "link" (group): dry-run, skipping changes`, }, nil, }, @@ -1340,7 +1341,7 @@ func TestSyncFile(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "link" (group): unchanged`, + `4: files: "link" (group): unchanged`, }, nil, }, @@ -1394,10 +1395,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "link" (group): content differs`, - `3: sync remote: files: "link" (group): updating`, - `4: sync remote: files: "link" (group): creating temporary symlink ".linkRND"`, - `4: sync remote: files: "link" (group): renaming ".linkRND"`, + `4: files: "link" (group): content differs`, + `3: files: "link" (group): updating`, + `4: files: "link" (group): creating temporary symlink ".linkRND"`, + `4: files: "link" (group): renaming ".linkRND"`, }, nil, }, @@ -1439,11 +1440,11 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "dir" (group): will create`, - `3: sync remote: files: "dir" (group): creating`, - `4: sync remote: files: "dir" (group): creating directory`, - `4: sync remote: files: "dir" (group): chmodding drwx---r-x`, - fmt.Sprintf(`4: sync remote: files: "dir" (group): chowning %d/%d`, uid, gid), + `4: files: "dir" (group): will create`, + `3: files: "dir" (group): creating`, + `4: files: "dir" (group): creating directory`, + `4: files: "dir" (group): chmodding drwx---r-x`, + fmt.Sprintf(`4: files: "dir" (group): chowning %d/%d`, uid, gid), }, nil, }, @@ -1478,9 +1479,9 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "dir" (group): will create`, - `3: sync remote: files: "dir" (group): creating`, - `4: sync remote: files: "dir" (group): dry-run, skipping changes`, + `4: files: "dir" (group): will create`, + `3: files: "dir" (group): creating`, + `4: files: "dir" (group): dry-run, skipping changes`, }, nil, }, @@ -1508,7 +1509,7 @@ func TestSyncFile(t *testing.T) { }, safcm.MsgSyncResp{}, []string{ - `4: sync remote: files: "dir" (group): unchanged`, + `4: files: "dir" (group): unchanged`, }, nil, }, @@ -1556,9 +1557,9 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "dir" (group): permission differs dtr-x------ -> dgrwxr-xr-x`, - `3: sync remote: files: "dir" (group): updating`, - `4: sync remote: files: "dir" (group): chmodding dgrwxr-xr-x`, + `4: files: "dir" (group): permission differs dtr-x------ -> dgrwxr-xr-x`, + `3: files: "dir" (group): updating`, + `4: files: "dir" (group): chmodding dgrwxr-xr-x`, }, nil, }, @@ -1612,12 +1613,12 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs ---------- -> d---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): removing (due to type change)`, - `4: sync remote: files: "path" (group): creating directory`, - `4: sync remote: files: "path" (group): chmodding drwxr-x--x`, - fmt.Sprintf(`4: sync remote: files: "path" (group): chowning %d/%d`, uid, gid), + `4: files: "path" (group): type differs ---------- -> d---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): removing (due to type change)`, + `4: files: "path" (group): creating directory`, + `4: files: "path" (group): chmodding drwxr-x--x`, + fmt.Sprintf(`4: files: "path" (group): chowning %d/%d`, uid, gid), }, nil, }, @@ -1672,10 +1673,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs ---------- -> L---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): creating temporary symlink ".pathRND"`, - `4: sync remote: files: "path" (group): renaming ".pathRND"`, + `4: files: "path" (group): type differs ---------- -> L---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): creating temporary symlink ".pathRND"`, + `4: files: "path" (group): renaming ".pathRND"`, }, nil, }, @@ -1730,10 +1731,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs L--------- -> ----------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): creating temporary file ".path*"`, - `4: sync remote: files: "path" (group): renaming "./.pathRND"`, + `4: files: "path" (group): type differs L--------- -> ----------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): creating temporary file ".path*"`, + `4: files: "path" (group): renaming "./.pathRND"`, }, nil, }, @@ -1785,12 +1786,12 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs L--------- -> d---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): removing (due to type change)`, - `4: sync remote: files: "path" (group): creating directory`, - `4: sync remote: files: "path" (group): chmodding drwxr-x--x`, - fmt.Sprintf(`4: sync remote: files: "path" (group): chowning %d/%d`, uid, gid), + `4: files: "path" (group): type differs L--------- -> d---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): removing (due to type change)`, + `4: files: "path" (group): creating directory`, + `4: files: "path" (group): chmodding drwxr-x--x`, + fmt.Sprintf(`4: files: "path" (group): chowning %d/%d`, uid, gid), }, nil, }, @@ -1840,11 +1841,11 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs d--------- -> ----------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): removing (due to type change)`, - `4: sync remote: files: "path" (group): creating temporary file ".path*"`, - `4: sync remote: files: "path" (group): renaming "./.pathRND"`, + `4: files: "path" (group): type differs d--------- -> ----------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): removing (due to type change)`, + `4: files: "path" (group): creating temporary file ".path*"`, + `4: files: "path" (group): renaming "./.pathRND"`, }, nil, }, @@ -1894,11 +1895,11 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs d--------- -> L---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): removing (due to type change)`, - `4: sync remote: files: "path" (group): creating temporary symlink ".pathRND"`, - `4: sync remote: files: "path" (group): renaming ".pathRND"`, + `4: files: "path" (group): type differs d--------- -> L---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): removing (due to type change)`, + `4: files: "path" (group): creating temporary symlink ".pathRND"`, + `4: files: "path" (group): renaming ".pathRND"`, }, nil, }, @@ -1948,10 +1949,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs p--------- -> ----------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): creating temporary file ".path*"`, - `4: sync remote: files: "path" (group): renaming "./.pathRND"`, + `4: files: "path" (group): type differs p--------- -> ----------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): creating temporary file ".path*"`, + `4: files: "path" (group): renaming "./.pathRND"`, }, nil, }, @@ -2001,10 +2002,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs p--------- -> L---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): creating temporary symlink ".pathRND"`, - `4: sync remote: files: "path" (group): renaming ".pathRND"`, + `4: files: "path" (group): type differs p--------- -> L---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): creating temporary symlink ".pathRND"`, + `4: files: "path" (group): renaming ".pathRND"`, }, nil, }, @@ -2052,12 +2053,12 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs p--------- -> d---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): removing (due to type change)`, - `4: sync remote: files: "path" (group): creating directory`, - `4: sync remote: files: "path" (group): chmodding drwxr-x--x`, - fmt.Sprintf(`4: sync remote: files: "path" (group): chowning %d/%d`, uid, gid), + `4: files: "path" (group): type differs p--------- -> d---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): removing (due to type change)`, + `4: files: "path" (group): creating directory`, + `4: files: "path" (group): chmodding drwxr-x--x`, + fmt.Sprintf(`4: files: "path" (group): chowning %d/%d`, uid, gid), }, nil, }, @@ -2107,10 +2108,10 @@ func TestSyncFile(t *testing.T) { }, }, []string{ - `4: sync remote: files: "path" (group): type differs ---------- -> L---------`, - `3: sync remote: files: "path" (group): updating`, - `4: sync remote: files: "path" (group): creating temporary symlink ".pathRND"`, - `4: sync remote: files: "path" (group): renaming ".pathRND"`, + `4: files: "path" (group): type differs ---------- -> L---------`, + `3: files: "path" (group): updating`, + `4: files: "path" (group): creating temporary symlink ".pathRND"`, + `4: files: "path" (group): renaming ".pathRND"`, }, nil, }, @@ -2188,9 +2189,9 @@ file }, }, []string{ - `4: sync remote: files: "file" (group): content differs`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): dry-run, skipping changes`, + `4: files: "file" (group): content differs`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): dry-run, skipping changes`, }, nil, }, @@ -2238,14 +2239,14 @@ file Group: group, Gid: gid, }, - DataDiff: "Binary files differ, cannot show diff", + DataDiff: "Binary files differ (3 -> 4 bytes), cannot show diff", }, }, }, []string{ - `4: sync remote: files: "file" (group): content differs`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): dry-run, skipping changes`, + `4: files: "file" (group): content differs`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): dry-run, skipping changes`, }, nil, }, @@ -2294,7 +2295,7 @@ file Gid: gid, }, DataDiff: `@@ -1,2 +1,2 @@ -- +- +content `, @@ -2302,9 +2303,9 @@ file }, }, []string{ - `4: sync remote: files: "file" (group): content differs`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): dry-run, skipping changes`, + `4: files: "file" (group): content differs`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): dry-run, skipping changes`, }, nil, }, @@ -2354,16 +2355,16 @@ file }, DataDiff: `@@ -1,2 +1,2 @@ -content -+ ++ `, }, }, }, []string{ - `4: sync remote: files: "file" (group): content differs`, - `3: sync remote: files: "file" (group): updating`, - `4: sync remote: files: "file" (group): dry-run, skipping changes`, + `4: files: "file" (group): content differs`, + `3: files: "file" (group): updating`, + `4: files: "file" (group): dry-run, skipping changes`, }, nil, }, @@ -2373,7 +2374,7 @@ file t.Run(tc.name, func(t *testing.T) { // Create separate test directory for each test case path := filepath.Join(cwd, "testdata", "file-"+tc.name) - err = os.Mkdir(path, 0700) + err := os.Mkdir(path, 0700) if err != nil { t.Fatal(err) } @@ -2389,13 +2390,16 @@ file s, res := prepareSync(tc.req, &testRunner{ t: t, }) - s.setDefaults() + err = s.setDefaults() + if err != nil { + t.Fatal(err) + } // Deterministic temporary symlink names rand.Seed(0) var changed bool - err := s.syncFile(tc.file, &changed) + err = s.syncFile(tc.file, &changed) testutil.AssertErrorEqual(t, "err", err, tc.expErr) dbg := res.Wait() // Remove random file names from result