]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm/main_sync_test.go
tests: run commands without side effects in end-to-end tests
[safcm/safcm.git] / cmd / safcm / main_sync_test.go
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())