]> ruderich.org/simon Gitweb - safcm/safcm.git/commitdiff
tests: run commands without side effects in end-to-end tests
authorSimon Ruderich <simon@ruderich.org>
Sat, 8 May 2021 08:20:57 +0000 (10:20 +0200)
committerSimon Ruderich <simon@ruderich.org>
Sat, 8 May 2021 08:20:57 +0000 (10:20 +0200)
cmd/safcm/main_sync_test.go
cmd/safcm/testdata/ssh/project/hosts.yaml
cmd/safcm/testdata/ssh/project/no-effect-commands-failing.example.org/commands.yaml [new file with mode: 0644]
cmd/safcm/testdata/ssh/project/no-effect-commands.example.org/commands.yaml [new file with mode: 0644]
cmd/safcm/testdata/ssh/ssh/ssh_config

index 1f53e4b338902d8f243053752a852d4b1929cc5a..0b54aeffc54d14dd72de424d9769b921df2548d0 100644 (file)
@@ -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"},
+                       `<LOG>[info]    [no-effect-commands.example.org] remote helper upload in progress
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands.example.org] remote helper upload in progress
+<LOG>[verbose] [no-effect-commands.example.org] host groups: all <DET> <DET> no-effect-commands.example.org
+<LOG>[verbose] [no-effect-commands.example.org] host group priorities (descending): no-effect-commands.example.org
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands.example.org] remote helper upload in progress
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands.example.org] remote helper upload in progress
+<LOG>[verbose] [no-effect-commands.example.org] host groups: all <DET> <DET> no-effect-commands.example.org
+<LOG>[verbose] [no-effect-commands.example.org] host group priorities (descending): no-effect-commands.example.org
+<LOG>[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org)
+<LOG>[debug2]  [no-effect-commands.example.org] sync remote: commands: command output:
+this is a command
+<LOG>[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "true" (no-effect-commands.example.org)
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands-failing.example.org] remote helper upload in progress
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands-failing.example.org] remote helper upload in progress
+<LOG>[verbose] [no-effect-commands-failing.example.org] host groups: all <DET> <DET> no-effect-commands-failing.example.org
+<LOG>[verbose] [no-effect-commands-failing.example.org] host group priorities (descending): no-effect-commands-failing.example.org
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands-failing.example.org] remote helper upload in progress
+<LOG>[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
+<LOG>[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"},
+                       `<LOG>[info]    [no-effect-commands-failing.example.org] remote helper upload in progress
+<LOG>[verbose] [no-effect-commands-failing.example.org] host groups: all <DET> <DET> no-effect-commands-failing.example.org
+<LOG>[verbose] [no-effect-commands-failing.example.org] host group priorities (descending): no-effect-commands-failing.example.org
+<LOG>[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)
+<LOG>[debug2]  [no-effect-commands-failing.example.org] sync remote: commands: command output:
+this is a command
+<LOG>[verbose] [no-effect-commands-failing.example.org] sync remote: commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org)
+<LOG>[debug2]  [no-effect-commands-failing.example.org] sync remote: commands: command output:
+failing
+<LOG>[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
+<LOG>[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())
index 633da2ca2c0641b6cc9cc6f6c2d409bcb20dc5ae..34a858f22edfc6ae9e3ddf2623c5bd0d647113fa 100644 (file)
@@ -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 (file)
index 0000000..3b5e34a
--- /dev/null
@@ -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 (file)
index 0000000..31b73ab
--- /dev/null
@@ -0,0 +1,2 @@
+- echo this is a command
+- true # no output
index e9fe50472fa3848b81111cffca40c0b3bae059f8..a3394e37c789498724c12c723c6201d85763ff5d 100644 (file)
@@ -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