]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm-remote/sync/files_test.go
tests: add and use testutil package to reduce duplication
[safcm/safcm.git] / cmd / safcm-remote / sync / files_test.go
index 32130e928abbad99c77ed139fbc48373c28c1f32..e7864ba8b8080e489da5964663c1496308599bd1 100644 (file)
@@ -21,14 +21,12 @@ import (
        "math/rand"
        "os"
        "path/filepath"
-       "reflect"
        "regexp"
        "testing"
 
-       "github.com/google/go-cmp/cmp"
-
        "ruderich.org/simon/safcm"
        ft "ruderich.org/simon/safcm/cmd/safcm-remote/sync/filetest"
+       "ruderich.org/simon/safcm/testutil"
 )
 
 var randFilesRegexp = regexp.MustCompile(`\d+"$`)
@@ -842,59 +840,44 @@ func TestSyncFiles(t *testing.T) {
 
        for _, tc := range tests {
                t.Run(tc.name, func(t *testing.T) {
-               // Create separate test directory for each test case
-               path := filepath.Join(cwd, "testdata", "files-"+tc.name)
-               err = os.Mkdir(path, 0700)
-               if err != nil {
-                       t.Fatal(err)
-               }
-               err = os.Chdir(path)
-               if err != nil {
-                       t.Fatal(err)
-               }
-
-               if tc.prepare != nil {
-                       tc.prepare()
-               }
-
-               s, res := prepareSync(tc.req, &testRunner{
-                       t:    t,
-               })
-               s.setDefaults()
-
-               err := s.syncFiles()
-               // Ugly but the simplest way to compare errors (including nil)
-               if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", tc.expErr) {
-                       t.Errorf("err = %#v, want %#v",
-                               err, tc.expErr)
-               }
-               dbg := res.Wait()
-               // Remove random file names from result
-               for i, x := range dbg {
-                       dbg[i] = randFilesRegexp.ReplaceAllString(x, `RND"`)
-               }
-               if !reflect.DeepEqual(tc.expDbg, dbg) {
-                       t.Errorf("dbg: %s",
-                               cmp.Diff(tc.expDbg, dbg))
-               }
-
-               files, err := ft.WalkDir(path)
-               if err != nil {
-                       t.Fatal(err)
-               }
-               if !reflect.DeepEqual(tc.expFiles, files) {
-                       t.Errorf("files: %s",
-                               cmp.Diff(tc.expFiles, files))
-               }
-
-               if !reflect.DeepEqual(tc.expResp, s.resp) {
-                       t.Errorf("resp: %s",
-                               cmp.Diff(tc.expResp, s.resp))
-               }
-               if !reflect.DeepEqual(tc.triggers, s.triggers) {
-                       t.Errorf("triggers: %s",
-                               cmp.Diff(tc.triggers, s.triggers))
-               }
+                       // Create separate test directory for each test case
+                       path := filepath.Join(cwd, "testdata", "files-"+tc.name)
+                       err = os.Mkdir(path, 0700)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+                       err = os.Chdir(path)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+
+                       if tc.prepare != nil {
+                               tc.prepare()
+                       }
+
+                       s, res := prepareSync(tc.req, &testRunner{
+                               t: t,
+                       })
+                       s.setDefaults()
+
+                       err := s.syncFiles()
+                       testutil.AssertErrorEqual(t, "err", err, tc.expErr)
+                       dbg := res.Wait()
+                       // Remove random file names from result
+                       for i, x := range dbg {
+                               dbg[i] = randFilesRegexp.ReplaceAllString(x, `RND"`)
+                       }
+                       testutil.AssertEqual(t, "dbg", dbg, tc.expDbg)
+
+                       files, err := ft.WalkDir(path)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+                       testutil.AssertEqual(t, "files", files, tc.expFiles)
+
+                       testutil.AssertEqual(t, "resp", s.resp, tc.expResp)
+                       testutil.AssertEqual(t, "triggers",
+                               s.triggers, tc.triggers)
                })
        }
 
@@ -2397,63 +2380,47 @@ file
 
        for _, tc := range tests {
                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)
-               if err != nil {
-                       t.Fatal(err)
-               }
-               err = os.Chdir(path)
-               if err != nil {
-                       t.Fatal(err)
-               }
-
-               if tc.prepare != nil {
-                       tc.prepare()
-               }
-
-               s, res := prepareSync(tc.req, &testRunner{
-                       t:    t,
-               })
-               s.setDefaults()
-
-               // Deterministic temporary symlink names
-               rand.Seed(0)
-
-               var changed bool
-               err := s.syncFile(tc.file, &changed)
-               // Ugly but the simplest way to compare errors (including nil)
-               if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", tc.expErr) {
-                       t.Errorf("err = %#v, want %#v",
-                               err, tc.expErr)
-               }
-               dbg := res.Wait()
-               // Remove random file names from result
-               for i, x := range dbg {
-                       dbg[i] = randFilesRegexp.ReplaceAllString(x, `RND"`)
-               }
-               if !reflect.DeepEqual(tc.expDbg, dbg) {
-                       t.Errorf("dbg: %s",
-                               cmp.Diff(tc.expDbg, dbg))
-               }
-
-               files, err := ft.WalkDir(path)
-               if err != nil {
-                       t.Fatal(err)
-               }
-               if !reflect.DeepEqual(tc.expFiles, files) {
-                       t.Errorf("files: %s",
-                               cmp.Diff(tc.expFiles, files))
-               }
-
-               if tc.expChanged != changed {
-                       t.Errorf("changed = %#v, want %#v",
-                               changed, tc.expChanged)
-               }
-               if !reflect.DeepEqual(tc.expResp, s.resp) {
-                       t.Errorf("resp: %s",
-                               cmp.Diff(tc.expResp, s.resp))
-               }
+                       // Create separate test directory for each test case
+                       path := filepath.Join(cwd, "testdata", "file-"+tc.name)
+                       err = os.Mkdir(path, 0700)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+                       err = os.Chdir(path)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+
+                       if tc.prepare != nil {
+                               tc.prepare()
+                       }
+
+                       s, res := prepareSync(tc.req, &testRunner{
+                               t: t,
+                       })
+                       s.setDefaults()
+
+                       // Deterministic temporary symlink names
+                       rand.Seed(0)
+
+                       var changed bool
+                       err := s.syncFile(tc.file, &changed)
+                       testutil.AssertErrorEqual(t, "err", err, tc.expErr)
+                       dbg := res.Wait()
+                       // Remove random file names from result
+                       for i, x := range dbg {
+                               dbg[i] = randFilesRegexp.ReplaceAllString(x, `RND"`)
+                       }
+                       testutil.AssertEqual(t, "dbg", dbg, tc.expDbg)
+
+                       files, err := ft.WalkDir(path)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+                       testutil.AssertEqual(t, "files", files, tc.expFiles)
+
+                       testutil.AssertEqual(t, "changed", changed, tc.expChanged)
+                       testutil.AssertEqual(t, "resp", s.resp, tc.expResp)
                })
        }