]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm-remote/sync/packages_debian_test.go
Move embedded remote helpers to cmd/safcm/
[safcm/safcm.git] / cmd / safcm-remote / sync / packages_debian_test.go
index f67dda9484bd5e4a5821138a7e1e4dc0014fb11a..97b8c6182d3f6a9727c05a680bb034ddabb04fff 100644 (file)
@@ -20,12 +20,10 @@ import (
        "fmt"
        "os"
        "os/exec"
-       "reflect"
        "testing"
 
-       "github.com/google/go-cmp/cmp"
-
        "ruderich.org/simon/safcm"
+       "ruderich.org/simon/safcm/testutil"
 )
 
 func TestSyncPackagesDebian(t *testing.T) {
@@ -42,7 +40,7 @@ func TestSyncPackagesDebian(t *testing.T) {
        }{
 
                // NOTE: Also update MsgSyncResp in safcm test cases when
-               // changing anything here!
+               // changing the MsgSyncResp struct!
 
                {
                        "packages already installed",
@@ -75,9 +73,9 @@ install ok installed  package-two
                                Stderr: &bytes.Buffer{},
                        }},
                        []string{
-                               "4: sync remote: packages: detected debian",
-                               `4: sync remote: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
-                               `5: sync remote: packages: command stdout:
+                               "4: packages: checking package-one package-two (debian detected)",
+                               `4: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
+                               `5: packages: command stdout:
 install ok installed   golang
 install ok installed   golang-1.16
 install ok installed   golang-1.16-doc
@@ -86,7 +84,6 @@ install ok installed  golang-1.16-src
 hold ok installed      package-one
 install ok installed   package-two
 `,
-                               "4: sync remote: packages: checking package-one package-two",
                        },
                        safcm.MsgSyncResp{},
                        nil,
@@ -140,9 +137,9 @@ install ok installed        package-two
                                ),
                        }},
                        []string{
-                               "4: sync remote: packages: detected debian",
-                               `4: sync remote: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
-                               `5: sync remote: packages: command stdout:
+                               "4: packages: checking package-one package-two package-three (debian detected)",
+                               `4: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
+                               `5: packages: command stdout:
 install ok installed   golang
 install ok installed   golang-1.16
 install ok installed   golang-1.16-doc
@@ -150,10 +147,9 @@ install ok installed       golang-1.16-go
 install ok installed   golang-1.16-src
 install ok installed   package-two
 `,
-                               "4: sync remote: packages: checking package-one package-two package-three",
-                               "3: sync remote: packages: installing package-one package-three",
-                               `4: sync remote: packages: running "/usr/bin/apt-get" "install" "--assume-yes" "--no-upgrade" "--no-install-recommends" "-o" "Dpkg::Options::=--force-confdef" "-o" "Dpkg::Options::=--force-confold" "package-one" "package-three"`,
-                               "5: sync remote: packages: command output:\nfake stdout/stderr",
+                               "3: packages: installing package-one package-three",
+                               `4: packages: running "/usr/bin/apt-get" "install" "--assume-yes" "--no-upgrade" "--no-install-recommends" "-o" "Dpkg::Options::=--force-confdef" "-o" "Dpkg::Options::=--force-confold" "package-one" "package-three"`,
+                               "5: packages: command output:\nfake stdout/stderr",
                        },
                        safcm.MsgSyncResp{
                                PackageChanges: []safcm.PackageChange{
@@ -217,19 +213,18 @@ install ok installed      golang-1.16-src
                                ),
                        }},
                        []string{
-                               "4: sync remote: packages: detected debian",
-                               `4: sync remote: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
-                               `5: sync remote: packages: command stdout:
+                               "4: packages: checking package-one package-two (debian detected)",
+                               `4: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
+                               `5: packages: command stdout:
 install ok installed   golang
 install ok installed   golang-1.16
 install ok installed   golang-1.16-doc
 install ok installed   golang-1.16-go
 install ok installed   golang-1.16-src
 `,
-                               "4: sync remote: packages: checking package-one package-two",
-                               "3: sync remote: packages: installing package-one package-two",
-                               `4: sync remote: packages: running "/usr/bin/apt-get" "install" "--assume-yes" "--no-upgrade" "--no-install-recommends" "-o" "Dpkg::Options::=--force-confdef" "-o" "Dpkg::Options::=--force-confold" "package-one" "package-two"`,
-                               "5: sync remote: packages: command output:\nfake stdout/stderr",
+                               "3: packages: installing package-one package-two",
+                               `4: packages: running "/usr/bin/apt-get" "install" "--assume-yes" "--no-upgrade" "--no-install-recommends" "-o" "Dpkg::Options::=--force-confdef" "-o" "Dpkg::Options::=--force-confold" "package-one" "package-two"`,
+                               "5: packages: command output:\nfake stdout/stderr",
                        },
                        safcm.MsgSyncResp{
                                PackageChanges: []safcm.PackageChange{
@@ -274,16 +269,15 @@ install ok installed      golang-1.16-src
                                Stderr: &bytes.Buffer{},
                        }},
                        []string{
-                               "4: sync remote: packages: detected debian",
-                               `4: sync remote: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
-                               `5: sync remote: packages: command stdout:
+                               "4: packages: checking package-one package-two (debian detected)",
+                               `4: packages: running "/usr/bin/dpkg-query" "--show" "--showformat=${Status}\\t${Package}\\n"`,
+                               `5: packages: command stdout:
 install ok installed   golang
 install ok installed   golang-1.16
 install ok installed   golang-1.16-doc
 install ok installed   golang-1.16-go
 install ok installed   golang-1.16-src
 `,
-                               "4: sync remote: packages: checking package-one package-two",
                        },
                        safcm.MsgSyncResp{
                                PackageChanges: []safcm.PackageChange{
@@ -300,30 +294,21 @@ install ok installed      golang-1.16-src
        }
 
        for _, tc := range tests {
-               s, res := prepareSync(tc.req, &testRunner{
-                       t:         t,
-                       name:      tc.name,
-                       expCmds:   tc.expCmds,
-                       resStdout: tc.stdout,
-                       resStderr: tc.stderr,
-                       resError:  tc.errors,
-               })
+               t.Run(tc.name, func(t *testing.T) {
+                       s, res := prepareSync(tc.req, &testRunner{
+                               t:         t,
+                               expCmds:   tc.expCmds,
+                               resStdout: tc.stdout,
+                               resStderr: tc.stderr,
+                               resError:  tc.errors,
+                       })
 
-               err := s.syncPackagesDebian()
-               // Ugly but the simplest way to compare errors (including nil)
-               if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", tc.expErr) {
-                       t.Errorf("%s: err = %#v, want %#v",
-                               tc.name, err, tc.expErr)
-               }
-               dbg := res.Wait()
+                       err := s.syncPackagesDebian()
+                       testutil.AssertErrorEqual(t, "err", err, tc.expErr)
+                       dbg := res.Wait()
 
-               if !reflect.DeepEqual(tc.expResp, s.resp) {
-                       t.Errorf("%s: resp: %s", tc.name,
-                               cmp.Diff(tc.expResp, s.resp))
-               }
-               if !reflect.DeepEqual(tc.expDbg, dbg) {
-                       t.Errorf("%s: dbg: %s", tc.name,
-                               cmp.Diff(tc.expDbg, dbg))
-               }
+                       testutil.AssertEqual(t, "resp", s.resp, tc.expResp)
+                       testutil.AssertEqual(t, "dbg", dbg, tc.expDbg)
+               })
        }
 }