"io/fs"
"testing"
- "github.com/google/go-cmp/cmp"
-
"ruderich.org/simon/safcm"
"ruderich.org/simon/safcm/cmd/safcm/config"
+ "ruderich.org/simon/safcm/testutil"
)
func TestFormatFileChanges(t *testing.T) {
}
for _, tc := range tests {
- s := &Sync{
- config: &config.Config{
- DryRun: tc.dryRun,
- },
- }
+ t.Run(tc.name, func(t *testing.T) {
+ s := &Sync{
+ config: &config.Config{
+ DryRun: tc.dryRun,
+ },
+ }
- res := s.formatFileChanges(tc.changes)
- if tc.exp != res {
- t.Errorf("%s: res: %s", tc.name,
- cmp.Diff(tc.exp, res))
- }
+ res := s.formatFileChanges(tc.changes)
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ })
}
}
}
for _, tc := range tests {
- s := &Sync{
- config: &config.Config{
- DryRun: tc.dryRun,
- },
- }
+ t.Run(tc.name, func(t *testing.T) {
+ s := &Sync{
+ config: &config.Config{
+ DryRun: tc.dryRun,
+ },
+ }
- res := s.formatPackageChanges(tc.changes)
- if tc.exp != res {
- t.Errorf("%s: res: %s", tc.name,
- cmp.Diff(tc.exp, res))
- }
+ res := s.formatPackageChanges(tc.changes)
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ })
}
}
}
for _, tc := range tests {
- s := &Sync{
- config: &config.Config{
- DryRun: tc.dryRun,
- },
- }
+ t.Run(tc.name, func(t *testing.T) {
+ s := &Sync{
+ config: &config.Config{
+ DryRun: tc.dryRun,
+ },
+ }
- res := s.formatServiceChanges(tc.changes)
- if tc.exp != res {
- t.Errorf("%s: res: %s", tc.name,
- cmp.Diff(tc.exp, res))
- }
+ res := s.formatServiceChanges(tc.changes)
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ })
}
}
tests := []struct {
name string
dryRun bool
+ quiet bool
changes []safcm.CommandChange
exp string
}{
{
"regular",
false,
+ false,
[]safcm.CommandChange{
{
Command: "fake command",
{
"dry-run",
true,
+ false,
[]safcm.CommandChange{
{
Command: "fake command",
`,
},
+ {
+ "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",
}
for _, tc := range tests {
- s := &Sync{
- config: &config.Config{
- DryRun: tc.dryRun,
- },
- }
+ 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,
- cmp.Diff(tc.exp, res))
- }
+ res := s.formatCommandChanges(tc.changes)
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ })
}
}