X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm-remote%2Fsync%2Fcommands_test.go;h=0bd0949b020b922976744ea9f85e3beacf381cee;hb=35c082709bb4fae99e61debf65e146507f265fcc;hp=eb0cc0ba050df313cdd29d59155792fdbb079f13;hpb=992eaae7fec45c2d58fff89d1bc0ae920a899296;p=safcm%2Fsafcm.git diff --git a/cmd/safcm-remote/sync/commands_test.go b/cmd/safcm-remote/sync/commands_test.go index eb0cc0b..0bd0949 100644 --- a/cmd/safcm-remote/sync/commands_test.go +++ b/cmd/safcm-remote/sync/commands_test.go @@ -20,12 +20,10 @@ import ( "io/fs" "os" "os/exec" - "reflect" "testing" - "github.com/google/go-cmp/cmp" - "ruderich.org/simon/safcm" + "ruderich.org/simon/safcm/testutil" ) func TestSyncCommands(t *testing.T) { @@ -56,7 +54,7 @@ func TestSyncCommands(t *testing.T) { }{ // NOTE: Also update MsgSyncResp in safcm test cases when - // changing anything here! + // changing the MsgSyncResp struct! { "successful command", @@ -67,8 +65,11 @@ func TestSyncCommands(t *testing.T) { "group2", "host.example.org", }, - Commands: []string{ - "echo; env | grep SAFCM_", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo; env | grep SAFCM_", + }, }, }, nil, @@ -84,8 +85,8 @@ func TestSyncCommands(t *testing.T) { Env: env, }}, []string{ - `3: sync remote: commands: running "/bin/sh" "-c" "echo; env | grep SAFCM_"`, - "5: sync remote: commands: command output:\nfake stdout/stderr", + `3: commands: running "/bin/sh" "-c" "echo; env | grep SAFCM_" (group)`, + "5: commands: command output:\nfake stdout/stderr", }, safcm.MsgSyncResp{ CommandChanges: []safcm.CommandChange{ @@ -107,8 +108,11 @@ func TestSyncCommands(t *testing.T) { "group2", "host.example.org", }, - Commands: []string{ - "echo; env | grep SAFCM_", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo; env | grep SAFCM_", + }, }, }, nil, @@ -136,8 +140,11 @@ func TestSyncCommands(t *testing.T) { "group2", "host.example.org", }, - Commands: []string{ - "echo hi; false", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo hi; false", + }, }, }, nil, @@ -153,8 +160,8 @@ func TestSyncCommands(t *testing.T) { Env: env, }}, []string{ - `3: sync remote: commands: running "/bin/sh" "-c" "echo hi; false"`, - "5: sync remote: commands: command output:\nfake stdout/stderr", + `3: commands: running "/bin/sh" "-c" "echo hi; false" (group)`, + "5: commands: command output:\nfake stdout/stderr", }, safcm.MsgSyncResp{ CommandChanges: []safcm.CommandChange{ @@ -177,8 +184,11 @@ func TestSyncCommands(t *testing.T) { "group2", "host.example.org", }, - Commands: []string{ - "echo hi; false", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo hi; false", + }, }, }, nil, @@ -206,11 +216,20 @@ func TestSyncCommands(t *testing.T) { "group2", "host.example.org", }, - Commands: []string{ - "echo first", - "echo second", - "false", - "echo third", + Commands: []*safcm.Command{ + { + OrigGroup: "group1", + Cmd: "echo first", + }, { + OrigGroup: "group2", + Cmd: "echo second", + }, { + OrigGroup: "group3", + Cmd: "false", + }, { + OrigGroup: "group4", + Cmd: "echo third", + }, }, }, nil, @@ -252,11 +271,11 @@ func TestSyncCommands(t *testing.T) { Env: env, }}, []string{ - `3: sync remote: commands: running "/bin/sh" "-c" "echo first"`, - "5: sync remote: commands: command output:\nfake stdout/stderr first", - `3: sync remote: commands: running "/bin/sh" "-c" "echo second"`, - "5: sync remote: commands: command output:\nfake stdout/stderr second", - `3: sync remote: commands: running "/bin/sh" "-c" "false"`, + `3: commands: running "/bin/sh" "-c" "echo first" (group1)`, + "5: commands: command output:\nfake stdout/stderr first", + `3: commands: running "/bin/sh" "-c" "echo second" (group2)`, + "5: commands: command output:\nfake stdout/stderr second", + `3: commands: running "/bin/sh" "-c" "false" (group3)`, }, safcm.MsgSyncResp{ CommandChanges: []safcm.CommandChange{ @@ -320,8 +339,11 @@ func TestSyncCommands(t *testing.T) { }, }, }, - Commands: []string{ - "echo; env | grep SAFCM_", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo; env | grep SAFCM_", + }, }, }, []string{ @@ -366,12 +388,12 @@ func TestSyncCommands(t *testing.T) { Env: env, }}, []string{ - `3: sync remote: commands: running "/bin/sh" "-c" "echo trigger ."`, - "5: sync remote: commands: command output:\nfake stdout/stderr .", - `3: sync remote: commands: running "/bin/sh" "-c" "echo trigger dir"`, - "5: sync remote: commands: command output:\nfake stdout/stderr dir", - `3: sync remote: commands: running "/bin/sh" "-c" "echo; env | grep SAFCM_"`, - "5: sync remote: commands: command output:\nfake stdout/stderr", + `3: commands: running "/bin/sh" "-c" "echo trigger ." (".")`, + "5: commands: command output:\nfake stdout/stderr .", + `3: commands: running "/bin/sh" "-c" "echo trigger dir" ("dir")`, + "5: commands: command output:\nfake stdout/stderr dir", + `3: commands: running "/bin/sh" "-c" "echo; env | grep SAFCM_" (group)`, + "5: commands: command output:\nfake stdout/stderr", }, safcm.MsgSyncResp{ CommandChanges: []safcm.CommandChange{ @@ -436,8 +458,11 @@ func TestSyncCommands(t *testing.T) { }, }, }, - Commands: []string{ - "echo; env | grep SAFCM_", + Commands: []*safcm.Command{ + { + OrigGroup: "group", + Cmd: "echo; env | grep SAFCM_", + }, }, }, []string{ @@ -472,10 +497,10 @@ func TestSyncCommands(t *testing.T) { Env: env, }}, []string{ - `3: sync remote: commands: running "/bin/sh" "-c" "echo trigger ."`, - "5: sync remote: commands: command output:\nfake stdout/stderr .", - `3: sync remote: commands: running "/bin/sh" "-c" "false"`, - "5: sync remote: commands: command output:\nfake stdout/stderr dir", + `3: commands: running "/bin/sh" "-c" "echo trigger ." (".")`, + "5: commands: command output:\nfake stdout/stderr .", + `3: commands: running "/bin/sh" "-c" "false" ("dir")`, + "5: commands: command output:\nfake stdout/stderr dir", }, safcm.MsgSyncResp{ CommandChanges: []safcm.CommandChange{ @@ -498,31 +523,21 @@ func TestSyncCommands(t *testing.T) { for _, tc := range tests { 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, - }) - s.triggers = tc.triggers + s, res := prepareSync(tc.req, &testRunner{ + t: t, + expCmds: tc.expCmds, + resStdout: tc.stdout, + resStderr: tc.stderr, + resError: tc.errors, + }) + s.triggers = tc.triggers - err := s.syncCommands() - // Ugly but the simplest way to compare errors (including nil) - if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", tc.expErr) { - t.Errorf("err = %#v, want %#v", - err, tc.expErr) - } - dbg := res.Wait() + err := s.syncCommands() + testutil.AssertErrorEqual(t, "err", err, tc.expErr) + dbg := res.Wait() - if !reflect.DeepEqual(tc.expResp, s.resp) { - t.Errorf("resp: %s", - cmp.Diff(tc.expResp, s.resp)) - } - if !reflect.DeepEqual(tc.expDbg, dbg) { - t.Errorf("dbg: %s", - cmp.Diff(tc.expDbg, dbg)) - } + testutil.AssertEqual(t, "resp", s.resp, tc.expResp) + testutil.AssertEqual(t, "dbg", dbg, tc.expDbg) }) } }