"ruderich.org/simon/safcm/testutil"
)
+func TestFormatChanges(t *testing.T) {
+ tests := []struct {
+ name string
+ dryRun bool
+ quiet bool
+ isTTY bool
+ resp safcm.MsgSyncResp
+ exp string
+ }{
+
+ // Just a few basic tests and border cases; see the other
+ // tests for more detailed tests of each format function
+
+ {
+ "no changes",
+ false,
+ false,
+ false,
+ safcm.MsgSyncResp{},
+ "no changes",
+ },
+
+ {
+ "changes",
+ false,
+ false,
+ false,
+ safcm.MsgSyncResp{
+ FileChanges: []safcm.FileChange{
+ {
+ Path: "created",
+ Created: true,
+ New: safcm.FileChangeInfo{
+ Mode: 0644,
+ User: "user",
+ Uid: 1000,
+ Group: "group",
+ Gid: 2000,
+ },
+ },
+ },
+ PackageChanges: []safcm.PackageChange{
+ {
+ Name: "package-one",
+ },
+ {
+ Name: "package-two",
+ },
+ },
+ ServiceChanges: []safcm.ServiceChange{
+ {
+ Name: "service-one",
+ Started: true,
+ },
+ {
+ Name: "service-two",
+ Enabled: true,
+ },
+ {
+ Name: "service-three",
+ Started: true,
+ Enabled: true,
+ },
+ },
+ CommandChanges: []safcm.CommandChange{
+ {
+ Command: "fake command",
+ Output: "fake output",
+ },
+ {
+ Command: "fake command with no output",
+ },
+ },
+ },
+ "\nchanged 1 file(s):\n\"created\": created, file, user(1000) group(2000), 0644\n\ninstalled 2 package(s):\n\"package-one\"\n\"package-two\"\n\nmodified 3 service(s):\n\"service-one\": started\n\"service-two\": enabled\n\"service-three\": started, enabled\n\nexecuted 2 command(s):\n\"fake command\":\n > fake output\n > \\ No newline at end of file\n\"fake command with no output\"\n",
+ },
+
+ {
+ "command changes only, dry-run",
+ true,
+ false,
+ false,
+ safcm.MsgSyncResp{
+ CommandChanges: []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",
+ },
+ },
+ },
+ "\nwill execute 5 command(s): (dry-run)\n\"fake command\"\n\"fake command with no output\"\n\"fake command with newline\"\n\"fake command with more output\"\n\"fake failed command\"\n",
+ },
+ {
+ "command changes only, quiet & dry-run",
+ true,
+ true,
+ false,
+ safcm.MsgSyncResp{
+ CommandChanges: []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",
+ },
+ },
+ },
+ "will execute 5 command(s) (dry-run)\n",
+ },
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ s := &Sync{
+ config: &config.Config{
+ DryRun: tc.dryRun,
+ Quiet: tc.quiet,
+ },
+ isTTY: tc.isTTY,
+ }
+
+ res := s.formatChanges(tc.resp)
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ })
+ }
+}
+
func TestFormatFileChanges(t *testing.T) {
tests := []struct {
name string
},
},
},
- `changed 1 file(s): (dry-run)
+ `will change 1 file(s): (dry-run)
"file": created, file, user(1000) group(2000), 0644
`,
},
},
},
},
- "changed 1 file(s): (dry-run)\n\x1B[36m\"file\"\x1B[0m: \x1B[32mcreated\x1B[0m, file, user(1000) group(2000), 0644\n",
+ "will change 1 file(s): (dry-run)\n\x1B[36m\"file\"\x1B[0m: \x1B[32mcreated\x1B[0m, file, user(1000) group(2000), 0644\n",
},
{
Name: "package-two",
},
},
- `installed 2 package(s): (dry-run)
+ `will install 2 package(s): (dry-run)
"package-one"
"package-two"
`,
Name: "package-two",
},
},
- "installed 2 package(s): (dry-run)\n\x1b[36m\"package-one\"\x1b[0m\n\x1b[36m\"package-two\"\x1b[0m\n",
+ "will install 2 package(s): (dry-run)\n\x1b[36m\"package-one\"\x1b[0m\n\x1b[36m\"package-two\"\x1b[0m\n",
},
{
Enabled: true,
},
},
- `modified 3 service(s): (dry-run)
+ `will modify 3 service(s): (dry-run)
"service-one": started
"service-two": enabled
"service-three": started, enabled
Enabled: true,
},
},
- "modified 3 service(s): (dry-run)\n\x1b[36m\"service-one\"\x1b[0m: started\n\x1b[36m\"service-two\"\x1b[0m: enabled\n\x1b[36m\"service-three\"\x1b[0m: started, enabled\n",
+ "will modify 3 service(s): (dry-run)\n\x1b[36m\"service-one\"\x1b[0m: started\n\x1b[36m\"service-two\"\x1b[0m: enabled\n\x1b[36m\"service-three\"\x1b[0m: started, enabled\n",
},
{
[]safcm.CommandChange{
{
Command: "fake command",
- Output: "fake output",
},
},
- `executed 1 command(s): (dry-run)
-"fake command":
- > fake output
- > \ No newline at end of file
+ `will execute 1 command(s): (dry-run)
+"fake command"
`,
},
[]safcm.CommandChange{
{
Command: "fake command",
- Output: "fake output",
},
},
- "executed 1 command(s): (dry-run)\n\x1b[36m\"fake command\"\x1b[0m:\n > fake output\n > \\ No newline at end of file\n",
+ "will execute 1 command(s): (dry-run)\n\x1b[36m\"fake command\"\x1b[0m\n",
},
{
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"
+ `will execute 5 command(s) (dry-run)
`,
},