`<LOG>[info] [no-changes.example.org] remote helper upload in progress
<LOG>[verbose] [no-changes.example.org] host groups: all <DET> <DET> no-changes.example.org
<LOG>[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
<LOG>[info] [no-changes.example.org] no changes
`,
nil,
`<LOG>[info] [no-changes.example.org] remote helper upload in progress
<LOG>[verbose] [no-changes.example.org] host groups: all <DET> <DET> no-changes.example.org
<LOG>[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
-<LOG>[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
<LOG>[info] [no-changes.example.org] no changes
`,
nil,
`<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:
+<LOG>[verbose] [no-effect-commands.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org)
+<LOG>[debug2] [no-effect-commands.example.org] 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>[verbose] [no-effect-commands.example.org] 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
"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
+<LOG>[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
`<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:
+<LOG>[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands-failing.example.org)
+<LOG>[debug2] [no-effect-commands-failing.example.org] 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:
+<LOG>[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org)
+<LOG>[debug2] [no-effect-commands-failing.example.org] commands: command output:
failing
<LOG>[info] [no-effect-commands-failing.example.org]
executed 2 command(s):
> 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
+<LOG>[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
logRegexp := regexp.MustCompile(`^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} `)
detectedRegexp := regexp.MustCompile(`detected_\S+`)
+ t.Run("error before connection is established", func(t *testing.T) {
+ // Fake $PATH so safcm cannot find the `ssh` binary.
+ path := os.Getenv("PATH")
+ os.Setenv("PATH", "")
+ defer os.Setenv("PATH", path)
+
+ cmd := exec.Command("../../../../../safcm",
+ "sync", "-n", "no-settings.example.org")
+ _, err := cmd.CombinedOutput()
+ if err == nil {
+ t.Errorf("err = nil")
+ }
+ })
+
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
if tc.remove {