X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm%2Fsync_changes_test.go;h=9326dbbf3e6638120d9cdbcfc5237a5e241265e0;hb=ccde6eed234a8530c8180264937566ca5d092bdc;hp=c6dd0f8eba432803ed4812c09c4891e07bd2e653;hpb=b5e2d93b0bc818bea7f694ac7128c1920d508f43;p=safcm%2Fsafcm.git diff --git a/cmd/safcm/sync_changes_test.go b/cmd/safcm/sync_changes_test.go index c6dd0f8..9326dbb 100644 --- a/cmd/safcm/sync_changes_test.go +++ b/cmd/safcm/sync_changes_test.go @@ -24,6 +24,96 @@ import ( "ruderich.org/simon/safcm/testutil" ) +func TestFormatChanges(t *testing.T) { + tests := []struct { + name string + dryRun 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, + safcm.MsgSyncResp{}, + "", + }, + + { + "changes", + 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", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + s := &Sync{ + config: &config.Config{ + DryRun: tc.dryRun, + }, + isTTY: tc.isTTY, + } + + res := s.formatChanges(tc.resp) + testutil.AssertEqual(t, "res", res, tc.exp) + }) + } +} + func TestFormatFileChanges(t *testing.T) { tests := []struct { name string