From 12cc10aa34b77855b1dccec4dbc9183cf03fa9af Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Sat, 8 May 2021 10:20:57 +0200 Subject: [PATCH] tests: run commands without side effects in end-to-end tests --- cmd/safcm/main_sync_test.go | 133 +++++++++++++++++- cmd/safcm/testdata/ssh/project/hosts.yaml | 2 + .../commands.yaml | 2 + .../commands.yaml | 2 + cmd/safcm/testdata/ssh/ssh/ssh_config | 2 +- 5 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 cmd/safcm/testdata/ssh/project/no-effect-commands-failing.example.org/commands.yaml create mode 100644 cmd/safcm/testdata/ssh/project/no-effect-commands.example.org/commands.yaml diff --git a/cmd/safcm/main_sync_test.go b/cmd/safcm/main_sync_test.go index 1f53e4b..0b54aef 100644 --- a/cmd/safcm/main_sync_test.go +++ b/cmd/safcm/main_sync_test.go @@ -184,7 +184,6 @@ func TestSyncSshEndToEnd(t *testing.T) { `, nil, }, - { "no changes", skipUnlessCiRun, @@ -210,6 +209,138 @@ func TestSyncSshEndToEnd(t *testing.T) { `, nil, }, + + { + "no effect commands (dry-run)", + false, + true, + []string{"-n", "no-effect-commands.example.org"}, + `[info] [no-effect-commands.example.org] remote helper upload in progress +[info] [no-effect-commands.example.org] +executed 2 command(s): (dry-run) +"echo this is a command" +"true" +`, + nil, + }, + { + "no effect commands (dry-run)", + false, + true, + []string{"-n", "-log", "debug2", "no-effect-commands.example.org"}, + `[info] [no-effect-commands.example.org] remote helper upload in progress +[verbose] [no-effect-commands.example.org] host groups: all no-effect-commands.example.org +[verbose] [no-effect-commands.example.org] host group priorities (descending): no-effect-commands.example.org +[info] [no-effect-commands.example.org] +executed 2 command(s): (dry-run) +"echo this is a command" +"true" +`, + nil, + }, + { + "no effect commands", + false, + true, + []string{"no-effect-commands.example.org"}, + `[info] [no-effect-commands.example.org] remote helper upload in progress +[info] [no-effect-commands.example.org] +executed 2 command(s): +"echo this is a command": + > this is a command +"true" +`, + nil, + }, + { + "no effect commands (debug2)", + false, + true, + []string{"-log", "debug2", "no-effect-commands.example.org"}, + `[info] [no-effect-commands.example.org] remote helper upload in progress +[verbose] [no-effect-commands.example.org] host groups: all no-effect-commands.example.org +[verbose] [no-effect-commands.example.org] host group priorities (descending): no-effect-commands.example.org +[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org) +[debug2] [no-effect-commands.example.org] sync remote: commands: command output: +this is a command +[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "true" (no-effect-commands.example.org) +[info] [no-effect-commands.example.org] +executed 2 command(s): +"echo this is a command": + > this is a command +"true" +`, + nil, + }, + + { + "no effect commands failing (dry-run)", + false, + true, + []string{"-n", "no-effect-commands-failing.example.org"}, + `[info] [no-effect-commands-failing.example.org] remote helper upload in progress +[info] [no-effect-commands-failing.example.org] +executed 2 command(s): (dry-run) +"echo this is a command" +"echo failing; false" +`, + nil, + }, + { + "no effect commands failing (dry-run)", + false, + true, + []string{"-n", "-log", "debug2", "no-effect-commands-failing.example.org"}, + `[info] [no-effect-commands-failing.example.org] remote helper upload in progress +[verbose] [no-effect-commands-failing.example.org] host groups: all no-effect-commands-failing.example.org +[verbose] [no-effect-commands-failing.example.org] host group priorities (descending): no-effect-commands-failing.example.org +[info] [no-effect-commands-failing.example.org] +executed 2 command(s): (dry-run) +"echo this is a command" +"echo failing; false" +`, + nil, + }, + { + "no effect commands failing", + false, + true, + []string{"no-effect-commands-failing.example.org"}, + `[info] [no-effect-commands-failing.example.org] remote helper upload in progress +[info] [no-effect-commands-failing.example.org] +executed 2 command(s): +"echo this is a command": + > this is a command +"echo failing; false", failed: "exit status 1": + > failing +[error] [no-effect-commands-failing.example.org] sync remote: commands: "echo failing; false" failed: exit status 1 +`, + fmt.Errorf("exit status 1"), + }, + { + "no effect commands failing (debug2)", + false, + true, + []string{"-log", "debug2", "no-effect-commands-failing.example.org"}, + `[info] [no-effect-commands-failing.example.org] remote helper upload in progress +[verbose] [no-effect-commands-failing.example.org] host groups: all no-effect-commands-failing.example.org +[verbose] [no-effect-commands-failing.example.org] host group priorities (descending): no-effect-commands-failing.example.org +[verbose] [no-effect-commands-failing.example.org] sync remote: commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands-failing.example.org) +[debug2] [no-effect-commands-failing.example.org] sync remote: commands: command output: +this is a command +[verbose] [no-effect-commands-failing.example.org] sync remote: commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org) +[debug2] [no-effect-commands-failing.example.org] sync remote: commands: command output: +failing +[info] [no-effect-commands-failing.example.org] +executed 2 command(s): +"echo this is a command": + > this is a command +"echo failing; false", failed: "exit status 1": + > failing +[error] [no-effect-commands-failing.example.org] sync remote: commands: "echo failing; false" failed: exit status 1 +`, + fmt.Errorf("exit status 1"), + }, } remotePath := fmt.Sprintf("/tmp/safcm-remote-%d", os.Getuid()) diff --git a/cmd/safcm/testdata/ssh/project/hosts.yaml b/cmd/safcm/testdata/ssh/project/hosts.yaml index 633da2c..34a858f 100644 --- a/cmd/safcm/testdata/ssh/project/hosts.yaml +++ b/cmd/safcm/testdata/ssh/project/hosts.yaml @@ -1,2 +1,4 @@ - name: no-settings.example.org - name: no-changes.example.org +- name: no-effect-commands.example.org +- name: no-effect-commands-failing.example.org diff --git a/cmd/safcm/testdata/ssh/project/no-effect-commands-failing.example.org/commands.yaml b/cmd/safcm/testdata/ssh/project/no-effect-commands-failing.example.org/commands.yaml new file mode 100644 index 0000000..3b5e34a --- /dev/null +++ b/cmd/safcm/testdata/ssh/project/no-effect-commands-failing.example.org/commands.yaml @@ -0,0 +1,2 @@ +- echo this is a command +- echo failing; false diff --git a/cmd/safcm/testdata/ssh/project/no-effect-commands.example.org/commands.yaml b/cmd/safcm/testdata/ssh/project/no-effect-commands.example.org/commands.yaml new file mode 100644 index 0000000..31b73ab --- /dev/null +++ b/cmd/safcm/testdata/ssh/project/no-effect-commands.example.org/commands.yaml @@ -0,0 +1,2 @@ +- echo this is a command +- true # no output diff --git a/cmd/safcm/testdata/ssh/ssh/ssh_config b/cmd/safcm/testdata/ssh/ssh/ssh_config index e9fe504..a3394e3 100644 --- a/cmd/safcm/testdata/ssh/ssh/ssh_config +++ b/cmd/safcm/testdata/ssh/ssh/ssh_config @@ -2,6 +2,6 @@ IdentityFile ../ssh/id_ed25519 IdentitiesOnly yes UserKnownHostsFile ../ssh/known_hosts -Host no-settings.example.org no-changes.example.org +Host no-settings.example.org no-changes.example.org no-effect-commands.example.org no-effect-commands-failing.example.org Hostname 127.0.0.1 Port 29327 -- 2.43.2