]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm/sync_changes_test.go
tests: use subtests
[safcm/safcm.git] / cmd / safcm / sync_changes_test.go
index 76a016834b87d8a09d68547bcea26720511b13a4..767564fd14221a2c37405349b9bc867a777cdaa0 100644 (file)
@@ -283,6 +283,7 @@ func TestFormatFileChanges(t *testing.T) {
        }
 
        for _, tc := range tests {
+               t.Run(tc.name, func(t *testing.T) {
                s := &Sync{
                        config: &config.Config{
                                DryRun: tc.dryRun,
@@ -291,9 +292,10 @@ func TestFormatFileChanges(t *testing.T) {
 
                res := s.formatFileChanges(tc.changes)
                if tc.exp != res {
-                       t.Errorf("%s: res: %s", tc.name,
+                       t.Errorf("res: %s",
                                cmp.Diff(tc.exp, res))
                }
+               })
        }
 }
 
@@ -354,6 +356,7 @@ func TestFormatPackageChanges(t *testing.T) {
        }
 
        for _, tc := range tests {
+               t.Run(tc.name, func(t *testing.T) {
                s := &Sync{
                        config: &config.Config{
                                DryRun: tc.dryRun,
@@ -362,9 +365,10 @@ func TestFormatPackageChanges(t *testing.T) {
 
                res := s.formatPackageChanges(tc.changes)
                if tc.exp != res {
-                       t.Errorf("%s: res: %s", tc.name,
+                       t.Errorf("res: %s",
                                cmp.Diff(tc.exp, res))
                }
+               })
        }
 }
 
@@ -447,6 +451,7 @@ func TestFormatServiceChanges(t *testing.T) {
        }
 
        for _, tc := range tests {
+               t.Run(tc.name, func(t *testing.T) {
                s := &Sync{
                        config: &config.Config{
                                DryRun: tc.dryRun,
@@ -455,9 +460,10 @@ func TestFormatServiceChanges(t *testing.T) {
 
                res := s.formatServiceChanges(tc.changes)
                if tc.exp != res {
-                       t.Errorf("%s: res: %s", tc.name,
+                       t.Errorf("res: %s",
                                cmp.Diff(tc.exp, res))
                }
+               })
        }
 }
 
@@ -465,6 +471,7 @@ func TestFormatCommandChanges(t *testing.T) {
        tests := []struct {
                name    string
                dryRun  bool
+               quiet   bool
                changes []safcm.CommandChange
                exp     string
        }{
@@ -472,6 +479,7 @@ func TestFormatCommandChanges(t *testing.T) {
                {
                        "regular",
                        false,
+                       false,
                        []safcm.CommandChange{
                                {
                                        Command: "fake command",
@@ -514,6 +522,7 @@ func TestFormatCommandChanges(t *testing.T) {
                {
                        "dry-run",
                        true,
+                       false,
                        []safcm.CommandChange{
                                {
                                        Command: "fake command",
@@ -527,9 +536,116 @@ func TestFormatCommandChanges(t *testing.T) {
 `,
                },
 
+               {
+                       "quiet",
+                       false,
+                       true,
+                       []safcm.CommandChange{
+                               {
+                                       Command: "fake command",
+                                       Output:  "fake output",
+                               },
+                               {
+                                       Command: "fake command with no output",
+                               },
+                               {
+                                       Command: "fake command with newline",
+                                       Output:  "fake output\n",
+                               },
+                               {
+                                       Command: "fake command with more output",
+                                       Output:  "fake out\nfake put\nfake\n",
+                               },
+                               {
+                                       Command: "fake failed command",
+                                       Output:  "fake output",
+                                       Error:   "fake error",
+                               },
+                       },
+                       `executed 5 command(s), 1 with no output:
+"fake command":
+   > fake output
+   > \ No newline at end of file
+"fake command with newline":
+   > fake output
+"fake command with more output":
+   > fake out
+   > fake put
+   > fake
+"fake failed command", failed: "fake error":
+   > fake output
+   > \ No newline at end of file
+`,
+               },
+
+               {
+                       "quiet (only quiet commands)",
+                       false,
+                       true,
+                       []safcm.CommandChange{
+                               {
+                                       Command: "fake command with no output",
+                               },
+                               {
+                                       Command: "fake command with no output",
+                               },
+                       },
+                       `executed 2 command(s), 2 with no output
+`,
+               },
+
+               {
+                       "quiet (quiet with errors)",
+                       false,
+                       true,
+                       []safcm.CommandChange{
+                               {
+                                       Command: "fake command with no output but error",
+                                       Error:   "fake error",
+                               },
+                               {
+                                       Command: "fake command with no output",
+                               },
+                       },
+                       `executed 2 command(s), 1 with no output:
+"fake command with no output but error", failed: "fake error"
+`,
+               },
+
+               {
+                       "quiet & dry-run",
+                       true,
+                       true,
+                       []safcm.CommandChange{
+                               {
+                                       Command: "fake command",
+                               },
+                               {
+                                       Command: "fake command with no output",
+                               },
+                               {
+                                       Command: "fake command with newline",
+                               },
+                               {
+                                       Command: "fake command with more output",
+                               },
+                               {
+                                       Command: "fake failed command",
+                               },
+                       },
+                       `executed 5 command(s): (dry-run)
+"fake command"
+"fake command with no output"
+"fake command with newline"
+"fake command with more output"
+"fake failed command"
+`,
+               },
+
                {
                        "escaping",
                        false,
+                       false,
                        []safcm.CommandChange{
                                {
                                        Command: "\x00",
@@ -547,16 +663,19 @@ func TestFormatCommandChanges(t *testing.T) {
        }
 
        for _, tc := range tests {
+               t.Run(tc.name, func(t *testing.T) {
                s := &Sync{
                        config: &config.Config{
                                DryRun: tc.dryRun,
+                               Quiet:  tc.quiet,
                        },
                }
 
                res := s.formatCommandChanges(tc.changes)
                if tc.exp != res {
-                       t.Errorf("%s: res: %s", tc.name,
+                       t.Errorf("res: %s",
                                cmp.Diff(tc.exp, res))
                }
+               })
        }
 }