X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm%2Fmain_sync_test.go;h=642e9839e79017dc8fe403405e4f71505aca5919;hb=HEAD;hp=0b54aeffc54d14dd72de424d9769b921df2548d0;hpb=12cc10aa34b77855b1dccec4dbc9183cf03fa9af;p=safcm%2Fsafcm.git
diff --git a/cmd/safcm/main_sync_test.go b/cmd/safcm/main_sync_test.go
index 0b54aef..642e983 100644
--- a/cmd/safcm/main_sync_test.go
+++ b/cmd/safcm/main_sync_test.go
@@ -1,17 +1,5 @@
-// Copyright (C) 2021 Simon Ruderich
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see .
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (C) 2021-2024 Simon Ruderich
package main_test
@@ -26,7 +14,7 @@ import (
"testing"
"time"
- ft "ruderich.org/simon/safcm/cmd/safcm-remote/sync/filetest"
+ ft "ruderich.org/simon/safcm/remote/sync/filetest"
"ruderich.org/simon/safcm/testutil"
)
@@ -35,7 +23,7 @@ func TestSyncSshEndToEnd(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- defer os.Chdir(cwd)
+ defer os.Chdir(cwd) //nolint:errcheck
var suffix string
// Needs different options in sshd_config
@@ -56,7 +44,7 @@ func TestSyncSshEndToEnd(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- defer sshCmd.Process.Kill()
+ defer sshCmd.Process.Kill() //nolint:errcheck
// Wait until SSH server is ready (up to 30 seconds)
for i := 0; i < 30; i++ {
@@ -177,9 +165,9 @@ func TestSyncSshEndToEnd(t *testing.T) {
`[info] [no-changes.example.org] remote helper upload in progress
[verbose] [no-changes.example.org] host groups: all no-changes.example.org
[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
-[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
-[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
-[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
[info] [no-changes.example.org] no changes
`,
nil,
@@ -202,9 +190,9 @@ func TestSyncSshEndToEnd(t *testing.T) {
`[info] [no-changes.example.org] remote helper upload in progress
[verbose] [no-changes.example.org] host groups: all no-changes.example.org
[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
-[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
-[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
-[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
[info] [no-changes.example.org] no changes
`,
nil,
@@ -217,7 +205,7 @@ func TestSyncSshEndToEnd(t *testing.T) {
[]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)
+will execute 2 command(s): (dry-run)
"echo this is a command"
"true"
`,
@@ -232,7 +220,7 @@ executed 2 command(s): (dry-run)
[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)
+will execute 2 command(s): (dry-run)
"echo this is a command"
"true"
`,
@@ -260,10 +248,10 @@ executed 2 command(s):
`[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:
+[verbose] [no-effect-commands.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org)
+[debug2] [no-effect-commands.example.org] 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)
+[verbose] [no-effect-commands.example.org] 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":
@@ -280,7 +268,7 @@ executed 2 command(s):
[]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)
+will execute 2 command(s): (dry-run)
"echo this is a command"
"echo failing; false"
`,
@@ -295,7 +283,7 @@ executed 2 command(s): (dry-run)
[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)
+will execute 2 command(s): (dry-run)
"echo this is a command"
"echo failing; false"
`,
@@ -313,7 +301,7 @@ executed 2 command(s):
> 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
+[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
@@ -325,11 +313,11 @@ executed 2 command(s):
`[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:
+[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands-failing.example.org)
+[debug2] [no-effect-commands-failing.example.org] 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:
+[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org)
+[debug2] [no-effect-commands-failing.example.org] commands: command output:
failing
[info] [no-effect-commands-failing.example.org]
executed 2 command(s):
@@ -337,7 +325,7 @@ executed 2 command(s):
> 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
+[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
@@ -348,6 +336,20 @@ executed 2 command(s):
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 {